Project1
标题:
如何令VX在後台停止運行及按鍵響應?
[打印本页]
作者:
冷徹心扉
时间:
2013-2-6 00:08
标题:
如何令VX在後台停止運行及按鍵響應?
事情是這樣的
一般來說當視窗焦點不在RM上時,會呈現停止狀態
但當我又切換回RM、再跳到其他視窗上頭時
RM就會開始在後頭響應按鍵的操作,並不會因此停止
一面做PS美工時簡直困擾不堪
也有人有相同的情況嗎,該如何改善呢?
作者:
彭格列第XI代
时间:
2013-2-6 01:07
载图把问题说清楚好吗0 0?
没遇到过+没理解清楚...
作者:
devilg
时间:
2013-2-6 08:53
试一下这个,我好像就没有这个问题,好像有过又不出现了……
#==============================================================================
# [XP/VX] 精确获取窗口句柄 by 紫苏
#==============================================================================
# ■ Kernel
#==============================================================================
module Kernel
#--------------------------------------------------------------------------
# ● 需要的 Windows API 函数
#--------------------------------------------------------------------------
GetWindowThreadProcessId = Win32API.new("user32", "GetWindowThreadProcessId", "LP", "L")
GetWindow = Win32API.new("user32", "GetWindow", "LL", "L")
GetClassName = Win32API.new("user32", "GetClassName", "LPL", "L")
GetCurrentThreadId = Win32API.new("kernel32", "GetCurrentThreadId", "V", "L")
GetForegroundWindow = Win32API.new("user32", "GetForegroundWindow", "V", "L")
#--------------------------------------------------------------------------
# ● 获取窗口句柄
#--------------------------------------------------------------------------
def get_hwnd
# 获取调用线程(RM 的主线程)的进程标识
threadID = GetCurrentThreadId.call
# 获取 Z 次序中最靠前的窗口
hWnd = GetWindow.call(GetForegroundWindow.call, 0)
# 枚举所有窗口
while hWnd != 0
# 如果创建该窗口的线程标识匹配本线程标识
if threadID == GetWindowThreadProcessId.call(hWnd, 0)
# 分配一个 11 个字节的缓冲区
className = " " * 11
# 获取该窗口的类名
GetClassName.call(hWnd, className, 12)
# 如果匹配 RGSS Player 则跳出循环
break if className == "RGSS Player"
end
# 获取下一个窗口
hWnd = GetWindow.call(hWnd, 2)
end
return hWnd
end
end
module Kernel
GetActiveWindow = Win32API.new("user32", "GetActiveWindow", "V", "L")
def shit?
#return if Graphics.frame_count % 10 != 0
# 获取调用线程(RM 的主线程)的进程标识
threadID = GetCurrentThreadId.call
# 获取 Z 次序中最靠前的窗口
hWnd = GetActiveWindow.call#GetForegroundWindow.call
return true if threadID == GetWindowThreadProcessId.call(hWnd, 0)
return false
# 枚举所有窗口
#while hWnd != 0
# 如果创建该窗口的线程标识匹配本线程标识
#if threadID == GetWindowThreadProcessId.call(hWnd, 0)
# 分配一个 11 个字节的缓冲区
className = " " * 11
# 获取该窗口的类名
GetClassName.call(hWnd, className, 12)
# 如果匹配 RGSS Player 则跳出循环
$windowInfo.newText += (className + "")
#break if className == "RGSS Player"
#end
# 获取下一个窗口
#hWnd = GetWindow.call(hWnd, 2)
#end
#return hWnd
end
end
class << Input
alias shitmyoh trigger? unless $@
def Input.trigger?(input)
return false if !shit?#GetWindow.call(GetForegroundWindow.call, 0) != 0 &&
shitmyoh(input)
end
end
复制代码
作者:
Luciffer
时间:
2013-2-7 19:34
我也遇到过。。。应该说VX和VA都有这个问题。。。RM系统自带的问题
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1