可以在程序第一次運行的時候往系統(tǒng)注冊表的指定位置寫入一個值,這樣只要檢測注冊表中是否有這個值就知道是首次運行還是再次運行了
專注于為中小企業(yè)提供成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設(shè)服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)天山免費做網(wǎng)站提供優(yōu)質(zhì)的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了1000多家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
安裝一個sandboxie(沙盤),然后保存一個沙盤鏡像,每次打開沙盤運行程序就恢復一下,隨便軟件做的什么限制,都可以重復打開。
方法一:通過Diagnostics.Process.GetProcessesByName函數(shù)來檢測程序是否已經(jīng)啟動
Imports System.Windows.Forms
Module Module1
Sub Main()
'檢測多重啟動
If Diagnostics.Process.GetProcessesByName( _
Diagnostics.Process.GetCurrentProcess.ProcessName).Length 1 Then
MessageBox.Show("已經(jīng)一個實例的本程序正在運行。")
Return
End If
Application.Run(New Form())
End Sub
End Module
不過這個方法有個缺點,如果用戶改了下exe的名字就檢測不到了,所以更好的方法如下
方法2:使用Mutex
Imports System.Windows.Forms
Module Module1
Sub Main()
Dim createdNew As Boolean
' 創(chuàng)建mutex
Dim mutex As System.Threading.Mutex = _
New System.Threading.Mutex(True, "YourAppName", createdNew)
If createdNew = False Then
MessageBox.Show("已經(jīng)一個實例的本程序正在運行。")
Return
End If
Application.Run(New Form())
' 釋放mutex
mutex.ReleaseMutex()
End Sub
End Module
因為你Dim lByte As Byte 沒有聲名數(shù)組,
lSWiter.WriteByte(Nothing) '這句話也是錯誤的,你把文件流給寫入空了,所以第二次運行打開文件就沒有數(shù)據(jù)了。
多調(diào)試,跟蹤數(shù)據(jù),可以多學點經(jīng)驗。
給個簡單點的思路吧:寫注冊表在程序初始化(即在本機中第一次運行時候)在注冊表中寫入個鍵值,用于標識當程序第一次運行的時候,閱讀指定注冊表中鍵值,假設(shè)為1標識今天已經(jīng)運行了,如果為0表示今天還沒運行那么,程序運行時候并設(shè)置該注冊表鍵值為1,這樣當一次運行完后,后面當天在運行就自動退出==最好是設(shè)置兩個標識,一個表示天,一個標識程序當天是否已經(jīng)運行
本文標題:包含vb.net只運行一次的詞條
網(wǎng)頁鏈接:http://www.rwnh.cn/article8/doohsop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、ChatGPT、網(wǎng)站建設(shè)、Google、品牌網(wǎng)站建設(shè)、軟件開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)