例如1.exe 当第1次双击可以正常打开
但是我在打开一次的情况下还能再开一个,请问如何能判断已经开过了,第2次一开就关掉或直接不能开呢??

解决方案 »

  1.   

    //给你一个例子
    program Project1;uses
      Forms, Windows, Dialogs,
      Unit1 in 'Unit1.pas' {Form1};const WinTitle='Test';
    {$R *.res}begin  Application.Initialize;
      if (FindWindow(nil, PChar(WinTitle))>0)  then begin
        ShowMessage('程序已在运行');
        Application.Terminate;
      end;
      Application.Title := WinTitle;
      Application.CreateForm(TForm1, Form1);
      Application.Run;
    end.
      

  2.   

    program Project1;uses
      Forms, Windows, Dialogs,
      Unit1 in 'Unit1.pas' {Form1};const WinTitle='Test';
    {$R *.res}begin  Application.Initialize;
      if (FindWindow(nil, PChar(WinTitle))>0)  then begin
        ShowMessage('程序已在运行');
        Application.Terminate;
      end;
      Application.Title := 'Test'; //要这样改不然会在下次打开的工程的时候出错
      Application.CreateForm(TForm1, Form1);
      Application.Run;
    end.
      

  3.   

    靠, 这位兄弟中午给你回答的问题现在都改成非技术专区了,
    又是那个arri干得好事.
    白回答了……, arri做事太绝了。
    下面三个贴子
    http://community.csdn.net/Expert/topic/4290/4290890.xml?temp=.4767572
    http://community.csdn.net/Expert/topic/4290/4290788.xml?temp=.3854334
    http://community.csdn.net/Expert/topic/4290/4290793.xml?temp=8.367556E-02我们素不相识, 只是好心帮你。
      

  4.   

    楼上谢谢你,但是我用的是delphi6 
    Application.Title := WinTitle;一加就不能运行不知道为什么
      

  5.   

    方法很多:
    1.用findwindow,加一个没用的form,让其自动创建,执行时检查这个form,若存在就termiate.
    2.可以设置一个原子。