我已经得到窗口上句按键的句柄,怎么用SENDMESSAGE,发送回车,赐教

如题所述

先贴一下sendmessage 的代码(经VB6.0测试通过,直接复制套用就可以)
'先声明调用API
Private Declare Function SendMessage Lib "USER32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
SendMessage hWnd,VbKeyReturn,0,0
个人不用SendMessage,觉得PostMessage比较实在
那个那个。。如果是后台的话建议用postmessage,我把自动生成扫描码的函数也发给你,全都复制在窗体代码里就可以。这只是比较简单的雏形,如果你是针对游戏的话,有些游戏对于发送回车键会比较麻烦,不是的话就不用多花时间啦。
Private Declare Function PostMessage Lib "USER32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Const WM_KEYDOWN = &H100'键码声明
Private Const WM_KEYUP = &H101
PostMessage chwnd, WM_KEYDOWN, vbKeyReturn, MakeKeyLparam(vbKeyReturn, WM_KEYDOWN)

Private Function MakeKeyLparam(ByVal VirtualKey As Long, ByVal flag As Long) As Long
Dim s As String
Dim Firstbyte As String 'lparam参数的24-31位
If flag = WM_KEYDOWN Then '如果是按下键
Firstbyte = "00"
Else
Firstbyte = "C0" '如果是释放键
End If
Dim Scancode As Long '获得键的扫描码
Scancode = MapVirtualKey(VirtualKey, 0)
Dim Secondbyte As String 'lparam参数的16-23位,即虚拟键扫描码
Secondbyte = Right("00" & Hex(Scancode), 2)
s = Firstbyte & Secondbyte & "0001" '0001为lparam参数的0-15位,即发送次数和其它扩展信息
MakeKeyLparam = Val("&H" & s)
End Function
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-03-18
如果是一个按钮的话,那么直接发送一个点击的消息即可:
SendMessage(hWnd, BM_CLICK, 0, 0);
如果一定要发送 Enter 消息,可以这样:
SendMessage(hWnd, WM_KEYDOWN, VK_RETURN, 0);
SendMessage(hWnd, WM_KEYUP, VK_RETURN, 0);
hWnd 代表按钮的句柄。追问

SendMessage(hWnd, BM_CLICK, 0, 0);是什么意思?

追答

BM_CLICK 是按钮(Button Message)点击消息,相当于鼠标左键在按钮上点击一下。

本回答被提问者采纳

如何用 sendmessage 发送键盘按键消息
如果是一个按钮的话,那么直接发送一个点击的消息即可:SendMessage(hWnd, BM_CLICK, 0, 0);如果一定要发送 Enter 消息,可以这样:SendMessage(hWnd, WM_KEYDOWN, VK_RETURN, 0);SendMessage(hWnd, WM_KEYUP, VK_RETURN, 0);hWnd 代表按钮的句柄。

sendmessage怎么在易语言中让它找到指定窗口然后发送按键消息而且支持后 ...
发送按键消息用这个命令:ndmessage(你要接收消息的窗口句柄,自定义消息,0,0)而支持后台的话,你用了时钟去循环执行,就已经可以后台了。关键在于找到指定的窗口,一般窗口所属进程的名称是不变的,那就可以从进程名取出窗口句柄,然后就sendmessage就行了。值得一提的是这个方法用来对付网络游戏不一定管...

vb 知道窗口句柄以及怎样获得窗口上文本框和按钮句柄并传递信息_百度知 ...
,你可以在你要控制的程序的文本框中先输入指定的问题假如“ABC”,用EnumChildWindows可以遍历出该句柄下所有控件的句柄,再用GetWindowText取出每个控件 句柄的文本参数,发现为"ABC"就返回该控件句柄 句柄找到了,用SendMessage(Handle,WM_SETTEXT...)可以设置你想做的任意值 ...

...却不能往它里面发送消息???我用sendmessage发
QQ密码框是经过特殊处理的,给你提供一种解决方案:先获取密码框句柄,既然不能sendmessage,你可以模拟键盘输入,用key_event这个函数可以输入,先输入16个退格把可能保存的密码清空掉,然后再根据密码逐个输入字符。不过事先得知道所有字符的ASCII编码。我以前做的程序就是这样处理的,不过现在QQ更新到2012...

c# 中如何通过sendMessage或postMessage给桌面最顶层的窗体发送一个回车...
SendMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);private void button1_Click(object sender, EventArgs e){ IntPtr hwnd = GetForegroundWindow();\/\/取前台窗体句柄 SendMessage(hwnd, 256, 0xD, 0);\/\/按下回车键 \/\/SendMessage(hwnd, 257, 0xD, 0);\/\/弹起回车键} ...

vb 怎么向一个窗口句柄发送一个回车键,就是按回车一次,但是呢,不能...
用API函数:sendmessage向窗口发送一个WM_KEYDOWN和WM_KEYUP详细就可以了。

vb sendkeys的问题
获得TEXT的句柄,然后采用sendmessage或postmessage发送回车(VBENTER)字符。

如何向一个窗口发送消息,并屏蔽Windows向它发送的消息
发送消息是用SendMessage,只要你知道一个窗口的句柄,就可以发送消息给它。不过你要是模拟鼠标操作最好使用:mouse_event函数。获得窗口句柄用:findwindow,你要想屏闭掉这个窗口的其它消息就得用HOOK,HOOK住他的消息队列,然后过滤他的消息,HOOK一个窗体的消息队列用:SetWindowsHookEx。之后分辨他的鼠标...

C# 我知道了一个窗口的句柄,如何后台模拟鼠标在句柄窗口内点击呢!
就我所知,如果真要实现你的那个功能,应该是用vbscript这种东西来做。 如果你的要求不太精确,就直接调用窗口内鼠标要点击的按钮的方法就行了,不需要模拟。 如果要凭空触发点击事件,则需要用到委托。委托就是将方法作为参数传递的机制,不知道委托能不能行,我觉得第二种方法比较靠谱。

vc++ sendmessage() key_event()如何使用
SendMessage(hWnd,WM_CHAR,WPARAM('g'),0);\/\/发送一个字符(按键)消息g给当前鼠标所指向的窗口句柄 Sleep(300);\/\/睡眠三百毫秒,相当于等待三分之一秒 } }这个程序一运行后,只要把鼠标指向要输入字符的窗口句柄,那么就相当于键盘每三分之一秒按了一个g键,试试吧!如果这样觉得模仿键盘按键...

相似回答