请问,怎样控制用户对某一程序只能同时运行一次?
就是说,当该程序在运行时,用户又再次想运行该程序,怎样避免此种情况? 问题点数:0、回复次数:10Top
1 楼pcwak()回复于 2004-04-04 18:50:58 得分 0
工程-->属性-->生成-->图示
文件-->生成EXETop
2 楼lxqlogo0(群子)回复于 2004-04-04 18:54:35 得分 0
Private Sub Form_Load()
If App.PrevInstance = True Then
MsgBox "程序已经在运行中"
End
End If
End Sub
Top
3 楼pcwak()回复于 2004-04-04 18:54:59 得分 0
晕,回错帖Top
4 楼VBDN( PowerBASIC.CN )回复于 2004-04-04 19:09:30 得分 0
可以利用App对象的PrevInstance属性。
PrevInstance属性返回一个值,该值指示是否已经有前一个应用程序实例在运行。
事例代码如下:
Private Sub Form_Load()
If App.PrevInstance Then
MsgBox "程序已在运行中!"
End
End If
End SubTop
5 楼VBDN( PowerBASIC.CN )回复于 2004-04-04 19:11:54 得分 0
书剑狂生的意思是,上面的程序在开发环境中不能测试,需要生成可执行程序后才有效Top
6 楼kmzs(.:RNPA:.山水岿濛)回复于 2004-04-04 19:16:52 得分 0
嗯Top
7 楼pcwak()回复于 2004-04-04 19:19:06 得分 0
也可以用FindWindow查找窗体是否存在
Dim loghwnd As Long
Private Sub Form_Load()
loghwnd = FindWindow(vbNullString, vbNullString) '在这里修改你的参数
If loghwnd <> 0 Then
MsgBox "程序已经运行"
End
End If
End Sub
【VB声明】
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
【别名】
FindWindowA
【说明】
寻找窗口列表中第一个符合指定条件的顶级窗口(在vb里使用:FindWindow最常见的一个用途是获得ThunderRTMain类的隐藏窗口的句柄;该类是所有运行中vb执行程序的一部分。获得句柄后,可用api函数GetWindowText取得这个窗口的名称;该名也是应用程序的标题)
【返回值】
Long,找到窗口的句柄。如未找到相符窗口,则返回零。会设置GetLastError
【备注】
很少要求同时按类与窗口名搜索。为向自己不准备参数传递一个零,最简便的办法是传递vbNullString常数
示例
Dim hw& , cnt&
Dim rttitle As String * 256
hw& = FindWindow("ThunderRT5Main", vbNullString) ' ThunderRTMain under VB4
cnt = GetWindowText(hw& , rttitle, 255)
MsgBox Left$(rttitle, cnt), 0, "RTMain title"
【参数表】
lpClassName ---- String,指向包含了窗口类名的空中止(C语言)字串的指针;或设为零,表示接收任何类
lpWindowName --- String,指向包含了窗口文本(或标签)的空中止(C语言)字串的指针;或设为零,表示接收任何窗口标题
Top
8 楼yinweihong()回复于 2004-04-04 19:28:15 得分 0
markTop
9 楼liyan010(我是大坏蛋)回复于 2004-04-04 19:34:32 得分 0
If App.PrevInstance = True Then
End
End if
Top
10 楼liyan010(我是大坏蛋)回复于 2004-04-04 19:35:28 得分 0
pcwak(书剑狂生[MS MVP]),晕,这也能回错帖啊?
你是不是用什么发帖软件回的帖啊?Top




