用keybd_event模拟键盘打开窗口,获取不到窗口句柄

用keybd_event模拟键盘打开窗口,获取不到窗口句柄,第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

}

解决方法:控制面板---管理工具----服务,将“Terminal Services”改成“自动”,并启动服务,即可解决

转自:>

在 VBScript 中,你可以使用 WScriptShell 对象和 AppActivate 方法来获取顶层窗口的句柄。

以下是获取顶层窗口句柄的 VBScript 代码示例:

Set WshShell = WScriptCreateObject("WScriptShell")

' 激活指定窗口

WshShellAppActivate "窗口标题"

' 获取顶层窗口句柄

hwnd = WshShellAppActivate()

' 输出顶层窗口句柄

WScriptEcho "顶层窗口句柄:" & hwnd

在上面的代码中,我们首先创建了一个 WScriptShell 对象,并使用 AppActivate 方法激活了指定窗口。然后,我们调用 AppActivate 方法,不传递任何参数,以获取顶层窗口的句柄。最后,我们使用 WScriptEcho 方法输出了获取到的句柄。

需要注意的是,使用 AppActivate 方法获取窗口句柄需要确保窗口已经处于活动状态,否则可能会导致获取到错误的句柄。此外,AppActivate 方法只能获取到顶层窗口的句柄,如果需要获取其他窗口的句柄,需要使用其他方法。

代码如下:

PutAttachment "c:\test_game",""

PutAttachment "\Plugin" ,"RegDlldll"

Call PluginRegDllReg("c:\test_game\dmdll")

Set dm = createobject("dmdmsoft")

ver = dmVer()

MessageBox ver

hwnd = dmGetMousePointWindow()

MessageBox hwnd

我正在编写玩QQ三国游戏按键模拟,也遇到这问题,但是我不是代码问题,而是游戏隐藏了句柄,windows任务管理器里只有进程显示,我编写的取进程也有显示,也用过时钟周期事件取鼠标所在窗口句柄,就是取不到游戏句柄。正在头痛如何解决。你的问题也许跟我一样,你试试新建记事本取句柄试试,如果成功,你代码无误,反之审查代码,将我的取鼠标所在窗口代码写出如下:

画时钟一个,列表框一个,按钮一个

程序集变量 取游戏窗口句柄, 整数型

程序集变量 计时, 整数型

子程序 _以鼠标取句柄按钮_被单击 ’注释:点击后就可以移动鼠标到其他窗口停住,等待计时4秒完毕,如果本窗口被其他窗口淹没,等待4秒本窗口会再次显示

计时取句柄时钟时钟周期 = 1000

计时 = 0

子程序 _计时取句柄时钟_周期事件

计时 = 计时 + 1

以鼠标取句柄按钮标题 = 到文本 (计时) + “秒” ’注释:按钮标题变成秒计时

取游戏窗口句柄 = 取鼠标所在窗口句柄 ()

窗口标题 = 取窗口标题 (取游戏窗口句柄)

如果真 (计时 > 4)

如果真 (取游戏窗口句柄 ≠ 0)

列表框加入项目 (到文本 (取游戏窗口句柄) + “” + 窗口标题, )

如果真结束

计时取句柄时钟时钟周期 = 0 ’注释:时钟停止

如果真结束

如果真 (计时取句柄时钟时钟周期 = 0)

_启动窗口总在最前 = 真 ’注释:时间到后本窗口到顶层显示,用于提示完成取句柄。

_启动窗口总在最前 = 假 ’注释:恢复窗口本来属性

以上就是关于用keybd_event模拟键盘打开窗口,获取不到窗口句柄全部的内容,包括:用keybd_event模拟键盘打开窗口,获取不到窗口句柄、C#调试时出现获取窗口句柄无效是什么原因、vbs如何获取顶层窗口句柄等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10211649.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存