7

これまでのところ、すべてのハンドルキャプチャと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を使用することはできません。

あなたが助けることができればありがとう!

4

2 に答える 2

9

キー押下をシミュレートするには、キーダウンおよびキーアップイベントをシミュレートする必要があります。これは、[メッセージ]フィールドで指定したものです。(キーダウンには256を使用し、キーアップには257を使用します)。wParamとlParamはメッセージ固有であるため、keyupとkeydownの場合、wParamがキーコードになり( 16進コードについてはこのページを参照)、lParamにはその他のさまざまな情報が含まれます(このページを参照)。vb.netでは、lParamにint32を使用できます。たとえば、キーダウンに0を使用し、キーアップに65539を使用できます。

元:

SendMessage(New IntPtr(CurrentHandle), 256, KEYCODE, 0) - Keydown
SendMessage(New IntPtr(CurrentHandle), 257, KEYCODE, 65539) - Keyup
于 2011-04-12T22:46:31.733 に答える
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-メッセージを送信するウィンドウのハンドルです。Msg-送信するメッセージタイプです。WParamとlParamは本質的に「情報」です。正確な使用法は、送信するメッセージによって異なります。

キー押下をエミュレートするためにSendKeysの代わりにSendMessageを使用する必要があるという状況はどのようなものですか?私は以前に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値を作成するためにビットを操作します。

于 2011-04-12T22:32:15.643 に答える