
Private Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const WM_CLOSE = &H10
Private Const WM_QUERYENDSESSION = &H11
Private Const WM_QUIT = &H12
Private Const WM_DISTORY = &H2
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

然后编写KillProcess函数(块),该块具有获取窗口句柄的进程句柄的功能:

Private Sub KillProcess(ByVal whWnd As Long)
Dim lpdwProcessId As Long
Dim hProcessHandle As Long
GetWindowThreadProcessId whWnd, lpdwProcessId
hProcessHandle = OpenProcess(&H1F0FFF, True, lpdwProcessId)
If hProcessHandle <> 0 Then TerminateProcess hProcessHandle, ByVal 0&
CloseHandle (hProcessHandle)
End Sub

以下是最终调用中使用的代码,当然vb窗口关闭程序,您也可以将其封装为一个块:

KillProcess hWnd '结束其进程
SendMessage hWnd, WM_QUERYENDSESSION, 0, 0 '伪造关机信息发送
SendMessage hWnd, WM_QUIT, 0, 0 '要求程序退出
SendMessage hWnd, WM_DISTORY, 0, 0 '要求销毁窗体
SendMessage hWnd, WM_CLOSE, 0, 0 '要求关闭窗口
ShowWindow hWnd, 0 '最后不行就只能自己隐藏它了
“假关机信息发送”是否亮起?哈哈.
视觉检查对日常活动(包括音频和视频播放器)有效,并且对具有一定过程保护功能的大型游戏也有效(我使用了《魔兽争霸III》,《生存之路2》和其他游戏进行测试) -当然,您不应期望终止防护程序,例如防病毒程序. 隐藏他们的窗户是很好的.
其中一些代码来自互联网vb窗口关闭程序,我将它们组合在一起.
如果没有特殊说明,则本文为原创,并遵循归因于非商业用途的3.0(CC BY-NC 3.0)协议. 如果您转载该文章,请从[Flash Star Space]或链接上的原始地址进行注明:
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-183950-1.html
不可以做孬种