我用这一句来关闭一个程序  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

解决方案 »

  1.   

    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 
      

  2.   

    运行时 WM_CLOSE 和 WM_SYSCOMMAND 这二个通不过
      

  3.   

    代码好像没错啊。你出什么错?编译出错,还是运行出错?
    WM_CLOSE 和 WM_SYSCOMMAND 是否已定义?
      

  4.   

    代码来自http://bingning.net/free/source/system/sessionending.html'Imports Microsoft.Win32
     '上面的一行代码写在最上面
     
     '注销、关闭计算机机的通知
     
     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
      

  5.   

    Public Const WM_CLOSE = &H10
    Public Const WM_SYSCOMMAND = &H112
      

  6.   


    将下面的内容放到SendMessage声明的上面或者下面。
      

  7.   

    Private Const WM_CLOSE = &H10 
    Private Const WM_SYSCOMMAND = &H112 
    真晕
      

  8.   

    想必兄弟添加API是通过 API Viewer来添加的吧?
    在API Viewer窗口的上部有个API类型的选择框,可以选择常量、声明和类型,
    默认是声明,如果选择到常量,然后在下面输入WM_CLOSE 和 WM_SYSCOMMAND ,
    就会找到它们的声明了。