到目前为止,我已经完成了所有句柄捕获和gui设置。我很难过如何执行实际步骤。
我有这段代码:
SendMessage(New IntPtr(CurrentHandle), WHAT,GOES,HERE?)
我一直在看: http://msdn.microsoft.com/en-us/library/ms644950(VS.85).aspx 和 http://msdn.microsoft.com/en-us/library/ms644927(v=VS.85).aspx#system_defined
但是,这些都没有提供我需要学习如何操作的“代码示例”方法。我只需要发送关键事件,如按“/”或“w”等。不,我不能使用sendkeys。
谢谢,如果你能提供帮助!
答案 0 :(得分:9)
要模拟按键,您需要模拟keydown和keyup事件,这将是您在Msg字段中指定的事件。 (对于keydown使用256,对于keyup使用257)。 wParam和lParam是特定于消息的,因此对于keyup和keydown,wParam将是密钥代码(十六进制代码的See this page),而lParam包含其他杂项信息(see this page)。在vb.net中,您可以将int32用于lParam。例如,您可以将0用于keydown,将65539用于keyup。
例如:
SendMessage(New IntPtr(CurrentHandle), 256, KEYCODE, 0) - Keydown
SendMessage(New IntPtr(CurrentHandle), 257, KEYCODE, 65539) - Keyup
答案 1 :(得分:1)
http://msdn.microsoft.com/en-us/library/ms644950(v=vs.85).aspx
LRESULT WINAPI SendMessage(
__in HWND hWnd,
__in UINT Msg,
__in WPARAM wParam,
__in LPARAM lParam
);
hWnd - 是发送消息的窗口的句柄。 消息 - 是要发送的消息类型。 WParam和lParam本质上是“信息”。具体用途取决于您发送的邮件。
您需要使用SendMessage而不是SendKeys来模拟按键的情况是什么?我之前使用过SendMessage,但它总是用于鼠标移动。 .SendKeys()应该将你告诉它的任何按键发送到活动窗口。
Public Shared Sub ActivateWin()
Dim Win As Process = Process.GetProcessesByName("myWindow").First
AppActivate(Win.Id)
End Sub
我在SendKeys()之前使用了上面的内容,它总是有效。
如果这不起作用,或者您想使用SendMessage以便使用SendMessage; WM_KEYDOWN消息的文档是您需要的。 http://msdn.microsoft.com/en-us/library/ms646280(v=vs.85).aspx
您将操纵位以创建正确的lParam值。