| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1436 人关注过本帖
标题:寻找禁止重复调用方案
只看楼主 加入收藏
健康我
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2014-10-28
结帖率:50%
收藏
已结贴  问题点数:10 回复次数:6 
寻找禁止重复调用方案
我用vb调用外部程序1.exe,点击command时shell程序1.exe,这时问题来了,1.exe已经调用出来,可是再点击1.exe又出来一次。有没办法多次点击按钮时,调用的是这个已经打开的1.exe,不要再重新打开。新手,请教大家,不要不理我呀!
搜索更多相关主题的帖子: command 
2014-10-28 12:00
健康我
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2014-10-28
收藏
得分:0 
给点意见嘛
2014-10-28 12:21
VB丶小宇
Rank: 3Rank: 3
来 自:河北省石家庄市
等 级:论坛游侠
帖 子:172
专家分:142
注 册:2013-3-11
收藏
得分:5 
菜鸟还没想到。。。
图片附件: 游客没有浏览图片的权限,请 登录注册

编程最蛋疼的事:不是编程多么累,而是编完后,一点运行,出现四个字:程序错误。。。
2014-10-28 12:41
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:5 
网上找的检查进程是否运行的代码,可以用
Private Function CheckExeIsRun(exeName As String) As Boolean
  On Error GoTo Err
  Dim WMI
  Dim Obj
  Dim Objs
  CheckExeIsRun = False
  Set WMI = GetObject("WinMgmts:")
  Set Objs = WMI.InstancesOf("Win32_Process")
  For Each Obj In Objs
    If (InStr(UCase(exeName), UCase(Obj.Description)) <> 0) Then
      CheckExeIsRun = True
      If Not Objs Is Nothing Then Set Objs = Nothing
      If Not WMI Is Nothing Then Set WMI = Nothing
      Exit Function
    End If
  Next
  If Not Objs Is Nothing Then Set Objs = Nothing
  If Not WMI Is Nothing Then Set WMI = Nothing
  Exit Function
Err:
  If Not Objs Is Nothing Then Set Objs = Nothing
  If Not WMI Is Nothing Then Set WMI = Nothing
End Function
'在命令按钮里调用,检查qq是否运行,吧QQ.EXE换成1.EXE就可以达到你的要求了
Private Sub Command1_Click()
  If CheckExeIsRun("qq.exe") Then
    MsgBox "你的QQ已经运行,可以聊天!"
  Else
    MsgBox "你的QQ没有运行"
  End If
End Sub
2014-10-28 13:00
VB丶小宇
Rank: 3Rank: 3
来 自:河北省石家庄市
等 级:论坛游侠
帖 子:172
专家分:142
注 册:2013-3-11
收藏
得分:0 
回复 4 楼 xzlxzlxzl
好代码,顶一个。
根据xzlxzlxzl所提供的代码:
界面:
图片附件: 游客没有浏览图片的权限,请 登录注册

添加一个模块,一个Cmd按钮。
模块代码:
程序代码:
Public Function CheckExeIsRun(exeName As String) As Boolean       '将Pravite 改为 Public   (全局)
  On Error GoTo Err
  Dim WMI
  Dim Obj
  Dim Objs
  CheckExeIsRun = False
  Set WMI = GetObject("WinMgmts:")
  Set Objs = WMI.InstancesOf("Win32_Process")
  For Each Obj In Objs
    If (InStr(UCase(exeName), UCase(Obj.Description)) <> 0) Then
      CheckExeIsRun = True
      If Not Objs Is Nothing Then Set Objs = Nothing
      If Not WMI Is Nothing Then Set WMI = Nothing
      Exit Function
    End If
  Next
  If Not Objs Is Nothing Then Set Objs = Nothing
  If Not WMI Is Nothing Then Set WMI = Nothing
  Exit Function
Err:
  If Not Objs Is Nothing Then Set Objs = Nothing
  If Not WMI Is Nothing Then Set WMI = Nothing
End Function


Cmd代码:
程序代码:
Private Sub Command1_Click()           
If CheckExeIsRun("工程1.exe") Then              'IF条件判断语句,判断工程1.exe是否打开
    MsgBox "工程1已经打开,您不能重复打开!"       '如果已经打开,则弹出提示框,提示您,工程已经打开,不能重复打开。
Else                                           
    Shell App.Path & "\" & "工程1.exe"           '如果没有打开,则打开工程1.exe
End If
End Sub

编程最蛋疼的事:不是编程多么累,而是编完后,一点运行,出现四个字:程序错误。。。
2014-10-28 13:23
健康我
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2014-10-28
收藏
得分:0 
回复 5 楼 VB 丶小宇
非常感谢两位,问题解决了
2014-10-28 13:52
健康我
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2014-10-28
收藏
得分:0 
回复 4 楼 xzlxzlxzl
网上找半天,不如你几句话。3Q
2014-10-28 14:41
快速回复:寻找禁止重复调用方案
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028320 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved