`

VB 捕获系统注销、关机事件

阅读更多
正文开始:

目前网上,能够截获系统注销、关机事件消息的VB代码,非常少,即便是有,作者也大多胡乱拷贝,不是很负责任。

本文作者经过3个小时的辛苦努力,终于搞定这两个小问题,本代码在VB6.0环境下测试通过,仅有3步,直接复制即可使用,希望能给在网络中苦苦追寻的网友,带来福音。

1、先建一bas模块文件,此处为Public.bas,代码如下:

'专门用于处理注销、关机消息截获及处理事件__开始
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
(ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
(ByVal hwnd As Long, ByVal nIndex As Long) As Long
Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" _
(ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long

Public Const GWL_WNDPROC = (-4)
Public Const WM_ENDSESSION = &H16
Public Const WM_QUERYENDSESSION = &H11

Public preWinProc As Long

Public Function wndproc(ByVal hwnd As Long, ByVal Msg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = WM_QUERYENDSESSION Then '如果是注销

     '在这里,你可以加一些自定义操作

     End'程序退出,防止用户因为本程序未退出而无法注销。
Else
  If Msg = WM_ENDSESSION Then '如果是关机
    If wParam = 0 Then '代表将顺利关机或LogOff,这时便得做正常结束程序的操作        

     '在这里,你可以加一些自定义操作

     End'程序退出,防止用户因为本程序未退出而无法关机。

End If
End If
End If
'将之送往原来的Window Procedure
wndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam)
End Function
'专门用于处理注销、关机消息截获及处理事件__结束



2、然后在Form_Load()事件中添加如下代码:

Private Sub Form_Load()

'专门用于处理注销、关机消息截获及处理事件__开始
Dim ret As Long
'记录原来的Window Procedure的位址
preWinProc = GetWindowLong(Me.hwnd, GWL_WNDPROC)
'设定form的window Procedure到wndproc
ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf wndproc)
'专门用于处理注销、关机消息截获及处理事件__结束

End Sub



3、最后在Form_Unload()事件中添加如下代码:

Private Sub Form_UnLoad(Cancel As Integer) '用于捕获用户注销,关机等强退事件

'专门用于处理注销、关机消息截获及处理事件__开始
  Dim ret As Long
  '取消Message的截取,而使之又只送往原来的Window Procedure
  ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, preWinProc)
  '这里只是要看看用关机的方式结束程序时,会不会执行到这里
'专门用于处理注销、关机消息截获及处理事件__结束

End Sub
转自:http://wanghaibin0921.blog.163.com/blog/static/3606884020091010103733166/
分享到:
评论

相关推荐

    VB6 API实现关机、注销、重启 实例_vb6_VBVB6关机注销重启API_vb6implements_

    VB6 API实现关机、注销、重启的功能是通过调用Windows API函数来完成的。这些API函数提供了对系统级操作的直接访问,使得VB6程序能够执行系统级别的任务,如控制系统的电源状态。 1. **API函数介绍** - **...

    (VB)系统定时关机

    在VB(Visual Basic)编程环境中,我们可以利用API(应用程序接口)函数来实现系统定时关机的功能。这个功能在日常生活中非常实用,比如设置一个定时任务,让计算机在特定时间自动关闭,避免忘记关闭电脑或者在执行...

    VB定时关机 重启、注销.rar

    在这个“VB定时关机 重启、注销.rar”压缩包中,包含的VB源码提供了实现计算机定时关机、重启和注销的功能。这些功能对于日常使用或者特定场景下的自动化管理非常实用。 1. **定时关机**: 在VB中,可以使用...

    VB.net 实现关机注销重启、获取本机的信息

    在VB.NET编程环境中,开发人员经常需要实现对操作系统的一些基本操作,例如关机、注销、重启,以及获取本机的各种信息。这些功能对于系统管理工具、监控应用或者自定义桌面环境来说是至关重要的。下面我们将详细探讨...

    VB中注销, 重启和关闭计算机

    在Visual Basic(简称VB)编程环境中,开发者可以通过调用特定的API函数实现对操作系统进行注销、重启或关闭的功能。这对于自动化脚本或者需要控制计算机状态的应用程序来说是非常实用的功能。下面将详细介绍如何在...

    Vb捕获屏幕分辨率的改变

    API允许VB代码与操作系统进行更深入的交互,获取系统级事件,例如屏幕分辨率的改变。 1. **注册窗口消息**: 使用`RegisterWindowMessage`函数创建一个自定义的消息ID,用于接收屏幕分辨率改变的通知。这需要在...

    VB代码自动关机

    总之,VB代码自动关机是通过调用Windows API中的`ExitWindowsEx`函数实现的,通过设定不同的参数,可以完成不同的系统操作,如关机、重启、注销等。这样的代码在需要定时任务或者自动化操作的场景中非常有用。

    VB调用系统关机对话框及直接关机的实现示例.rar

    在VB(Visual Basic)编程中,有时候我们需要实现一些系统级别的操作,例如调用系统的关机、重启等对话框,或者直接执行这些操作。本示例就是关于如何在VB中实现这些功能的一个实例教程。让我们深入探讨一下这个VB...

    VB注销、关机和重启

    在VB(Visual Basic)编程中,开发者经常需要实现一些系统级别的功能,比如注销、关机或重启计算机。这些操作在日常应用中很常见,比如在软件更新完成后自动重启或者在用户完成特定任务后退出系统。在VB中实现这些...

    开机关机注销功能(VB6.0代码编写)

    在VB6.0环境下开发应用程序,我们可以利用Windows API(应用程序接口)来实现系统级别的操作,如开机、关机和注销等功能。VB6.0作为一款经典的可视化编程工具,提供了丰富的控件和事件处理机制,使得开发者能够轻松...

    VB6.0操作电脑关闭系统、重启系统、快速关机

    在VB6.0中,开发者可以通过API(Application Programming Interface)调用来实现对系统的控制,比如关闭系统、重启系统以及快速关机等功能。下面将详细介绍如何通过VB6.0实现这些功能。 首先,关闭系统是通过调用...

    使用vb编写的定时关机的代码

    根据提供的文件信息,我们可以整理出...通过以上知识点的整理,我们可以看到,使用VB编写定时关机程序不仅涉及基本的编程技术,还包含了对系统操作的理解以及用户体验的设计等多个方面。希望这些内容能对你有所帮助。

    VB 对象的系统事件

    在VB(Visual Basic)编程环境中,对象的系统事件是指由操作系统或VB运行时环境触发的一系列内置事件。这些事件允许程序员响应特定的操作或状态变化,从而实现更动态和交互式的用户界面。VB对象通常包括控件、窗体、...

    VB 极速关机断电 天使关机

    【VB 极速关机断电 天使关机】是一个基于Visual Basic(VB)编程语言的程序,用于实现快速关机甚至直接断电的功能。这个程序的特点在于它不等待运行中的程序全部结束,而是通过特定的技术手段使硬盘迅速回到0磁道...

    vb 编写的定时关机软件

    本篇文章将深入探讨如何利用VB编写一个定时关机软件,包括配置文件的使用、系统控制命令的调用以及程序设计的基本流程。 首先,我们关注到“config.ini”文件。在VB程序中,通常会使用配置文件来存储用户设置或应用...

    VB禁止关机源码(10个字啊)

    "否则会退出VB并导致关机"这句话是在警告开发者或用户,不按照正确步骤操作可能会导致预期之外的结果,即VB开发环境关闭,进而允许系统关机。 标签中的“VB”指的就是Visual Basic,这是微软公司推出的一种编程工具...

    VB注销关机程序,包括定时关机、重启.rar

    当设置好定时器的时间间隔后,可以在`Timer.Tick`事件中执行相应的关机、注销或重启操作。此外,可能还需要一个用户界面来设定和显示定时任务,比如使用`DateTimePicker`控件让用户选择时间,`ListBox`或`ListView`...

    VB鼠标滚轮事件_vb6_鼠标滚轮事件_

    在VB6(Visual Basic 6)编程环境中,鼠标滚轮事件是用户与应用程序交互的重要方式之一,它使得用户可以通过滚轮上下滚动来查看控件或窗口中的内容。本篇文章将详细探讨VB6中的鼠标滚轮事件,以及如何在你的应用程序...

    VB定时自动关机

    【VB定时自动关机】是一种基于Visual Basic (VB)编程语言实现的功能,它允许用户预设一个特定时间,系统将在设定的时间自动执行关机操作。这个功能对于那些需要在特定时间执行任务但又不便守候在电脑前的用户非常...

    VB写的到时关机程序

    通过这个简单的定时关机程序,初学者可以学习到如何在VB中处理时间、如何与操作系统进行交互、如何设计用户界面以及如何组织程序逻辑。这是一个很好的实践项目,帮助初学者巩固理论知识并提升实际编程技能。

Global site tag (gtag.js) - Google Analytics