VB中,怎样使程序在CTRL+ALT+DEL窗口中不显示?

zhangzheng818 2000-11-30 11:20:00
1)我的程序需要自运行,这已经解决!
2)还需要Win98系统无法关闭!就象系统“服务程序”那样,在CTRL+ALT+Del出现的“关闭程序”窗口中不显示!如何解决?请高手指点一二!谢了!
3)最好给出源代码! :-)
...全文
258 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
skt642 2001-05-31
  • 打赏
  • 举报
回复
81983关注!
Flyinsky 2000-12-01
  • 打赏
  • 举报
回复
最简单的方法是你可以在“Private Sub Form_Load()”下加入以下语句:App.TaskVisible = False

复杂一点的:
首先在声明中加入:
Public Declare Function GetCurrentProcessId Lib "kernel32" () As Long
Public Declare Function GetCurrentProcess Lib "kernel32" () As Long
Public Declare Function RegisterServiceProcess Lib "kernel32" (ByVal dwProcessID As Long, ByVal dwType As Long) As Long
Public Const RSP_SIMPLE_SERVICE = 1
Public Const RSP_UNREGISTER_SERVICE = 0
之后程序中加入:
Public Sub RemoveProgramFromList()
Dim lngProcessID As Long
Dim lngReturn As Long

lngProcessID = GetCurrentProcessId()
lngReturn = RegisterServiceProcess(pid, RSP_SIMPLE_SERVICE)
End Sub
就可以了。

或者干脆禁止这三个功能键:
在声明中加入:
Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" _
(ByVal uAction As Long, ByVal uParam As Long, lpvParam As Any, ByVal fuWinIni As Long) As Long

Private Const SPI_SCREENSAVERRUNNING = 97
在Form Load中加入:
Dim Ret As Long
Dim pOld As Boolean
Ret = SystemParametersInfo(SPI_SCREENSAVERRUNNING, True, pOld, 0)
在Form Unload中加入:
Dim Ret As Long
Dim pOld As Boolean
Ret = SystemParametersInfo(SPI_SCREENSAVERRUNNING, False, pOld, 0)
这样就可以保证程序在运行时无法用CTRL+ALT+DEL来激活进程窗口,也可以保证程序关闭后CRL+ALT+DEL可以激活进程窗口。
pgfan 2000-11-30
  • 打赏
  • 举报
回复
这些函数在 VB 自带的 win32api.txt 中并没有(微软经常这么干),只有自己去找了。
zhangzheng818 2000-11-30
  • 打赏
  • 举报
回复
我刚才都试过,还是不行!
提醒一下:我是在VB6.0 下!!并没有发现 Systemmetersinfo2、RegisterServiceProcess!!

请大家继续关注!再加 10 分
nerk 2000-11-30
  • 打赏
  • 举报
回复
Sorry,在98下可以隐藏程序。
(但只限于98下,2000下这个函数已经没有了)
Dim regServ As Long
pid = GetCurrentProcessId()
regServ = RegisterServiceProcess(pid, RSP_SIMPLE_SERVICE)
nerk 2000-11-30
  • 打赏
  • 举报
回复
在Win98下是不能使程序不在CTRL+ALT+DEL中出现,除非屏蔽CTRL+ALT+DEL,即使用API
dim pOld as boolean
SystemParametersInfo 97, 1, pOld, 0
(别忘了程序结束时SystemParametersInfo 97, 0, pOld, 0)
这样用户按CTRL+ALT+DEL会没有反应。

在win2000下可以app.TaskVisible=false,再高级一点就是把程序做成系统服务。
pgfan 2000-11-30
  • 打赏
  • 举报
回复
我的办法是欺骗 Windows ,让它以为现在运行的是屏幕保护程序,就不响应键盘操作。
用 SystemParametersInfo2,uAction用SPI_SCREENSAVERRUNNING,试试看。
zhangzheng818 2000-11-30
  • 打赏
  • 举报
回复
作者:我现在加分了!请大家关注!
//--------------------------------------------------------------------------- //--------------------------------------------------------------------------- //作者  :黎富平 //网上呢称:聪聪 //Home Page :http://www.soft520.com //E-Mail :admin@soft520.com //日期  :2004-8-23 //功能  :根据BCB_FANS(四大名捕之追杀令)在2000下屏蔽Ctrl + Alt + Del组合键的 //     技术,在Borland C++Builder 6.0 Patch4下编写远程线程注入的代码,封装 //     成DLL并输出EnabledKey和DisabledKey两个函数,使得可以在Delphi,VB等程 //     可以使用,本程序在Windows Server 2003文版平台下面测试通过 //开发语言:Borland C++Builder 6.0 Patch4 //文件说明:SASHOOK.dll  屏蔽Ctrl + Alt + Del的DLL //     RunDLL.dll  负责将SASHOOK.dll远程线程注入的DLL,输出EnabledKey和 //     DisabledKey两个函数 //     RunDLLExample.exe 对RunDLL.dll的两个函数调用  //鸣谢  :BCB_FANS(四大名捕之追杀令) //版权  :转载请注明原作者:) //    :以下为 BCB_FANS(四大名捕之追杀令)在2000下屏蔽Ctrl + Alt + Del组合键的 //     技术说明 //原理  :采用远程线程注入技术,装载一个DLL到Winlogon进程,然后截获SAS窗口的窗 //     口过程,接管WM_HOTKEY消息,以达到屏蔽Ctrl + Alt + Del之目的。 //技术比较:关于在2000下面如何屏蔽Ctrl + Alt + Del组合键,一种常被提到的解决方法就 //   是使用自己写的GINA去替换MSGINA.DLL,然后在WlxLoggedOnSAS里边直接返回 //   WLX_SAS_ACTION_NONE。嘿嘿,说到底这并不是真正地屏蔽了这个组合键,只是 //   直接返回WLX_SAS_ACTION_NONE时,Winlogon进程又自动从"Winlogon"桌面切换 //   回原来的"Default"桌面了,而不是显示安全对话框,所以看起来被屏蔽了:), //   使用那种方法明显地看到桌面在闪烁!但是使用本文的方法时,你不会看到任 //   何闪烁!

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧