똑같은 방식으로 GetWindowText 를 사용하시면 됩니다.
다만, hdHandle 값이 그 Update Record를 찍은 메시지 값이 되겠지요.
즉.. 큰 메시지 박스가 있으면, 그 Parent 핸들이 있고.. 그 Parent안에
여러 객체가 Child로 들어갑니다.
FindWindowEx 함수로, 그 Child 핸들을 찾아내셔서 그 핸들을 가지고
GetWindowText를 하시면 그 메시지를 가지고 오실 수 있습니다.
Child 핸들을 찾아내기 위한 클래스를 알아보시려면, Spy나 Winsight를
사용하시는 것도 좋은 방법입니다.
이전에 비슷한 답변을 예제까지 올린적 있었는데.. 못찾겠네요.. 소스도
못찾겠구.. 한번 찾아보셔서 참고해보시면 도움이 되실껍니다. ^^
설명을 좀 어렵게 드린것 같네요.. 무한 리플 환영합니다. -_-v
cuperido
라모드 님이 쓰신 글 :
: 아주 도움이 되었습니다. 그런데 한가지 더 궁금한게 있는데요..
: 밑에 소스에서 Messagebox 의 Header를 가져오려고 할 결우
: char *Temp;
: GetWindowText(hdHandle,Temp,256);
: 이런식으로 가져오는 것 까지는 했는데
: Header 말고 내용을 가져 오려고 할려면 어떻게 해야 할까요?
: 밑에 소스에서라면 "Update Record?" 요게 되겠죠?
:
:
: //---------------------------------------------------------------------------
:
: #include <vcl.h>
: #pragma hdrstop
:
: #include "Unit1.h"
: //---------------------------------------------------------------------------
: #pragma package(smart_init)
: #pragma resource "*.dfm"
: TForm1 *Form1;
: //---------------------------------------------------------------------------
: __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
: {
:
: Timer1->Interval = 10;
: }
: //---------------------------------------------------------------------------
:
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
:
: MessageDlg("Update Record?", mtConfirmation, TMsgDlgButtons() << mbYes << mbNo, 0);
:
: }
: //---------------------------------------------------------------------------
:
:
: void __fastcall TForm1::Timer1Timer(TObject *Sender)
: {
:
: HWND hdHandle = FindWindow(NULL, "Confirm"), hdButtonHandle;
:
:
: if(hdHandle) {
: SetWindowText(hdHandle, "확인");
:
: hdButtonHandle = FindWindowEx(hdHandle, NULL, NULL, "&Yes");
: if(hdButtonHandle) SetWindowText(hdButtonHandle, "예");
:
: hdButtonHandle = FindWindowEx(hdHandle, NULL, NULL, "&No");
: if(hdButtonHandle) SetWindowText(hdButtonHandle, "아니오");
: }
:
: }
:
: 유영인 Cuperido 님이 쓰신 글 :
: : 아주아주 쉽게 하는 방법은..
: :
: : FindWindow로 찾으신 다음,
: : 메시지나 마우스 클릭 이벤트를 보내는 방법입니다.
: :
: :
http://www.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=28089
: : 글이 도움이 되실지 모르겠습니다.
: :
: :
: : cuperido
: :
: : 라모드 님이 쓰신 글 :
: : : 너무 초보적인 질문이라 부끄럽네요.. -.-;
: : : 다른 Application이 돌아가며 발생하는 Message box의 내용을 읽어드려 그에 해당하는 결과(yes 또는 no 키를 누름)를 대신 응답하려고 합니다. 어떻게 해야할까요? 계시판에서 막 찾아보니 Message box 가 뜰때 발생하는 messaege를 잡아서 한다고들 하는데 전혀 Message 관련해서는 경험이 없어서 어디서 부터 손대야 할지 모르겠습니다.
: : : 또하나 키를 대신 누르는 것은 keybd_event('a',0,0,0);이렇게 하면 될것같은데.. 이건 대상이 활성화되어 있는 상태에서만 가능한것으로 알고 있는데 활성하는 다른프로그램에서 어떤방식으로 해당프로그램을 활성화시킬 수 있는지도 알고 싶습니다. 고수님들의 한마디 부탁드립니다.
: : :