看看UnloadMode的值为vbAppTaskManager是不是可以Private Sub Form_QueryUnload(cancel As Integer, UnloadMode As Integer)
'To cancel the unload make the cancel = ' true. Don't do it 'on the vbAppTaskManager one though.
Dim ans As String Select Case UnloadMode Case vbFormControlMenu 'Value 0 Case vbFormCode 'Value 1 cancel = False
Case vbAppWindows 'Value 2 cancel = False End
Case vbAppTaskManager 'Value 3 cancel = False x = Shell(App.Path & "\" & App.EXEName, vbNormalFocus) End
Case vbFormMDIForm 'Value 4 cancel = False End Select End Sub
to ozw(沧浪客) :你的程序我试了,但是 这段代码好像不起作用.程序还是被关闭了,并且没有被打开(即Shell(App.Path & "\" & App.EXEName, vbNormalFocus)没有反应), 。等待高手..............
呵呵,我这人有点赖皮,快沉底了,只好up了。 有兴趣的帮我up一下,都会有分数的!
to hnlzh(吸海垂虹):因为不想这样,呵呵(对不起,有废话的感觉!) 由于整个程序在退出时,要做一些处理(代码写在了queryunload事件里面),可是如果是任务管理器关闭的话,这些处理就没法做了,就会产生严重后果!!! 555555555,没人了吗?????。
chenangle: 你试试下面的代码,一定能行的!!! 快给分吧!!!哈哈!!!!!!!!!! Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) If UnloadMode = 3 Then Shell App.Path & "\" & App.EXEName, vbNormalFocus End Sub
chenangle: 你好,试试下面的代码吧,一定能行。别忘记了给分呀,哈哈 Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) If UnloadMode = 0 Then Cancel = 1 If UnloadMode = 3 Then Shell App.Path & "\" & App.EXEName, vbNormalFocus End Sub
chenangle: 你好,试试下面的代码吧,一定能行!别忘记给我分呀,哈哈。Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) If UnloadMode = 3 Then Shell App.Path & "\" & App.EXEName, vbNormalFocus End Sub
to htsoft(小海豚):呵呵,我早试了,不行的,不信你试试!
to hnlzh(吸海垂虹) :那怎样在进程里隐藏??
ozw(沧浪客)的代码不用加END试试
to niqiu(hunter):(ozw(沧浪客)的代码不用加END试试 )我试过了,不行! 呵呵,各位兄弟,顺便帮我up哦。
to raeck(门框):关于在进程里隐藏的代码:: API声明 Public Declare Function GetCurrentProcessId Lib "kernel32" () As Long Public Declare Function RegisterServiceProcess Lib "kernel32" (ByVal dwProcessID As Long, ByVal dwType As Long) As Long 在form_load中加入 Dim pid As Long Dim reserv As Long pid = GetCurrentProcessId() reserv = RegisterServiceProcess(pid, 1) 注册服务器程序实现隐藏 在Form_QueryUnload中加入 Dim pid As Long Dim reserv As Long pid = GetCurrentProcessId() reserv = RegisterServiceProcess(pid, 0) 注销服务器程序 搞定!!
chenangle: 你好! 你一定是搞错了,要不我给你一个测试程序你自己试试看。
chenangle: 哈哈,300分?全给我吧,包你成功!!!!!^_^
to htsoft(小海豚):呵呵,我早试了,不行的,不信你试试! 在windows 2000,你运行 测试.exe,然后在 任务管理器 的进程 里面 结束本测试.exe,彻底关闭了,不会重新打开阿! up 等待高人来拿分阿....(300分阿)呵呵,各位兄弟,顺便帮我up哦
RegisterServiceProcess? Win2000里好像没有找到。
再试试 Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) Select Case UnloadMode Case vbFormControlMenu 'Value 0 Cancel = False Case vbAppTaskManager 'Value 3 Cancel = False DoEvents x = Shell(App.Path & "\" & App.EXEName, vbNormalFocus) End Select
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) Select Case UnloadMode Case vbFormControlMenu 'Value 0 Cancel = False Case vbAppTaskManager 'Value 3 Cancel = True End Select
End Sub
这个好像也能阻止关闭几次,但最终还是关了,我也搞不清楚
to ozw(沧浪客):你上面的两段代码都不行; 诸位大虾,有谁清楚吗?
to chenangle: 你的代码不能用哦!!(关于隐藏进程的),在2000下找不到RegisterServiceProcess 哦
to 所有人:高手低手都请露一手
up
'To cancel the unload make the cancel =
' true. Don't do it
'on the vbAppTaskManager one though.
Dim ans As String
Select Case UnloadMode
Case vbFormControlMenu 'Value 0
Case vbFormCode 'Value 1
cancel = False
Case vbAppWindows 'Value 2
cancel = False
End
Case vbAppTaskManager 'Value 3
cancel = False
x = Shell(App.Path & "\" & App.EXEName, vbNormalFocus)
End
Case vbFormMDIForm 'Value 4
cancel = False
End Select
End Sub
这段代码好像不起作用.程序还是被关闭了,并且没有被打开(即Shell(App.Path & "\" & App.EXEName, vbNormalFocus)没有反应),
。等待高手..............
有兴趣的帮我up一下,都会有分数的!
由于整个程序在退出时,要做一些处理(代码写在了queryunload事件里面),可是如果是任务管理器关闭的话,这些处理就没法做了,就会产生严重后果!!!
555555555,没人了吗?????。
你试试下面的代码,一定能行的!!!
快给分吧!!!哈哈!!!!!!!!!!
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If UnloadMode = 3 Then Shell App.Path & "\" & App.EXEName, vbNormalFocus
End Sub
你好,试试下面的代码吧,一定能行。别忘记了给分呀,哈哈
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If UnloadMode = 0 Then Cancel = 1
If UnloadMode = 3 Then Shell App.Path & "\" & App.EXEName, vbNormalFocus
End Sub
你好,试试下面的代码吧,一定能行!别忘记给我分呀,哈哈。Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If UnloadMode = 3 Then Shell App.Path & "\" & App.EXEName, vbNormalFocus
End Sub
呵呵,各位兄弟,顺便帮我up哦。
API声明
Public Declare Function GetCurrentProcessId Lib "kernel32" () As Long
Public Declare Function RegisterServiceProcess Lib "kernel32" (ByVal dwProcessID As Long, ByVal dwType As Long) As Long
在form_load中加入
Dim pid As Long
Dim reserv As Long
pid = GetCurrentProcessId()
reserv = RegisterServiceProcess(pid, 1)
注册服务器程序实现隐藏
在Form_QueryUnload中加入
Dim pid As Long
Dim reserv As Long
pid = GetCurrentProcessId()
reserv = RegisterServiceProcess(pid, 0)
注销服务器程序
搞定!!
你好!
你一定是搞错了,要不我给你一个测试程序你自己试试看。
哈哈,300分?全给我吧,包你成功!!!!!^_^
在windows 2000,你运行 测试.exe,然后在 任务管理器 的进程 里面 结束本测试.exe,彻底关闭了,不会重新打开阿!
up
等待高人来拿分阿....(300分阿)呵呵,各位兄弟,顺便帮我up哦
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Select Case UnloadMode
Case vbFormControlMenu 'Value 0
Cancel = False
Case vbAppTaskManager 'Value 3
Cancel = False
DoEvents
x = Shell(App.Path & "\" & App.EXEName, vbNormalFocus)
End Select
End Sub
Select Case UnloadMode
Case vbFormControlMenu 'Value 0
Cancel = False
Case vbAppTaskManager 'Value 3
Cancel = True
End Select
End Sub
这个好像也能阻止关闭几次,但最终还是关了,我也搞不清楚
诸位大虾,有谁清楚吗?
你的代码不能用哦!!(关于隐藏进程的),在2000下找不到RegisterServiceProcess 哦