1.当应用程序启动时,怎样防止再启动这个程序?
2.当启动了一个MDI窗口时,如果没有关闭这个MDI窗口,怎样防止再启动这个MDI窗口?

解决方案 »

  1.   

    只能打开唯一一个窗口:
    form1.showmodal;
      

  2.   

    第一个问题:
    const
      CM_RESTORE = WM_USER + $1000;var
      RvHandle : hWnd;
    {$R *.res}begin
       RvHandle := FindWindow('系统', NIL);
      if RvHandle > 0 then
      begin
        Application.MessageBox('您的系统中已经有本程序正在运行!','系统提示',MB_OK+MB_ICONERROR+MB_SYSTEMMODAL);
        PostMessage(RvHandle, CM_RESTORE, 0, 0);
        Exit;
      end;
      Application.Initialize;
      Application.Title := '系统';
      Application.CreateForm(TfrmMain, frmMain);
      Application.Run;
    end.//主窗体
    Unit Main
     const
      CM_RESTORE = WM_USER + $1000;
     public
        procedure CreateParams(var Params: TCreateParams); override;
        Procedure RestoreRequest(var message: TMessage); message CM_RESTORE;第二个问题:
    if not Assigned(Form2) then
      

  3.   

    用if createmutex(nil,true,'aaaaaaaassdf')=ERROR_ALREADY_EXISTS then
        application.terminate;