| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1505 人关注过本帖
标题:API的问题
取消只看楼主 加入收藏
nbaqqqq
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:202
专家分:137
注 册:2009-11-6
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
API的问题
程序代码:
form1中的代码:
Dim WindowHandle As Long

Private Sub Form_Click()
    SendMessage WindowHandle, WM_CLOSE, 0, 0
End Sub

Private Sub Form_Load()
    WindowHandle = FindWindow(vbNullString, "新建 文本文档 - 记事本")
    Debug.Print WindowHandle
    pWndProc = GetWindowLong(WindowHandle, GWL_WNDPROC)  '获取当前窗口的消息地址

    SetWindowLong WindowHandle, GWL_WNDPROC, AddressOf WindowProc    '把地址指向模块中的 WindowProc 回调函数

End Sub

Private Sub Form_Unload(Cancel As Integer)

    SetWindowLong WindowHandle, GWL_WNDPROC, pWndProc    '不在处理窗体默认的消息时应该返回给系统

End Sub


模块modulel中的代码:
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Public 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 WM_CLOSE = &H10
Public Const GWL_WNDPROC = (-4)

Public pWndProc As Long '把它当然指针来使用
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long


Public Function WindowProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

    

    Debug.Print Hex$(Msg)   '以十六进制的方式查看当前的消息情况
     If Msg = WM_CLOSE Then '处理 WM_CLOSE 窗口关闭消息



        WindowProc = 1

        Exit Function



    End If



    

    WindowProc = CallWindowProc(pWndProc, hwnd, Msg, wParam, lParam)    '把不需要处理的消息返回给系统(是把已处理的消息按 lpPrevWndFunc(原窗口消息地址) 返回给该地址)

End Function
  这个程序怎么拦截不了关闭消息,纠结中,麻烦大家帮忙解答。

[ 本帖最后由 nbaqqqq 于 2010-5-2 11:12 编辑 ]
搜索更多相关主题的帖子: API 
2010-05-01 20:54
nbaqqqq
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:202
专家分:137
注 册:2009-11-6
收藏
得分:0 
额,没人回。
2010-05-01 21:54
nbaqqqq
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:202
专家分:137
注 册:2009-11-6
收藏
得分:0 
你程序对的,能拦截。就是那个SendMessage wndHandle, WM_COMMAND, WM_CLOSE, 0参数错了。
2010-05-02 10:34
nbaqqqq
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:202
专家分:137
注 册:2009-11-6
收藏
得分:0 
额,怎么又拦截不了了。
2010-05-02 10:38
nbaqqqq
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:202
专家分:137
注 册:2009-11-6
收藏
得分:0 
回复 4楼 xiaomarn
这位大哥,是你在帮我。。。
2010-05-02 11:06
nbaqqqq
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:202
专家分:137
注 册:2009-11-6
收藏
得分:0 
难道是记事本或计算器获得焦点,消息才会传到回调函数中处理?高手快来帮帮忙啊。
2010-05-02 11:34
nbaqqqq
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:202
专家分:137
注 册:2009-11-6
收藏
得分:0 
我想学API啊

[ 本帖最后由 nbaqqqq 于 2010-5-2 13:08 编辑 ]
2010-05-02 12:58
nbaqqqq
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:202
专家分:137
注 册:2009-11-6
收藏
得分:0 
还是准备考试去。。。
2010-05-02 17:18
nbaqqqq
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:202
专家分:137
注 册:2009-11-6
收藏
得分:0 
谢谢
2010-05-05 10:07
快速回复:API的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018652 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved