你如果要這樣的話。。。
創(chuàng)新互聯(lián)公司是一家成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì),提供網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),網(wǎng)站制作,建網(wǎng)站,定制網(wǎng)站設(shè)計(jì),網(wǎng)站開發(fā)公司,成立于2013年是互聯(lián)行業(yè)建設(shè)者,服務(wù)者。以提升客戶品牌價(jià)值為核心業(yè)務(wù),全程參與項(xiàng)目的網(wǎng)站策劃設(shè)計(jì)制作,前端開發(fā),后臺(tái)程序制作以及后期項(xiàng)目運(yùn)營(yíng)并提出專業(yè)建議和思路。
'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 "已經(jīng)保了"
end
End If
'continue enumeration
EnumWindowsProc = True
End Function
現(xiàn)在多是在form_load里驗(yàn)證的,你打開第二次也只是暫時(shí)的,后面讓他關(guān)閉就行了.
form_load之前windows form就已經(jīng)生成... 把你程序讀入內(nèi)存就算這個(gè)程序已經(jīng)被打開開始執(zhí)行了...不管你放那里都是會(huì)打開第二次的...
要讓他結(jié)束直接用Application.Exit()就行了.
程序有相應(yīng)的名稱進(jìn)程,程序運(yùn)行后在系統(tǒng)進(jìn)程后有相應(yīng)進(jìn)程,可以進(jìn)行查找。
程序運(yùn)行前先查找系統(tǒng)進(jìn)程中有沒有找到相應(yīng)的進(jìn)程,如有,給予提示,告知程序已運(yùn)行,并退出程序;如沒有,正常啟動(dòng)運(yùn)行即可。
試試:
移除行 Return False ,Function 過程的運(yùn)算,在沒有“經(jīng)歷”Return True 代碼時(shí),原值就是返回 False
當(dāng)運(yùn)算代碼進(jìn)入 Return True 時(shí),目的效果已經(jīng)完成,應(yīng)該接著跳離For回圈、或是跳離Function的代碼 Exit For 或 Exit Function