关于防止程序多重运行的问题

吴宏伟 2008-11-15 10:45:16
在写程序时有一个问题解决不了,特来求教高手指点。
此程序需要在后台做一些操作,并且程序中窗体的Visible和ShowInTaskbar属性都已经设为False,程序将来运行时,可以放到任何一个目录中。
我现在想做到,此程序的一个实例启动后(任意目录中的),先判断是否有其它的实例正在运行,如果有就循环等待其它程序实例结束后再继续执行。
程序的其它功能能已经做好了,现在就在这一个功能上卡壳了。
试过几个方法都不太理想:
1、用CreateFile 带FILE_FLAG_DELETE_ON_CLOSE创建临时文件。
2、用CreateMutex创建约定名称的互斥体。
3、用BroadcastSystemMessage或PostMessage传递自定义消息。
这几种方法都试了一下,好像都存在先前实例非正常结束,没有正确关闭某句柄,导致后面运行的实例不能正常判断先前的程序已经结束。
也许是我对这几个函数的用法不太了解,希望高手给个解决方案。不甚感谢!

App.PrevInstance 属性只能判断同一位置的实例。如果两个程序在不同的文件夹就不行了。
...全文
1599 60 打赏 收藏 转发到动态 举报
写回复
用AI写文章
60 条回复
切换为时间正序
请发表友善的回复…
发表回复
ahjoe 2009-08-02
  • 打赏
  • 举报
回复
用CreateMutex可以。自动释放。
doomgnu 2009-08-01
  • 打赏
  • 举报
回复
App.PrevInstance
yangke1994 2009-07-25
  • 打赏
  • 举报
回复
Private Sub Form_Load()
If App.PrevInstance Then End
End Sub
hqhcqhao 2009-07-25
  • 打赏
  • 举报
回复
学习了,受教了!!
一笑拔剑 2009-06-19
  • 打赏
  • 举报
回复
CreateMutex还有vb自带的一个apint的属性都可以做

CreateMutex 不知道你跟过代码没有

getlasterror值如果是废弃的话

不妨碍判断的,因为如果有这个互斥体的话

那么getlasterror就是ERROR_ALREADY_EXISTS

你不需要对这个互斥体进行操作 废弃不会影响你使用
rmini 2009-06-19
  • 打赏
  • 举报
回复
有用
灵易联盟 2009-06-04
  • 打赏
  • 举报
回复
这贴老老了,估计LZ都失踪了~~

呵呵~~

感觉文件独占法~~ACTIVE部件法比较实用~~

REG法用过,不太理想~~INI配置文件法,其实中REG法类似~
王集鹄 2009-06-04
  • 打赏
  • 举报
回复
[img=http://p.blog.csdn.net/images/p_blog_csdn_net/zswang/%E7%85%A7%E7%9B%B8.gif]图[/img]
c_hua6280 2009-06-04
  • 打赏
  • 举报
回复
纯属路过。
ptwhite 2009-06-04
  • 打赏
  • 举报
回复
69348
王集鹄 2009-06-04
  • 打赏
  • 举报
回复
[img=http://p.blog.csdn.net/images/p_blog_csdn_net/zswang/%E9%B9%BF%E8%BF%87.gif]图[/img]
王集鹄 2009-06-04
  • 打赏
  • 举报
回复
纯属路过。
c_hua6280 2009-06-04
  • 打赏
  • 举报
回复
有用
c_hua6280 2009-06-04
  • 打赏
  • 举报
回复
1111
c_hua6280 2009-06-04
  • 打赏
  • 举报
回复
[Quote=引用 44 楼 vbnewer 的回复:]
小经验,有用的。
[/Quote]
11
vbnewer 2009-05-29
  • 打赏
  • 举报
回复
小经验,有用的。
mqmelon 2009-05-29
  • 打赏
  • 举报
回复
标记,查看.
volcanol 2009-05-27
  • 打赏
  • 举报
回复
mark
mybelta2 2009-05-11
  • 打赏
  • 举报
回复
LS的
帮顶
rmini 2009-05-03
  • 打赏
  • 举报
回复
值得学习,帮顶
加载更多回复(38)

1,488

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧