在VB内有无现成方法判断程序自身已经运行从而避免再次启动? 补充:if App.PrevInstance then msgbox app.exename & "已经运行!"end if 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Windows 提 供 的 两 个 接 口 函 数GetModuleHandle 和GetModuleUsage 可 以 完 成 此 任 务。 具 体 方 法 如 下, 首 先 在 一 个 新 的 模 块 文 件( *.Bas) 中 声 明API 函 数。 Declare Function GetModuleHandle Lib"Kernel"(ByVallpProgName$) Declare Function GetModuleUsage Lib"Kernel"(ByVal hModule) 同 时 建 立 一 个 子 过 程, 名 字 为main, 子 过 程 中 的 代 码 如 下: Sub Main()On Error GoTo errMain‘错误处理Dim hModule% ‘模块句柄Dim AppCount% ‘应用程序的个数appPath$=app.Path + "\" ‘应用程序的启动路径hModule %=GetModuleHandle(appPath$+app.EXEName+".exe")‘获得该程序的句柄。AppCount %=GetModuleUsage(hModule)‘获得模块代码,即运行的应用程序数目。lf AppCount%>1 Then‘同一应用程序数大于1MsgBox"程序已经加载",64End ‘结束当前启动的应用程序ElscmainForm.Show ‘mainForm是程序的主窗体End lfExit SuberrMain:lf Err<>0 ThenMsgBox"启动程序时发生错误",64Exit SubEnd lfEnd Sub 在程序加载时输入:Form_Load()if App.PrevInstance then Endend ifEnd Sub to dragonleon:人家用vb就图个简单,你居然教人家这么麻烦的东东,真是吃力不好讨:) playuser的方法在NT上是不可行的。我以前用过DDE的方法做过类似的功能,不但可以检查是否已经运行了同一程序,还可以传递一些自定义的命令,比如 :激活原来的程序或是别的功能。 谢谢playuser、dragonleon、Visiona网友。很可惜,不能给dragonleon、Visiona加分。taolei说的不对,我就是在NT4上使用的,playuser的方法完全可行。 label控件的计算和显示问题 关于微软语音引擎问题,在线等待谢谢 使用api函数GetOpenFileName打开文件对话框的控件,如何在ie下模态显示,知道的兄弟帮忙呀 1000分求好的视频会议软件 PDF_In_The_Box.dll 怎么插入Tif图片 请教:一个关于从数据库中取2进制图片信息的问题!!!!请进来看看再说 VB6。0+SQL2000是否可以作办公自动化系统? VB能监控注册表吗? 请问,如何用VB实现不规则的窗体(根据图片的形状自动变化,拖拽时不会出现边框 一个关于email 的问题 怎样打开文件 "某条件只有连续三次为真,才执行某项操作”如何在vb中实现?
On Error GoTo errMain‘错误处理
Dim hModule% ‘模块句柄
Dim AppCount% ‘应用程序的个数
appPath$=app.Path + "\" ‘应用程序的启动路径
hModule %=GetModuleHandle(appPath$+app.EXEName+".exe")‘获得该程序的句柄。
AppCount %=GetModuleUsage(hModule)‘获得模块代码,即运行的应用程序数目。
lf AppCount%>1 Then‘同一应用程序数大于1
MsgBox"程序已经加载",64
End ‘结束当前启动的应用程序
Elsc
mainForm.Show ‘mainForm是程序的主窗体
End lf
Exit Sub
errMain:
lf Err<>0 Then
MsgBox"启动程序时发生错误",64
Exit Sub
End lf
End Sub
Form_Load()
if App.PrevInstance then
End
end if
End Sub
我以前用过DDE的方法做过类似的功能,不但可以检查是否已经运行了同一程序,还可以传递一些自定义的命令,比如 :激活原来的程序或是别的功能。