API函数创建进程互斥体实现无法多开

易语言 2020-07-15 18:54:17

API函数创建进程互斥体实现无法多开

ret = OpenMutex (2031617, 1, “XXNBbin”)
调试输出 (ret)
.如果 (ret ≠ 0)
信息框 (“我已经启动啦”, 0, )
结束 ()
.否则
CreateMutex (nil, 1, “XXNBbin”)
.如果结束
' 纯API函数 编写创建进程互斥体实现程序不能多开

.DLL命令 CreateMutex, 整数型, "kernel32", "CreateMutexA", , 创建一个互斥体(MUTEX) 如执行成功,就返回互斥体对象的句柄;零表示出错。会设置GetLastError。即使返回的是一个有效句柄,但倘若指定的名字已经存在,GetLastError也会设为ERROR_ALREADY_EXISTS
.参数 lpMutexAttributes, SECURITY_ATTRIBUTES, , SECURITY_ATTRIBUTES,指定一个SECURITY_ATTRIBUTES结构,或传递零值(将参数声明为ByVal As 并传递零值),表示使用不允许继承的默认描述符
.参数 bInitialOwner, 整数型, , 如创建进程希望立即拥有互斥体,则设为TRUE。一个互斥体同时只能由一个线程拥有
.参数 lpName, 文本型, , 指定互斥体对象的名字。用vbNull创建一个未命名的互斥体对象。如已经存在拥有这个名字的一个事件,则打开现有的已命名互斥体。这个名字可能不与现有的事件、信号机、可等待计时器或文件映射相符;