Q&A

  • 상용프로그램 설치 중 sendmessage후 응답은?
상용 프로그램을 설치하는 데 있어
기본값으로 엔터키와 탭키를 조합하면 자동으로 설치할 수 있습니다.

그래서 프로그램으로 처리를 해볼라고 하는데.
아래처럼 PostMessage로는 잘 실행되는데 문제는 중간에 명령이 끝나는 시점을 알아야
다른 키나 데이터를 보낼 수 있을 것 같아요.

PostMessage는 결과값을 리턴하지 않아 sendMessage로 하려는데
상용프로그램을 건드릴 수 없다면(신호를 보낼 수 없슴) sendMessage도 역시 결과값을 받을 수 없나요.
아래 rst가 0이네요.????
실행여부 체크가 아니라 어느단계인지를 알 수 없나요?

<!--
var
  s_hwnd:hwnd;
  rst : LongInt;

  shellexecute(Handle, '', PChar(edtPath.Text), nil, nil, SW_SHOWNORMAL);

  s_hwnd := FindWindow(nil, '샘플프로그램 설치');
  SetForegroundWindow(s_hwnd);

//  PostMessage(s_hwnd, WM_KEYDOWN, VK_RETURN, 0);
//  PostMessage(s_hwnd, $0009, VK_TAB, 0);
//  PostMessage(s_hwnd, $0009, VK_TAB, 0);
//  PostMessage(s_hwnd, WM_KEYDOWN, VK_RETURN, 0);

  rst := SendMessage(s_hwnd, WM_KEYDOWN, 0, VK_RETURN);
-->
1  COMMENTS
  • Profile
    최용일 2007.01.06 01:33
    안녕하세요. 최용일입니다.

    SendMessgae나 PostMessage나 결과값이 그 메세지의 처리에 대한 결과값이지 명령이 끝나는 시점(???) 같은것에 대한 결과값이 아닙니다. rst가 0이라면 SendMessage로 보낸 메세지를 잘 처리했다는것이겠죠...

    외부 프로그램의 실행단계(??) 같은것을 알 수 있는 방법은 특별히 없습니다.

    외부 프로그램이 설치프로그램같은데 단계가 끝날때마다 화면이 바뀔겁니다. FindWindow나 FindWindowEx를 이용해서 이 바뀌는것을 감지해서 엔터나 탭을 눌러주시면 될겁니다.  예전에 Interbase설치를 이렇게 했던 기억이 있네요...

    ^^ 항상 즐코하세요...