重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
可以在程序第一次运行的时候往系统注册表的指定位置写入一个值,这样只要检测注册表中是否有这个值就知道是首次运行还是再次运行了
专注于为中小企业提供成都网站制作、成都做网站、外贸营销网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业天山免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了1000多家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
安装一个sandboxie(沙盘),然后保存一个沙盘镜像,每次打开沙盘运行程序就恢复一下,随便软件做的什么限制,都可以重复打开。
方法一:通过Diagnostics.Process.GetProcessesByName函数来检测程序是否已经启动
Imports System.Windows.Forms
Module Module1
Sub Main()
'检测多重启动
If Diagnostics.Process.GetProcessesByName( _
Diagnostics.Process.GetCurrentProcess.ProcessName).Length 1 Then
MessageBox.Show("已经一个实例的本程序正在运行。")
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
' 创建mutex
Dim mutex As System.Threading.Mutex = _
New System.Threading.Mutex(True, "YourAppName", createdNew)
If createdNew = False Then
MessageBox.Show("已经一个实例的本程序正在运行。")
Return
End If
Application.Run(New Form())
' 释放mutex
mutex.ReleaseMutex()
End Sub
End Module
因为你Dim lByte As Byte 没有声名数组,
lSWiter.WriteByte(Nothing) '这句话也是错误的,你把文件流给写入空了,所以第二次运行打开文件就没有数据了。
多调试,跟踪数据,可以多学点经验。
给个简单点的思路吧:写注册表在程序初始化(即在本机中第一次运行时候)在注册表中写入个键值,用于标识当程序第一次运行的时候,阅读指定注册表中键值,假设为1标识今天已经运行了,如果为0表示今天还没运行那么,程序运行时候并设置该注册表键值为1,这样当一次运行完后,后面当天在运行就自动退出==最好是设置两个标识,一个表示天,一个标识程序当天是否已经运行