我想使程序不在应用程序栏中出现,用户不能轻易的关掉。http://expert.csdn.net/Expert/topic/1121/1121662.xml?temp=.9279596
上说app.TaskVisible =False能说的具体点吗?我是菜鸟的说

解决方案 »

  1.   

    app.taskvisible=false好像只能使窗体不可见,但是还是可以在任务栏中看见。以前有人介绍了一个api:RegisterServiceProcess(Process ID:Long,Type:Long)
    发现该函数98下在kernel32.dll中。但xp中就没有这个api了。不知2000中如何呢?请高手解答!!!谢谢
      

  2.   

    用VB在Win2000下隐身非常难,这是2000与98的安全机制不同有关,至今没有发现有什么关于2000下vb程序完全隐身的文章。你所说的app.TaskVisible =False仅仅只是使你的应用程序在2000任务管理器中的[应用程序]栏隐身,在[进程]栏很轻松的就看你的这个程序的进程信息。网络上有许多关于VC在2000下完全隐身的方法,主要是动态嵌入其它进程等方式,但把它们改为VB相信难度太大了。
      

  3.   

    有人能提供一点有关的源程序吗?
    vb,vc都可以呀
      

  4.   

    这是一个老问题了,同意xfyxq,没有什么好办法让vb的程序隐身的,即使是用服务控件做成服务也不行。
      

  5.   

    也许看看<<windows核心编程>>会有帮助
    这可能还涉及到GUI方面的知识
      

  6.   

    2000下要隐身就要在其他进程里开辟一块内存空间(用VirtualAloc函数),再在这块内存空间里建立自己的进程(CreateRemoteThread)。这样在资源管理器里就看不见自己的程序了,被影响的进程只是比平时多占用一些内存空间,很难被发现。
    这涉及到重定位和函数动态导入的问题。
    这些技术在VB下很难实现。最好用c语言,这是大多数木马程序的隐身技术。RegisterServiceProcess(Process ID:Long,Type:Long)
    这条函数在2000下不存在。
      

  7.   

    Public Const SW_HIDE = 0  '隐藏窗口,活动状态给令一个窗口
    Public Const GW_OWNER = 4 '寻找窗口的所有者Declare Function GetWindow Lib "user32" Alias "GetWindow" (ByVal hwnd As _
    Long, ByVal wCmd As Long) As LongDeclare Function ShowWindow Lib "user32" Alias "ShowWindow" (ByVal hwnd _
    As Long, ByVal nCmdShow As Long) As Long 再将下面的代码添加到窗体的Load事件中即可实现程序不在任务栏中显示的目的:Dim rc As Long
    Dim OwnerhWnd As Long'让窗体不可见
    Me.Visible = False
    '从任务管理器列表中移除
    OwnerhWnd = GetWindow(Me.hWnd, GW_OWNER)
    rc = ShowWindow(OwnerhWnd, SW_HIDE)