三、防止多次载入应用程序实例
某些应用程序需要禁止用户载入多次实例。比如,控制面板中的应用程序,不管用户打开多少次,同一应用程序只有一个实例,而且每一次试图重复打开都会自动激活已经存在的实例。
Windows API 提供了函数FindWindow,可以是应用程序在启动时检查自己是否已经存在。
该函数在Delphi中的语法是:
function FindWindow(lpClassName: PChar, lpWindowName: PChar): HWND;
其中,参数lpCalssName 是要查找的窗口的类的名称,参数lpWindowName是要查找的窗口的标题(Caption)。 如果找到了相应的窗口实例,将返回一个非0 的该窗口句柄的整型值,否则返回0 。因此,只要判断应用程序的主窗口(或者伴随着应用程序存在而存在的窗口)是否存在就可以判断是否已经有实例存在了。
例如:
H := FindWindow('TForm1', nil);
if H = 0 then begin
ShowMessage('没有发现相同的应用程序实例。');
//加入加载应用程序的语句
//...
end else begin
ShowMessage('应用程序已经加载。');
SetActiveWindow(H);
end;
其中,参数lpWindowName的位置以Delphi保留字nil 代替,是因为窗口的标题可能在应用程序中是变化的。Windows API 函数SetActiveWindow 用于指定活动窗口。转自bbs.sendsms.cn
分享到:
相关推荐
在Delphi中,调用API函数是常见的技术,用于扩展Delphi程序的功能。本教程将深入探讨如何在Delphi中调用API函数来实现数据发送。 首先,理解API函数的基本结构是至关重要的。API函数通常在Windows头文件中定义,如`...
#### 三、如何在Delphi中调用API函数 1. **导入必要的头文件**: - Delphi为了方便开发者调用API函数,已经将Windows API相关的定义整理到`Windows.pas`单元中。 - 在需要使用API函数的单元中,只需简单地在uses...
在Delphi编程环境中,API(应用程序接口)函数的使用是扩展功能、访问操作系统服务和实现低级别操作的关键技术。API函数通常是由操作系统如Windows提供的,它们允许开发者直接与系统进行交互,实现一些Delphi自带库...
关于delphi动态调用API函数的视频
标题“Delphi动态调用API辅助工具”暗示了这个工具是为了解决在Delphi项目中使用API时遇到的问题,可能包括自动化的API函数生成、参数管理、错误处理等方面。这种工具通常能够简化API调用的过程,提高开发效率,减少...
在Delphi编程环境中,动态调用BPL(Binary Package Library)函数是一种常见的技术,它可以显著提高应用程序的灵活性和模块化程度。BPL是Delphi的一种组件包机制,它允许我们将代码封装到独立的动态链接库中,然后在...
在Delphi中调用Java函数,可以利用JNI提供的API来实现这一目标,从而扩展Delphi程序的功能。 首先,我们需要了解JNI的基本工作原理。JNI的核心是Java虚拟机(JVM)和本地方法接口。当Java代码调用本地方法时,JVM会...
在Delphi中,我们可以使用TSerial或 Indy 等第三方组件来操作串口,但若想直接通过API进行读写,我们需要使用如`CreateFile`,`WriteFile`,`ReadFile`,`CloseHandle`等函数。 1. **创建串口**:使用`CreateFile`...
本篇讲解将聚焦于如何在Visual Basic和Delphi这两种流行的编程环境中调用API函数。 在Visual Basic中调用API函数: 1. **声明API函数**:首先,你需要在你的代码中声明API函数。这通常通过`Declare`语句完成,指定...
标题“javascript调用delphi中的函数”涉及到的技术领域是跨语言通信,具体是JavaScript与Delphi之间的交互。这种交互通常发生在Web应用程序与桌面应用程序的集成,或者在浏览器扩展和本地资源之间。以下是对这一...
除了上述方法,还可以使用TLibLoader组件,它是Delphi中的一个控件,简化了动态加载和调用BPL中函数的过程。TLibLoader自动处理加载、查找函数和卸载BPL的细节,使得代码更简洁,如下所示: ```delphi uses ...
在DELPHI中,调用API函数非常直接,因为DELPHI本身是基于Pascal语言的,而Pascal语法与C语言家族(包括C++)的API调用方式非常接近。DELPHI的标准库中包含了一个名为`windows.pas`的单元,这个单元定义了大量的...
6. **传递参数和接收结果**:在Delphi中,你可以使用上述函数,传入Java接口名、方法名以及参数,调用Java方法并获取返回值。 ```delphi const ClassName = 'com/example/MyJavaClass'; MethodName = '...
API函数的调用在DELPHI中相对简单,因为DELPHI已经为大部分常见的Win32API函数提供了对应的单元。 1. **API函数的分类** - **基本管理**: 包括内存分配、任务管理、资源加载和文件操作,如kernel32单元中的函数。 ...
在本文中,我们将深入探讨如何在Delphi环境中调用有道API进行翻译,利用XML方式来处理和解析返回的结果。这个过程涉及到网络通信、API调用以及XML数据的解析等关键知识点。 首先,你需要在有道API官网注册并申请API...
WebAPI调用是软件开发中常见的一种技术,主要用于应用程序与服务器端进行数据交互。在这个场景中,我们讨论的是一个名为"opensinaapi1.0beta3"的压缩包,它包含了一个用于测试新浪API的代码库。新浪API是新浪提供的...
除了上述函数,DELPHI中的API调用还包括但不限于文件操作、内存管理、网络通信、图形绘制等多个方面。熟练掌握API函数,可以极大地扩展DELPHI应用程序的功能,使其能够处理更复杂的任务。同时,由于API函数是Windows...
delphi 利用API函数写串口。 //建立串口句柄 CommHandle := CreateFile(PChar(ComboBox1.Text),GENERIC_WRITE or GENERIC_READ, 0,nil,OPEN_EXISTING,FILE_FLAG_OVERLAPPED or FILE_ATTRIBUTE_NORMAL,0); if ...
本压缩包“Delphi源码演示如何在BASM中调用Windows API”提供了关于如何在Delphi程序中直接调用Windows API函数的示例代码,这对于那些需要进行底层系统编程或者实现特定功能的开发者来说非常有用。 在Windows操作...