最简单的代码
在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
你可以编译后试下
这是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的方法,反过来应该也可以吧)
可以找窗口的 请查阅
FindWindow API函数
原理发现同类窗口就关闭程序
这原理只有找进程了!很简单!