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.
解决方案 »
- 讨论系统架构(附本人稳定运行多年的系统架构)
- 利用BDE读取image字段的问题,急急急!
- 高价请人做一套外贸客户管理软件
- 跪拜,这个SQL语句怎么写啊!
- 我还在开发的类似PHP、ASP的平台,希望寻求建议!
- 请教,如何在idTCPClient与idTCPServer之间传送record型数据,record型长度可能不固定
- 数据加密
- 本人初学DELPHI:关于模拟键盘按键的问题,帮我UP,入即给分,急急急。。。。
- 再次请教:Query经过多次Edit与Post后一Applyupdates就失败的问题。
- 请问哪有有关文件压缩(如zip,arj等格式)的含源码的VCL控件?
- [-----指纹开发------]用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取句柄