program test;uses
SysUtils,
Windows;
var
HMutex: THandle;
h:THandle; //应用程序句柄begin
//程序只执行一次
HMutex := CreateMutex(nil, False, '54BAB749-13BA-4468-84D6-08ABC2A6F837');
if WaitForSingleObject(hMutex, 0) = wait_TimeOut then
begin
Exit;
end;
h := //这里怎么取应用程序句柄
//这里不用Application.Handle; 这种方式。因为有些原因需要应用程序比较小。用 Application 对象的话,就可引用Forms单元,应用程序就会变大了很多。
//没有引用Forms时只有40K多,用了Forms后就变成360多K了~~想看这里有没有直接用API函数来取得的end.
SysUtils,
Windows;
var
HMutex: THandle;
h:THandle; //应用程序句柄begin
//程序只执行一次
HMutex := CreateMutex(nil, False, '54BAB749-13BA-4468-84D6-08ABC2A6F837');
if WaitForSingleObject(hMutex, 0) = wait_TimeOut then
begin
Exit;
end;
h := //这里怎么取应用程序句柄
//这里不用Application.Handle; 这种方式。因为有些原因需要应用程序比较小。用 Application 对象的话,就可引用Forms单元,应用程序就会变大了很多。
//没有引用Forms时只有40K多,用了Forms后就变成360多K了~~想看这里有没有直接用API函数来取得的end.
解决方案 »
- 根据 系统版本 定义 结构体??
- FastReport4.7.1安装问题
- strLen1:=StrLen(edit6.text);出错 急!!
- 大家好!我想提取字段的内容唯一值,应该怎样实现呢!谢谢
- web中调用dll(是否能调用exe)
- 请问如何判断窗体是否打开?内详!急切等待!
- 我是新新手,问题很简单,可能描述不清楚,请老师们指教,我尽量说清楚!(100分)
- 再开一贴,想问想用最少的资源开发系统,语言选择vb和delphi
- 连接Oracle问题
- internet上文件共镶的问题?
- [-----指纹开发------]用Delphi进行指纹开发~~
- HTMLInputElement.form.submit 报错 access violation
GetCurrentProcess取到的值和Application.Handle值是不一样的?Application.Handle是主窗口的句柄吗?有时候GetCurrentProcess取到期是-1或0是怎么回事?
application.handle是程序在TaskBar上的窗体的句柄
无窗口的话,ClassName类名总有吧?应该可以用FindWindow来查找
Application.Handle应用程序句柄,实际上是一个窗口句柄,创建过程是这么一句: FHandle := CreateWindow(WindowClass.lpszClassName, PChar(FTitle),
WS_POPUP or WS_CAPTION or WS_CLIPSIBLINGS or WS_SYSMENU
or WS_MINIMIZEBOX,
GetSystemMetrics(SM_CXSCREEN) div 2,
GetSystemMetrics(SM_CYSCREEN) div 2,
0, 0, 0, 0, HInstance, nil);你的是无窗口(Console)程序,并没有创建窗口,无法使用它来取到句柄。
而它也不是主窗口句柄,Application.MainForm.Handle才是主窗口句柄。进程句柄和窗口句柄是完全不同的。如果GetCurrentProcess取不到,用GetCurrentProcessId取进程Id,再用OpenProcess取句柄