Q&A

  • 윈도우 종료버튼을 눌렀을때 ...
윈도우 종료버튼을 눌렀을때 간단한 프로그램을 실행시킨후 종료하게

할려고 합니다.

윈도우에는 시작프로그램이 있어서 윈도우가 뜨면 자동으로 그 폴더의

프로그램을 실행시킵니다. 혹시, 임의로 종료 프로그램을 만들어서

윈도우를 종료하면 그 종료 프로그램 폴더의 내용을 실행시킨후 종료하게

할수있는가요? 아니면 다른 방법이라도...



방법좀 알려주세요. 꼭!!! 알려주십시요...^.^ ^.^





1  COMMENTS
  • Profile
    김종호 1999.12.02 21:07
    초보입니다. wrote:

    > 윈도우 종료버튼을 눌렀을때 간단한 프로그램을 실행시킨후 종료하게

    > 할려고 합니다.

    > 윈도우에는 시작프로그램이 있어서 윈도우가 뜨면 자동으로 그 폴더의

    > 프로그램을 실행시킵니다. 혹시, 임의로 종료 프로그램을 만들어서

    > 윈도우를 종료하면 그 종료 프로그램 폴더의 내용을 실행시킨후 종료하게

    > 할수있는가요? 아니면 다른 방법이라도...

    >

    > 방법좀 알려주세요. 꼭!!! 알려주십시요...^.^ ^.^

    >

    >



    윈도우가 종료시에는 WM_QUERYENDSESSION 메세지를 Broadcast 방식으로

    모든 프로그램에 전달합니다. 그 메세지를 가로채서 작업을 하시면 됩니다.

    윈도우 종료 API 는 ExitWindowsEX 라는 함수인데

    이 함수는 win5, win98 에서만 동작을 합니다. NT 재부팅은 다른 방식으로...



    unit Unit1;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    ExtCtrls;



    type

    TForm1 = class(TForm)

    Timer1: TTimer;

    procedure FormCreate(Sender: TObject);

    procedure Timer1Timer(Sender: TObject);

    private

    { Private declarations }

    procedure WMQueryEndSessing(var Msg: TMessage); message WM_QUERYENDSESSION;

    public

    { Public declarations }

    end;



    var

    Form1: TForm1;



    implementation



    {$R *.DFM}



    procedure TForm1.WMQueryEndSessing(var Msg: TMessage);

    begin

    inherited;

    Msg.Result := Longint(False);

    Timer1.Interval := 2000;

    Timer1.Enabled := True;

    end;





    procedure TForm1.FormCreate(Sender: TObject);

    begin

    Timer1.Enabled := False;

    end;



    procedure TForm1.Timer1Timer(Sender: TObject);

    begin

    // 원하는 작업 수행.

    ExitWindowsEX(EWX_FORCE OR EWX_REBOOT, 0);

    end;



    end.