知识大全 delphi中,让程序只运行一次的方法[2]

Posted

篇首语:世上无难事,只要肯登攀本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 delphi中,让程序只运行一次的方法[2]相关的知识,希望对你有一定的参考价值。

  program MyThreadTest;  uses   Windows    Forms    SysUtils    Messages    Dialogs     Unit in Unit pas Form   $R * res  var   myMutex    FindHid: HWND;   MoudleName: string;  function EnumWndProc(hwnd: Thandle; param: Cardinal): bool; stdcall;  //由于用于api回调函数 请使用windows传统的参数传递方式stdcall  var    ClassName WinMoudleName: string;    WinInstance: THandle;  begin    result := true;    SetLength(ClassName );    GetClassName(hwnd pchar(ClassName) length(ClassName)); //获得当前遍历窗口的类名    ClassName := pchar(ClassName); //在字符串后加结束符 确定字符串结束    if UpperCase(ClassName) = UpperCase(TForm ClassName) then //比较类名   begin      WinInstance := GetWindowLong(hwnd GWL_HINSTANCE); //获得当前遍历窗口的实例    setlength(WinMoudleName );    //获得当前遍历窗口的程序文件名    GetModuleFileName(WinInstance pchar(WinMoudleName) length(WinMoudleName));    WinMoudleName := pchar(WinMoudleName);    WinMoudleName :=ExtractFileName(WinMoudleName);    //MoudleName为工程全局变量 自身程序的文件名    if UpperCase(WinMoudleName) = UpperCase(MoudleName) then    begin        FindHid := hwnd;//FindHid为工程全局变量保存找到的句炳     result := false; //找到以后就结束遍历      end;    end;  end;  begin   // CreateMutex建立互斥对象 并且给互斥对象起一个唯一的名字    myMutex := CreateMutex(nil false OneCopy );   if WaitForSingleObject(myMutex ) <> wait_TimeOut then   //程序没有被运行过    begin      Application Initialize;      Application CreateForm(TForm Form );    Application Run;   end else   begin    SetLength(MoudleName );    //获得自己程序文件名    GetModuleFileName(HInstance pchar(MoudleName) length(MoudleName));    MoudleName := pchar(MoudleName);    MoudleName := ExtractFileName(MoudleName);    EnumWindows(@EnumWndProc ); //调用枚举函数    if FindHid <> then    begin     ShowWindow(FindHid SW_RESTORE);     SetForegroundWindow(FindHid);    end;   end;  end   [EnumWindows函数使用]   EnumWindows 用来列举屏幕上所有顶层窗口   MSDN   The EnumWindows function enumerates all top level windows on the screen by passing the handle to each window

cha138/Article/program/Delphi/201311/24833

相关参考

知识大全 delphi中,让程序只运行一次的方法[1]

  公司开发的软件需要对串口进行操作每次打开软件后程序自动去打开串口寻找连接到串口上的设备但是如果用户不知道打开了两次那么第二次打开的程序是不能正常使用的因为对串口的操作时独占的第一个程序独占了串口的

知识大全 使用PB限制应用程序只运行一次

使用PB限制应用程序只运行一次  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  位操作系统中可以用

知识大全 让Java程序只运行一个实例

让Java程序只运行一个实例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一个程序可以在内存里

知识大全 C#中让程序只运行一个实例的操作方法

C#中让程序只运行一个实例的操作方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  让程序只运行

知识大全 Delphi应用程序的应用(一)[2]

DELPHI基础教程:Delphi应用程序的应用(一)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 Delphi应用程序的应用(二)[2]

DELPHI基础教程:Delphi应用程序的应用(二)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 Delphi开发数据库应用程序概述(一)[2]

DELPHI基础教程:Delphi开发数据库应用程序概述(一)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快

知识大全 Delphi开发数据库应用程序概述(二)[2]

DELPHI基础教程:Delphi开发数据库应用程序概述(二)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快

知识大全 Delphi开发WEB应用程序打印组件[2]

Delphi开发WEB应用程序打印组件[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  四调

知识大全 如何使用Delphi设计强大的服务器程序[2]

如何使用Delphi设计强大的服务器程序[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  大