如何实现一个应用程序只能打开一个进程
答案:2 悬赏:60 手机版
解决时间 2021-04-10 23:03
- 提问者网友:我的未来我做主
- 2021-04-10 19:04
如何实现一个应用程序只能打开一个进程
最佳答案
- 五星知识达人网友:撞了怀
- 2021-04-10 19:37
你可以打开你的任务管理器看看svchost.exe程序就对应着多少进程,在XP中,四个svchost.exe进程算少的,因为它对应着多个不同的系统服务,所以你这一个程序只对应一个进程的说法是不成立的。是否一个程序对应一个进程要看程序的设计,多数程序允许同时启动它的多个窗口,这时也往往会出现多个同样程序名称的进程。
全部回答
- 1楼网友:七十二街
- 2021-04-10 20:15
在开发过程中可以使用互斥对象控制应用程序只能打开一个进程。避免误操作或其他原因造成因同时打开多个应用程序而使数据录入或统计错误。本例是在工程单元中打开互斥对象,如果句柄为0,说明互斥对象不存在,创建互斥对象并运行程序,如果句柄大于0,说明存在互斥对象,程序直接退出,主要代码如下:
if openmutex(mutex_all_access,true,'mutex')=0 thenbegincreatemutex(nil,true,'mutex');
application.initialize;
application.createform(tform1, form1);
application.run;
closehandle(openmutex(mutex_all_access,true,'mutex'));
end; 使用createmutex函数创建互斥对象。
语法格式如下:
handle createmutex(
lpsecurity_attributes lpmutexattributes,
bool binitialowner,
lpctstr lpname
); 参数说明
lpmutexattributes:安全属性。
binitialowner:指定互斥对象是否拥有所有者标识。值为true时,程序创建的create process 方法能够继承互斥对象句柄。
lpname:创建的互斥对象名称。
return_value:返回创建的互斥对象句柄。 使用openmutex函数打开互斥对象。
语法格式如下:
handle openmutex(
dword dwdesiredaccess, // access flag
bool binherithandle, // inherit flag
lpctstr lpname // pointer to mutex-object name
); 参数说明
dwdesiredaccess:访问标识。
binherithandle:继承标识。
lpname:互斥对象名称
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯