按键精灵8,获取句柄有些只有窗口类名,没有窗口标题,该怎么办?

2025-01-03 10:22:46
推荐回答(4个)
回答(1):

你是想模拟按键么?
首先要获得窗口的句柄 用下面的函数应该能找到:
FindWindow根据类名\窗口标题寻找窗口
遍历顶层窗口EnumWindows
遍历窗口回调函数EnumWindowProc
遍历父窗口的所有子窗口EnumChildWindows
返回父窗口Point处的子窗口ChildWindowFromPoint
ChildWindowFromPointEx多一个参数UINT来忽略不可见无效透明的子窗口
获取与指定窗口具有莫种关系的窗口GetWindow
获取父窗口的子窗口中Z序最大的子窗口GetTopWindow
获取指定窗口相同层次Z序差1的窗口GetNextWindow
获取桌面窗口句柄GetDesktopWindow

用SendMessage函数不需要窗口标题的,只要句柄
LRESULT SendMessage(
HWND hWnd, // handle of destination window
UINT Msg, // message to send
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);
或者用keybd_event函数,要先用SetForegroundWindow函数把目标窗口设置成前台窗口
VOID keybd_event(
BYTE bVk, // virtual-key code
BYTE bScan, // hardware scan code
DWORD dwFlags, // flags specifying various function options
DWORD dwExtraInfo // additional data associated with keystroke
);

补充:
第一个:我进入某个游戏,用CE查到内存地址后,退出游戏,再查内存地址,两个内存地址是不一样的,有什么办法可以让每次的内存地址都一样?或者说下别的解决方法?
不让每次的内存地址都一样应该是做不到的,游戏每次运行由系统分配内存,哪能让你控制啊。
第二个:我想让鼠标在内存数值到某一个数值时,鼠标移动到某点进行鼠标操作,该怎么写源代码?
定义一个指针变量p,类型根据你需要的数值而定
p=该内存地址
if(*p==该数值)
{
//mousemove
}

回答(2):

首先你的主窗口名称不变.2级子窗口类名变化,但是3级不变.那就找出主窗口下的所有子窗口句柄,然后再挨个的找符合3级窗口类名的句柄

回答(3):

用EnumWindow枚举窗口,枚举回调函数中调用
DWORD GetWindowThreadProcessId( HWND hWnd,
LPDWORD lpdwProcessId
);获取到进程ID,然后获取进程名,看是不是需要的进程。

回答(4):

不能发送有几点原因:
1.游戏屏蔽按键
2.你用的是按键自带的插件
解决方法:
换361插件或其他插件试试
如果无效 说明游戏不支持后台或屏蔽按键