我用这一句来关闭一个程序 SendMessage lhwnd, WM_CLOSE, WM_SYSCOMMAND, 0 通不过请问 SendMessage 函数如何声明? 下面的为啥不行? 还缺点啥? (我对API不懂)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
WM_CLOSE 和 WM_SYSCOMMAND 是否已定义?
'上面的一行代码写在最上面
'注销、关闭计算机机的通知
Private Sub Form1_Load(ByVal sender As Object, _
ByVal e As System.EventArgs) _
Handles MyBase.Load
'最好把事件处理器写在窗体构造的适当位置
AddHandler SystemEvents.SessionEnding, _
AddressOf SystemEvents_SessionEnding
End Sub
Private Sub Form1_Closed(ByVal sender As Object, _
ByVal e As System.EventArgs) _
Handles MyBase.Closed
'在窗体Dispose方法内的基本类的Dispose方法调用之前释放事件也可以
RemoveHandler SystemEvents.SessionEnding, _
AddressOf SystemEvents_SessionEnding
End Sub
'注销、关闭计算机时
Private Sub SystemEvents_SessionEnding( _
ByVal sender As Object, _
ByVal e As SessionEndingEventArgs)
Dim s As String
If e.Reason = SessionEndReasons.Logoff Then
s = "正在注销。"
ElseIf e.Reason = SessionEndReasons.SystemShutdown Then
s = "正在关闭计算机。"
End If
If MessageBox.Show(s + vbNewLine + "取消吗?", _
"提问", MessageBoxButtons.YesNo) = DialogResult.Yes Then
'取消
e.Cancel = True
End If
End Sub
Public Const WM_SYSCOMMAND = &H112
将下面的内容放到SendMessage声明的上面或者下面。
Private Const WM_SYSCOMMAND = &H112
真晕
在API Viewer窗口的上部有个API类型的选择框,可以选择常量、声明和类型,
默认是声明,如果选择到常量,然后在下面输入WM_CLOSE 和 WM_SYSCOMMAND ,
就会找到它们的声明了。