重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
你如果要这样的话。。。
创新互联公司是一家成都做网站、成都网站设计,提供网页设计,网站设计,网站制作,建网站,定制网站设计,网站开发公司,成立于2013年是互联行业建设者,服务者。以提升客户品牌价值为核心业务,全程参与项目的网站策划设计制作,前端开发,后台程序制作以及后期项目运营并提出专业建议和思路。
'Form 代码=========================
private sub form_load
EnumWindows AddressOf EnumWindowsProc, ByVal 0
End Sub
'Module代码========================
'Add this code to a module
Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Boolean
Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Public Function EnumWindowsProc(ByVal hwnd As Long, ByVal lParam As Long) As Boolean
Dim sSave As String, Ret As Long
Ret = GetWindowTextLength(hwnd)
sSave = Space(Ret)
GetWindowText hwnd, sSave, Ret + 1
If Trim(sSave) = "Form2" Then '你程序的窗体名字*******************
Debug.Print Str$(hwnd) + " " + sSave
msgbox "已经保了"
end
End If
'continue enumeration
EnumWindowsProc = True
End Function
现在多是在form_load里验证的,你打开第二次也只是暂时的,后面让他关闭就行了.
form_load之前windows form就已经生成... 把你程序读入内存就算这个程序已经被打开开始执行了...不管你放那里都是会打开第二次的...
要让他结束直接用Application.Exit()就行了.
程序有相应的名称进程,程序运行后在系统进程后有相应进程,可以进行查找。
程序运行前先查找系统进程中有没有找到相应的进程,如有,给予提示,告知程序已运行,并退出程序;如没有,正常启动运行即可。
试试:
移除行 Return False ,Function 过程的运算,在没有“经历”Return True 代码时,原值就是返回 False
当运算代码进入 Return True 时,目的效果已经完成,应该接着跳离For回圈、或是跳离Function的代码 Exit For 或 Exit Function