VB6如何让程序只运行一个程序实例

我用这段代码来实现这个功能PrivateSubform_load()IfApp.PrevInstanceThenmsg=App.EXEName&"正在运行请不要在次打开!... 我用这段代码来实现这个功能
Private Sub form_load()
If App.PrevInstance Then
msg = App.EXEName & "正在运行请不要在次打开!"
MsgBox msg, "48 " '给出程序已运行的提示和一惊叹号以示警告
End
End If
End Sub
但是发现一个问题、就是生成EXE文件后把这个EXE文件复制多份放在不同的目录下这样就又可以运行多个了或者在同一个目录下复制多份只要该成不同的名字也可以运行多个
我的问题就是、我想在一台电脑上只运行一个我的程序、不管用户怎么修改只能运行一个、还有就是怎么才能做到第二次运行时打开的是第一次运行时的窗口
请高手给详细的讲下怎么能实现这个功能 最好给段详细的代码或例子 先谢谢大家了
展开
 我来答
匿名用户
2013-08-13
展开全部
最简单的代码
在load事件写
'声明
private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Sub Form_Load()
if FindWindow(null,'你的程序标题')<>0 then
msgbox"程序已经运行了,请勿重复运行"
end if
end sub

你可以编译后试下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-13
展开全部
这是c#的示例:你看一下VB里面好没这个类和方法:
static void Main(string[] args)

{

bool flag=false;

System.Threading.Mutex mutex=new System.Threading.Mutex(true,"Test",out flag);

//第一个参数:true--给调用线程赋予互斥体的初始所属权

//第一个参数:互斥体的名称

//第三个参数:返回值,如果调用线程已被授予互斥体的初始所属权,则返回true

if(flag)

{

Console.Write("Running");

}

else

{

Console.Write("Another is Running");

System.Threading.Thread.Sleep(5000);//线程挂起5秒钟

Environment.Exit(1);//退出程序

}

Console.ReadLine();

或者也可以添加C#里面这引用来试试(我也是想c#可以调用VB的方法,反过来应该也可以吧)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-13
展开全部
可以找窗口的 请查阅
FindWindow API函数
原理发现同类窗口就关闭程序
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-13
展开全部
这原理只有找进程了!很简单!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式