Project1
标题:
关于如何用ruby写C语言结构体问题
[打印本页]
作者:
gamedev0001
时间:
2011-11-4 14:26
提示:
作者被禁止或删除 内容自动屏蔽
作者:
后知后觉
时间:
2011-11-4 15:10
本帖最后由 后知后觉 于 2011-11-4 15:14 编辑
这是某个分辨率脚本.里面貌似有这样的东西
if $myfirst == nil
$myfirst = 'myGod'
宽度=800
高度=600
游戏ini名=".\\Game.ini"
val = "\0"*256
gps = Win32API.new('kernel32', 'GetPrivateProfileString','pppplp', 'l')
gps.call("Game", "Title", "", val, 256, 游戏ini名)
val.delete!("\0")
title = val
fw = Win32API.new('user32', 'FindWindow', 'pp', 'i')
hWnd = fw.call("RGSS Player", title)
swp = Win32API.new('user32', 'SetWindowPos', 'lliiiii', 'i')
pointwds = [0,0,0,0].pack('llll')
pointcet = [0, 0].pack('ll')
wdsrect = Win32API.new('user32.dll', 'GetWindowRect', 'lp', 'l')
client_screen = Win32API.new("user32", "ClientToScreen", 'ip', 'i')
wdsrect.call(hWnd,pointwds)
client_screen.call(hWnd, pointcet)
wds = pointwds.unpack('llll')
cet = pointcet.unpack('ll')
addw = wds[2] - wds[0] - 640
addh = wds[3] - wds[1] - 480
x = wds[0] - (宽度 - 640) / 2
y = wds[1] - (高度 - 480) / 2
swp.call(hWnd, 0, x, y, 宽度 + addw, 高度 + addh, 0x20)
end
作者:
gamedev0001
时间:
2011-11-4 15:26
提示:
作者被禁止或删除 内容自动屏蔽
作者:
亿万星辰
时间:
2011-11-4 15:33
GetVersionEx = Win32API.new('kernel32','GetVersionEx','P','I')
buf = [148,0,0,0,0,"\0"*128].pack("LLLLLa128")
GetVersionEx.call(buf)
arr = buf[0,20].unpack("LLLLL")
p "version : #{arr[1]}.#{arr[2]}"
复制代码
作者:
gamedev0001
时间:
2011-11-4 15:39
提示:
作者被禁止或删除 内容自动屏蔽
作者:
后知后觉
时间:
2011-11-4 16:01
本帖最后由 后知后觉 于 2011-11-4 16:05 编辑
你运行这个看看.
a = [0].pack("l")
p a,a.size
exit
复制代码
星辰前辈的那个20取的就是数组前面5个 pack L 后的字符串长度吧.
另外再说一下你回复了别人的帖子想要别人能及时来看的话.
就点帖子的【回复】按钮.
这样发出的帖子系统会发送系统信息给你【回复】的人的.
作者:
gamedev0001
时间:
2011-11-4 16:15
提示:
作者被禁止或删除 内容自动屏蔽
作者:
盈盈
时间:
2011-11-4 16:20
typedef struct _OSVERSIONINFO {
DWORD dwOSVersionInfoSize;
DWORD dwMajorVersion;
DWORD dwMinorVersion;
DWORD dwBuildNumber;
DWORD dwPlatformId;
TCHAR szCSDVersion[128];
} OSVERSIONINFO;
复制代码
这个结构体是win2000以前的吧,现在应该用
typedef struct {
DWORD dwOSVersionInfoSize;
DWORD dwMajorVersion;
DWORD dwMinorVersion;
DWORD dwBuildNumber;
DWORD dwPlatformId;
TCHAR szCSDVersion[128];
WORD wServicePackMajor;
WORD wServicePackMinor;
WORD wSuiteMask;
BYTE wProductType;
BYTE wReserved;
} OSVERSIONINFOEX, *POSVERSIONINFOEX;
复制代码
这个吧
作者:
gamedev0001
时间:
2011-11-4 17:19
提示:
作者被禁止或删除 内容自动屏蔽
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1