防止同一程序打开N次
时 间:2008-11-22 08:46:47
作 者:andymark ID:1350 城市:深圳
摘 要:防止同一程序打开N次
正 文:
防止同一程序打开N次
ACCESS本身也不允许程序打开多次, 但如果把程序复制到其他目录, 就可以程序多开了
有什么方法禁止上述的行为呢 , 方法有好几种, 这里介绍CreateMutex 建立互斥体
有什么方法禁止上述的行为呢 , 方法有好几种, 这里介绍CreateMutex 建立互斥体
模块代码
Private Declare Function CreateMutex Lib "kernel32" Alias "CreateMutexA" (ByVal lpMutexAttributes As Long, ByVal bInitialOwner As Long, ByVal lpName As String) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
'variable constant to match if the mutex exists
Private Const ERROR_ALREADY_EXISTS = 183&
'Application Variable Declarations
Public Const AppVer = "MyApp v1.1" '这里定义程序名称
Public Function Test()
Dim Mutexvalue As Long
'*the following code would go in the starting function of your application
'either the main() or form_load() depending on how your application works
'Create an individual mutex value for the application
Mutexvalue = CreateMutex(ByVal 0&, 1, AppVer)
'If an error occured creating the mutex, that means it
'must have already existed, therefore your application
'is already running
If (Err.LastDllError = ERROR_ALREADY_EXISTS) Then
'Inform the user of running the same app twice
MsgBox "The application is already running."
'Terminate the application via the reference to it, its hObject value
CloseHandle Mutexvalue
Application.Quit acQuitSaveNone
End If
End Function
Private Declare Function CreateMutex Lib "kernel32" Alias "CreateMutexA" (ByVal lpMutexAttributes As Long, ByVal bInitialOwner As Long, ByVal lpName As String) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
'variable constant to match if the mutex exists
Private Const ERROR_ALREADY_EXISTS = 183&
'Application Variable Declarations
Public Const AppVer = "MyApp v1.1" '这里定义程序名称
Public Function Test()
Dim Mutexvalue As Long
'*the following code would go in the starting function of your application
'either the main() or form_load() depending on how your application works
'Create an individual mutex value for the application
Mutexvalue = CreateMutex(ByVal 0&, 1, AppVer)
'If an error occured creating the mutex, that means it
'must have already existed, therefore your application
'is already running
If (Err.LastDllError = ERROR_ALREADY_EXISTS) Then
'Inform the user of running the same app twice
MsgBox "The application is already running."
'Terminate the application via the reference to it, its hObject value
CloseHandle Mutexvalue
Application.Quit acQuitSaveNone
End If
End Function
补充例子
Access软件网官方交流QQ群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- Access自定义消息盒Msg...(04.28)
- Access怎么按每个月份里面...(03.09)
- Access怎么按季度来统计人...(02.26)
- Access怎么按年龄段来统计...(01.26)
- 【Access高效办公】上一年...(12.29)
- 用Access连续窗体制作的树...(11.03)
- 【Access高效办公】上一年...(10.30)
- Access制作的RGB转CM...(09.22)
- Access制作的RGB调色板...(09.15)
学习心得
最新文章
- Access快速开发平台导航箭头改...(06.15)
- Access2024官方下载,Ac...(06.11)
- Access快速开发平台--后台A...(06.03)
- 将bit字段的Null值更新为Fa...(06.01)
- 用VBA批量更改SQL SERVE...(05.30)
- 用SQL代码更改SQL Serve...(05.29)
- Access快速开发平台--图片附...(05.29)
- 如何用VBA检查表有没有设置主键(05.28)
- 用VBA来指定图表中横坐标/纵坐标...(05.25)
- 还在凭感觉建表?Access建表思...(05.25)

点击下载此附件

.gif)
