class Win32API
GAME_INI_FILE = ".\\Game.ini"
def Win32API.GetPrivateProfileString(section, key)
val = "\0"*256
gps = Win32API.new('kernel32', 'GetPrivateProfileString',%w(p p p p l p), 'l')
gps.call(section, key, "", val, 256, GAME_INI_FILE)
val.delete!("\0")
return val
end
def Win32API.FindWindow(class_name, title)
fw = Win32API.new('user32', 'FindWindow', %(p, p), 'i')
hWnd = fw.call(class_name, title)
return hWnd
end
HWND_TOP = 0
HWND_TOPMOST = -1
SWP_NOMOVE = 2
def Win32API.SetWindowPos(hWnd, w, h)
swp = Win32API.new('user32', 'SetWindowPos', %(l, l, i, i, i, i, i), 'i')
ok = swp.call(hWnd, HWND_TOP, 200, 200, w, h, SWP_NOMOVE)
return ok
end
end
title = Win32API.GetPrivateProfileString("Game", "Title")
hWnd = Win32API.FindWindow("RGSS Player", title)
ok = Win32API.SetWindowPos(hWnd,320,480)
if(ok == 0)
p "変更失敗"
end
GAME_INI_FILE = ".\\Game.ini"
def Win32API.GetPrivateProfileString(section, key)
val = "\0"*256
gps = Win32API.new('kernel32', 'GetPrivateProfileString',%w(p p p p l p), 'l')
gps.call(section, key, "", val, 256, GAME_INI_FILE)
val.delete!("\0")
return val
end
# 获取当前活动窗口句柄
hWnd = Win32API.new("user32","GetActiveWindow","v","i")
# 获取窗口的标题
str = "\0"*256
get_text = Win32API.new("user32","GetWindowText","ipl","l")
get_text.call(hWnd.call,str,str.length)
p str.delete("\0")
# 获取窗口的类名
str = "\0"*256
get_text = Win32API.new("user32","GetClassName","ipl","l")
get_text.call(hWnd.call,str,str.length)
p str.delete("\0")
此类教程也有过 不过好像很多人不太容易理解
首先需要一本Win32API手册 方便查找函数和参数
问一下大师,
Win32API.new('kernel32', 'GetPrivateProfileString',%w(p p p p l p), 'l')
Win32API.new('user32', 'FindWindow', %(p, p), 'i')
第三个参数前的“%w”和“%”分别代表什么?在哪里可以找到相关的解释呢?
%w(p p p p l p)
"pppplp"
["p","p","p","p","l","p"]
以下引用幻獬豸于2008-8-4 15:19:49的发言:
话说,网上的API帮助都是不全的,似乎连系统默认的都不全,更别说WMP的DLL了……
曾经看到过一本全的,98元,够厚,不敢买……
以下引用灯笼菜刀王于2008-7-26 21:50:30的发言:
@_@
此类教程也有过 不过好像很多人不太容易理解
说实话,看了这个教程我也还是不能理解.......看到一半脑就糊了.....
我,我还是新手...
以下引用八云紫于2008-10-1 21:57:26的发言:
挖坟。
# 获取当前活动窗口句柄
hWnd = Win32API.new("user32","GetActiveWindow","v","i")
# 获取窗口的标题
str = "\0"*256
get_text = Win32API.new("user32","GetWindowText","ipl","l")
get_text.call(hWnd.call,str,str.length)
p str.delete("\0")
这个脚本在 VX 里使用会出现乱码的说。
欢迎光临 Project1 (https://rpg.blue/) | Powered by Discuz! X3.1 |