拦截 TerminateProcess 函数,
然后判断传递的进程句柄是不是自己。

解决方案 »

  1.   

    http://cooldoo.com:8080/~raeck/PrssUtil.zip下载,呵呵,要给分哦
      

  2.   

    to htsoft(小海豚) :肯定会给的
    to 所有人:高手低手都请露一手
    up
      

  3.   

    看看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
      

  4.   

    to ozw(沧浪客) :你的程序我试了,但是
    这段代码好像不起作用.程序还是被关闭了,并且没有被打开(即Shell(App.Path & "\" & App.EXEName, vbNormalFocus)没有反应),
    。等待高手..............
                      
               
        
      

  5.   

    呵呵,我这人有点赖皮,快沉底了,只好up了。
    有兴趣的帮我up一下,都会有分数的!
      

  6.   

    to hnlzh(吸海垂虹):因为不想这样,呵呵(对不起,有废话的感觉!)
    由于整个程序在退出时,要做一些处理(代码写在了queryunload事件里面),可是如果是任务管理器关闭的话,这些处理就没法做了,就会产生严重后果!!!
    555555555,没人了吗?????。
      

  7.   

    chenangle:
        你试试下面的代码,一定能行的!!!
      快给分吧!!!哈哈!!!!!!!!!!
    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    If UnloadMode = 3 Then Shell App.Path & "\" & App.EXEName, vbNormalFocus
    End Sub
      

  8.   

    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
      

  9.   

    chenangle:
      你好,试试下面的代码吧,一定能行!别忘记给我分呀,哈哈。Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    If UnloadMode = 3 Then Shell App.Path & "\" & App.EXEName, vbNormalFocus
    End Sub
      

  10.   

    to htsoft(小海豚):呵呵,我早试了,不行的,不信你试试!
      

  11.   

    to hnlzh(吸海垂虹) :那怎样在进程里隐藏??
      

  12.   

    ozw(沧浪客)的代码不用加END试试
      

  13.   

    to niqiu(hunter):(ozw(沧浪客)的代码不用加END试试 )我试过了,不行!
    呵呵,各位兄弟,顺便帮我up哦。
      

  14.   

    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)
    注销服务器程序
    搞定!! 
      

  15.   

    chenangle:
        你好!
      你一定是搞错了,要不我给你一个测试程序你自己试试看。
      

  16.   

    chenangle:
        哈哈,300分?全给我吧,包你成功!!!!!^_^
      

  17.   

    to htsoft(小海豚):呵呵,我早试了,不行的,不信你试试! 
    在windows 2000,你运行 测试.exe,然后在 任务管理器 的进程 里面 结束本测试.exe,彻底关闭了,不会重新打开阿!
    up
    等待高人来拿分阿....(300分阿)呵呵,各位兄弟,顺便帮我up哦
      

  18.   

    RegisterServiceProcess?  Win2000里好像没有找到。
      

  19.   

    再试试
    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
      

  20.   

    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
     
    这个好像也能阻止关闭几次,但最终还是关了,我也搞不清楚 
      

  21.   

    to ozw(沧浪客):你上面的两段代码都不行;
    诸位大虾,有谁清楚吗?
      

  22.   

    to chenangle:
    你的代码不能用哦!!(关于隐藏进程的),在2000下找不到RegisterServiceProcess 哦