Q&A

  • 다른 프로그램이 실행할때 발생되는 메세지...
안녕하세요...

궁금한 것이 있어서 글을 올립니다.



다름이 아니라 프로그램이 실행될때 발생되는 메세지를 체크하고 싶은데요...

그러니까 현재 프로그램에서 익스프로러가 실행된것을 체크하거나 아니면

스타크래프트가 실생되거나 하는 것을 프로그램에서 받아들이고 싶거든요.



어떤 방법이 있을까요?

답변 기다리겠습니다.

1  COMMENTS
  • Profile
    송창규 1999.09.28 19:20
    지승용 wrote:

    > 안녕하세요...

    > 궁금한 것이 있어서 글을 올립니다.

    >

    > 다름이 아니라 프로그램이 실행될때 발생되는 메세지를 체크하고 싶은데요...

    > 그러니까 현재 프로그램에서 익스프로러가 실행된것을 체크하거나 아니면

    > 스타크래프트가 실생되거나 하는 것을 프로그램에서 받아들이고 싶거든요.

    >

    > 어떤 방법이 있을까요?

    > 답변 기다리겠습니다.



    현재 프로그램에서 어떠한 프로그램을 실행시킬때는 CreateProcess를 사용하여

    실행시키세요. FALSE 가 리턴되면 실행되지 못한 것입니다.

    현재 프로그램에서 spawn되지 않고 다른곳에선가 실행되는 것을 체크하고자

    한다면 간단히 타이머를 걸어서 FindWindowEx로 스타크래프트나 익스플로러 등등을

    계속 체크하세요.

    가령 스타크래프트의 실행을 체크하고 싶으면..



    var

    Wid: integer; // 스타크래프트의 윈도 핸들을 담는 전역변수



    ....



    procedure TForm1.FormTimer(Sender: TObject);

    var

    Id: integer;

    begin

    Id := FindWindow(PChar('SWarClass'), nil); // 스타크래프트의 윈도 핸들을 찾는다

    if (Wid <> Id) then begin

    if (Id <> 0) then Form1.Caption := '스타크래프트 실행이 감지됨'

    else Form1.Caption := '스타크래프트 종료가 감지됨';

    Wid := Id;

    end;

    end;



    이런식으로 될 수가 있겠죠.

    'SWarClass' 같은 특정 클래스명은 델파이에 포함된 WinSight 을 통해서 알아볼 수 있습니다.