vb 检测程序是否正在运行,若正在运行则显示窗体

现在在用vb写程序,有一个功能是完全隐藏(就是托盘图标和任务栏都不显示但是继续运行),现在希望加上的功能是在已经运行的时候再次尝试双击运行程序时,原先完全隐藏的程序显示出... 现在在用vb写程序,有一个功能是完全隐藏(就是托盘图标和任务栏都不显示但是继续运行),现在希望加上的功能是在已经运行的时候再次尝试双击运行程序时,原先完全隐藏的程序显示出来,包括窗体、任务栏图标和任务栏信息。
希望给出详细代码!最好可以给一些注释解释一下
展开
 我来答
百度网友bdb9803
2015-05-11 · TA获得超过1.1万个赞
知道大有可为答主
回答量:1.1万
采纳率:53%
帮助的人:9924万
展开全部

VB遍历进程查找窗口,这个过程很繁琐,而且代码量很大,所以我的代码用了巧妙的方法,在运行时在注册表保存了窗口句柄,这样就不用再查找了。测试通过,环境Win7+VB6:

Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Const SW_SHOW = 5

Private Sub Command1_Click()
Me.Hide
End Sub

Private Sub Form_Load()
Dim hwd As Long

If App.PrevInstance Then
  MsgBox "程序已经运行!"
  hwd = CLng(GetSetting(App.EXEName, "App", "MyHwnd"))
  ShowWindow hwd, SW_SHOW
  End
Else
  SaveSetting App.EXEName, "App", "MyHwnd", Me.hwnd
End If
End Sub
更多追问追答
追问
我想问一下,如果这样的话把主程序复制放到另外一个路径会不会仍然可以重复运行?
追答
不会,和路径无关!
bd5057
推荐于2017-12-15 · TA获得超过879个赞
知道大有可为答主
回答量:1242
采纳率:100%
帮助的人:1083万
展开全部

'一、form_load中

If App.PrevInstance Then'程序已经运行

    ‘获得已运行程的句柄,然后发送自定义结构的消息

    Exit sub

End If

'二、hook消息,显示程序

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式