2012-04-23 1 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 문자를 보내드립니다.

당신은 비주얼 스튜디오와 함께 제공 spy++를 사용하여 하위 창을 찾을 수 있습니다.

#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; 

}

: 여기

마우스 이벤트를 보낼 SendInput을를 사용하는 예입니다

+0

이것은 매우 유용합니다. 왼쪽 마우스를 사용하는 코드는 무엇입니까? PostMessage와 함께? :) – tlovidiu

+0

원한다면 실제로 SendInput을 사용하는 코드의 C# 예제를 게시합니다. – Serdalis

+0

그것은 C#에서 위대한 것입니다 :) 제발 할 수 있습니까? 그러나 마우스 버튼 – tlovidiu

관련 문제