윈도우 핸들 가져오기

Posted by 겨울에
2011. 9. 26. 09:19 scrap/ C/C++
출처 : http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=50&MAEULNO=20&no=724063&ref=724063



CWnd* p = CWnd::FromHandle((HWND)0x????????);


 WPARAM w = 0;

 LPARAM l = 0;

 CPoint pt(0,0); 

 

 GetCursorPos(&pt);


 p->ScreenToClient(&pt);

 

 l = MAKELONG(pt.x,pt.y);


 p->SendMessage(WM_LBUTTONDOWN,w,l); 

 p->SendMessage(WM_LBUTTONUP,w,l);

 

////////////////////////////////////////////////////////

 

 

먼저 위의 코드를 봐주시기 바랍니다.

특정 윈도우의 핸들을 가져다가 자동으로 왼쪽 마우스가

한번 클릭 되도록 유도하는 코딩입니다.

 

예를 들어 IE를 열어서 "www.google.com"를 열람한 후에,

해당 IE창의 윈도우 핸들값을 위의 "(HWND)0x????????"에 대체 합니다.

 

이제, 검색창에 "데브피아"라고 입력하고

마우스를 "Google Search"단추에 올려놓은 다음

위의 코드를 실행하면, 자동으로 검색 단추가 눌러집니다.

 

질문:

현재 WindowFinder.exe를 써서 핸들 값을 찾고 있는데...

WindowFinder.exe를 사용안하고, html페이지의 title이나

title의 일부만 가지고 해당 IE창의 윈도우 핸들값을

찾을 수 있는 방법이 있을까요?

 

예를 들어서 구글은 www.google.com으로 title를 시작하고

네이버는 www.naver.com으로 title를 시작합니다.

그런데 www.goo라던가, www.nav라는 스티링 값만 가지고

열람 되어져 있는 IE창의 윈도우 핸들값을 가져올 수 있는

방법이 있을까요?

 

 

 

 

 

고수님들의 조언 부탁드립니다.

감사합니다.





FindWindow(LPCTSTR szClass, LPCTSTR szName);

 

두번째 인자값이 윈도우의 캡션 영역의 타이틀 이름입니다.

 

예를 들어서

 


 

을 찾고자 한다면

 

FindWindow(NULL, _T("제목 없음 - 메모장"));

하시면 윈도우 핸들을 구하실 수 있습니다.

 

타이틀 바의 일부만 가지고 찾으 실꺼면

프로세스 목록을 얻어와서 각각의 프로세스의 캡션 이름을 얻은 후에 문자열 비교를 하시면 되실겁니다.