FindWindow로 찾는 윈도우는 한글 전체 윈도우
그리너까 C++Builder로 보면 Form이구요
한글안에 에디터 윈도우를 찾아서 메세지를 보내야 합니다.
TForm위에 TMemo 같은게 올려져 있다면
Form에 메세지를 보내서는 안되겠죠
Form위에 있는 윈도우 중에 Memo를 찾아서 Memo윈도우에
키 메세지를 보내야 Memo에 무언가 기록될것입니다.
마찬가지로 한글프로그램도
한글 메인 윈도우가 아니라 그 안에 있는 Editer윈도우를 찾아서
그놈에게 메세지를 보내야 겠죠..
그럼..
초보연구원 님이 쓰신 글 :
: void __fastcall TForm1::Button3Click(TObject *Sender)
: {
: HWND hWnd = FindWindow("HwpApp : 7.0", "빈 문서 1 - 한글과컴퓨터 한글 ");
:
: if(hWnd)
: {
: /*
: SendMessage(hWnd, WM_KEYDOWN, VK_TAB, 0);
: ::Sleep(500);
: SendMessage(hWnd, WM_KEYUP, VK_TAB, 0);
: */
: SendMessage(hWnd, WM_KEYDOWN, VK_RETURN, 0);
: }
: }
: 위와 같이 키다운만 하거나 슬립을 주거나 해서 해보고, 엔터키를 보내보아도 한글에서는 처리가 안되네요.
: 파인드윈도우를 사용해서 핸들을 가지고는 있는데 안되는 것은 다른 이유일지 조언을 부탁드립니다.
: 감사합니다.~
:
: 조대현.daf 님이 쓰신 글 :
: :
: : HWND hWnd = FindWindow(NULL, "빈 문서 1 - 한글");
: :
: : if(hWnd)
: : {
: : SendMessage(hWnd, WM_KEYDOWN, VK_TAB, 0);
: : SendMessage(hWnd, WM_KEYUP, VK_TAB, 0);
: : }
: :
: :
: : 1. 코드는 참조만 하시구요. 대략 저런식으로 한글프로그램의 핸들을 얻어 Tab키가 눌린 메세지를 날려주면 됩니다.
: : title로 찾지 마시고 spy프로그램을 이용하여 class name으로 찾으세요.
: :
: : 2. 그리고 KeyDown과 KeyUp을 동시에 보냈을때 제대로 작동할지 모르겠습니다. 저는 500ms뒤에 KeyUp을 보냈습니다.
: :
: : 3. Ctrl, Shift, Alt등의 특수키조합은 msdn을 참고하시고
: : virtual key는
http://delphi.about.com/od/objectpascalide/l/blvkc.htm 여기를 참고하세요.