Q&A

  • 작업표시줄에서 실행 프로그램 선택시 이벤트
사용환경

WIN98, DELPHI4



고수님들 안녕하세요?



도움을 받고자 글을 올립니다.



프로그램을 최소화 시킬때는



procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;



이런걸루 SC_MINIMIZE 이벤트를 발생하여 프로그램을 했는데



작업표시줄에 최소화 되어있는 프로그램을 선택했을시



SC_RESTORE 이벤트가 발생할 줄 알았는데 안되네요...



최소화된 프로그램을 다시 선택해서 복원할 때 이벤트를



발생하려면 어떻게 하나요? 고수님들 도와주세요....





2  COMMENTS
  • Profile
    최용일 2001.05.18 03:56
    안녕하세요. 최용일입니다.



    메인폼을 최소화시키면 메인폼에서 WM_SYSCOMMAND가 발생하고, 어플리케이션이 최소화되지만 최소화된 어플레케이션을 리스토어 시켰을때는 메인폼에서 WM_SYSCOMMAND가 발생하는 것이 아니라 어플리케이션에서 WM_SYSCOMMAND가 발생합니다. 메인폼이 아니라 일반 폼이라면 그 폼에서 발생하지만...



    아래와 같이 Application객체의 메세지를 핸들하세요...



    type

    TForm1 = class(TForm)

    procedure FormCreate(Sender: TObject);

    protected

    procedure AppMessage(var Msg: TMsg; var Handled: Boolean);

    ......

    end;



    procedure TForm1.AppMessage(var Msg: TMsg; var Handled: Boolean);

    begin

    if (Msg.message = WM_SYSCOMMAND) and (Msg.wParam = SC_RESTORE) then

    begin

    // 여기에서 리스토어될때의 처리를 하세요...

    ShowMessage('Application restored');

    end;

    end;



    procedure TForm1.FormCreate(Sender: TObject);

    begin

    Application.OnMessage := AppMessage;

    end;



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



    강동길 wrote:

    > 사용환경

    > WIN98, DELPHI4

    >

    > 고수님들 안녕하세요?

    >

    > 도움을 받고자 글을 올립니다.

    >

    > 프로그램을 최소화 시킬때는

    >

    > procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;

    >

    > 이런걸루 SC_MINIMIZE 이벤트를 발생하여 프로그램을 했는데

    >

    > 작업표시줄에 최소화 되어있는 프로그램을 선택했을시

    >

    > SC_RESTORE 이벤트가 발생할 줄 알았는데 안되네요...

    >

    > 최소화된 프로그램을 다시 선택해서 복원할 때 이벤트를

    >

    > 발생하려면 어떻게 하나요? 고수님들 도와주세요....

    >

    >

  • Profile
    강동길 2001.05.18 19:24
    최용일님 정말 감사합니다.



    사부로 모시고 싶네요....



    사막에서 오아시스를 만난 기분이라고 할까요...



    정말 진심으로 감사드리고요, 델피언을 위해 힘쓰시는



    모습 정말 보기 좋습니다.



    앞으로도 많은 도움 부탁드립니다.



    좋은 하루되세요!!!



    최용일 wrote:

    > 안녕하세요. 최용일입니다.

    >

    > 메인폼을 최소화시키면 메인폼에서 WM_SYSCOMMAND가 발생하고, 어플리케이션이 최소화되지만 최소화된 어플레케이션을 리스토어 시켰을때는 메인폼에서 WM_SYSCOMMAND가 발생하는 것이 아니라 어플리케이션에서 WM_SYSCOMMAND가 발생합니다. 메인폼이 아니라 일반 폼이라면 그 폼에서 발생하지만...

    >

    > 아래와 같이 Application객체의 메세지를 핸들하세요...

    >

    > type

    > TForm1 = class(TForm)

    > procedure FormCreate(Sender: TObject);

    > protected

    > procedure AppMessage(var Msg: TMsg; var Handled: Boolean);

    > ......

    > end;

    >

    > procedure TForm1.AppMessage(var Msg: TMsg; var Handled: Boolean);

    > begin

    > if (Msg.message = WM_SYSCOMMAND) and (Msg.wParam = SC_RESTORE) then

    > begin

    > // 여기에서 리스토어될때의 처리를 하세요...

    > ShowMessage('Application restored');

    > end;

    > end;

    >

    > procedure TForm1.FormCreate(Sender: TObject);

    > begin

    > Application.OnMessage := AppMessage;

    > end;

    >

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

    >

    > 강동길 wrote:

    > > 사용환경

    > > WIN98, DELPHI4

    > >

    > > 고수님들 안녕하세요?

    > >

    > > 도움을 받고자 글을 올립니다.

    > >

    > > 프로그램을 최소화 시킬때는

    > >

    > > procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;

    > >

    > > 이런걸루 SC_MINIMIZE 이벤트를 발생하여 프로그램을 했는데

    > >

    > > 작업표시줄에 최소화 되어있는 프로그램을 선택했을시

    > >

    > > SC_RESTORE 이벤트가 발생할 줄 알았는데 안되네요...

    > >

    > > 최소화된 프로그램을 다시 선택해서 복원할 때 이벤트를

    > >

    > > 발생하려면 어떻게 하나요? 고수님들 도와주세요....

    > >

    > >