2012-04-23 12 views
2

をクリックして、私は現在のウィンドウにクリックをシミュレートすることができていますが、ウィンドウが最小化または非表示になっている場合、私はそれをやりたい、シミュレートは非表示ウィンドウに

をC#の問題を持っています。

アイデア?

+0

C++の回答は受け入れますか?私はC + +スニペットを持っていますが、現時点ではC#ではありません。 – Serdalis

+0

はい、C++も良いです:)しかし、ウィンドウのハンドルを取得する必要がありますが、それは問題ありません。 – tlovidiu

+0

[マウスクリックイベントを隠しウィンドウに送信する方法は?](http: //stackoverflow.com/questions/1621274/how-to-send-a-mouse-click-event-to-a-hidden-window) – Reniuz

答えて

2

ここでは、ウィンドウハンドルとターゲットサブウィンドウを表示し、そのサブウィンドウにメッセージを送信する完全に機能するスニペットを示します。

#include "TCHAR.h" 
#include "Windows.h" 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    HWND hwndWindowTarget; 
    HWND hwndWindowNotepad = FindWindow(NULL, L"Untitled - Notepad"); 
    if (hwndWindowNotepad) 
    { 
     // Find the target Edit window within Notepad. 
     hwndWindowTarget = FindWindowEx(hwndWindowNotepad, NULL, L"Edit", NULL); 
     if (hwndWindowTarget) { 
      PostMessage(hwndWindowTarget, WM_CHAR, 'G', 0); 
     } 
    } 

    return 0; 
} 

現時点では何もしない、新しいメモ帳を開きます(「無題」メモ帳G文字を送信します。

をあなたは、Visual Studioに付属しているspy++を使用してサブウインドウを見つけることができます。

ここ

マウスイベントを送信するようにSendInputを使用した例である。

#include "TCHAR.h" 
#include "Windows.h" 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    POINT pt; 
    pt.x = 300; 
    pt.y = 300; 

    HWND hwndWindowTarget; 
    HWND hwndWindowNotepad = FindWindow(NULL, L"Untitled - Notepad"); 
    if (hwndWindowNotepad) 
    { 
     // Find the target Edit window within Notepad. 
     hwndWindowTarget = FindWindowEx(hwndWindowNotepad, NULL, L"Edit", NULL); 
     if (hwndWindowTarget) { 
      PostMessage (hwndWindowTarget, WM_RBUTTONDOWN, 0, (pt.x) & ((pt.y) << 16)); 
      PostMessage (hwndWindowTarget, WM_RBUTTONUP, 0, (pt.x) & ((pt.y) << 16)); 
     } 
    } 

return 0; 

}

+0

これは非常に役に立ちます。 PostMessageとは? :) – tlovidiu

+0

あなたが望むなら、私は実際にSendInputを使ってそのコードのC#の例を持っています。私はそれを投稿します。 – Serdalis

+0

それはC#で素晴らしいだろう:)あなたはどうかできますか?しかし、マウスのボタン – tlovidiu

関連する問題