Từ 1 tới 2 trên tổng số 2 kết quả

Đề tài: Bị lỗi với dll hook message

  1. #1
    Ngày gia nhập
    07 2006
    Nơi ở
    Hà nội
    Bài viết
    204

    Mặc định Bị lỗi với dll hook message

    Em đang làm 1 cái dll hook message như sau:

    // hook.cpp : Defines the entry point for the DLL application.
    //

    #include "stdafx.h"
    #define DLL_EXPORTS
    #include "hook.h"

    HWND h;
    HINSTANCE hInstance;
    HHOOK hHook;

    void show (long val)
    {
    char s[40];
    sprintf (s, "%d", val);
    MessageBox (NULL, s, "DLL", MB_OK);
    }

    LRESULT CALLBACK GetMsgProc (int nCode, WPARAM wParam, LPARAM lParam);

    BOOL APIENTRY DllMain( HANDLE hModule,
    DWORD ul_reason_for_call,
    LPVOID lpReserved
    )
    {
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
    hInstance = (HINSTANCE) hModule;
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
    break;
    }
    return TRUE;
    }

    DLL_API long InstallKeyboardHook (HWND hwnd)
    {
    if (!IsWindow (hwnd)) return 0;
    *h = hwnd;
    hHook = SetWindowsHookEx (WH_GETMESSAGE, (HOOKPROC) GetMsgProc, hInstance, 0);
    return (long) hHook;
    }

    DLL_API long RemoveKeyboardHook ()
    {
    return UnhookWindowsHookEx (hHook);
    }

    LRESULT CALLBACK GetMsgProc (int nCode, WPARAM wParam, LPARAM lParam)
    {
    if (nCode < 0)
    {
    return CallNextHookEx (hHook, nCode, wParam, lParam);
    }
    else
    {
    LPMSG msg = (LPMSG) lParam;
    if ((msg->message == WM_KEYDOWN) || (msg->message == WM_KEYUP))
    {
    show (h);
    };
    return CallNextHookEx (hHook, nCode, wParam, lParam);
    };
    }

    Nhưng khi viết chương trình chạy thử thì chỉ khi nào chương trình của mình nhận focus thì mới hiện đúng h, nếu ko thì giá trị h toàn bằng 0; ko hiểu tại sao đây.

  2. #2
    Ngày gia nhập
    07 2006
    Bài viết
    166

    Thử thay
    Code:
    hHook = SetWindowsHookEx (WH_GETMESSAGE, (HOOKPROC) GetMsgProc, hInstance, 0);
    bằng
    Code:
    hHook = SetWindowsHookEx (WH_KEYBOARD, (HOOKPROC) GetMsgProc, hInstance, 0);
    xem sao, nếu không thì up cả workspace nên cho dễ

Các đề tài tương tự

  1. Hook Message Click button - Menu - Trên Process Khác
    Gửi bởi optimist27 trong diễn đàn Windows API, Hooking, xử lý Windows Message
    Trả lời: 15
    Bài viết cuối: 27-12-2013, 10:24 PM
  2. Mouse hook system-wide lại chạy như local hook ???
    Gửi bởi nguoixanh trong diễn đàn Windows API, Hooking, xử lý Windows Message
    Trả lời: 1
    Bài viết cuối: 12-11-2013, 03:01 PM
  3. Cách xử lý Message của MFC, nghĩa là khi gởi một message đến chính nó trong Dialog
    Gửi bởi theboy909 trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 6
    Bài viết cuối: 13-06-2011, 05:16 PM
  4. Hook Message chỉ 1 file Exe
    Gửi bởi MartSoft trong diễn đàn Windows API, Hooking, xử lý Windows Message
    Trả lời: 7
    Bài viết cuối: 10-02-2010, 05:53 PM
  5. [Kernel Driver] ShaDow SSDT Hook Có Phải là Hook đồ Họa
    Gửi bởi chàng trai dễ thương trong diễn đàn Windows API, Hooking, xử lý Windows Message
    Trả lời: 0
    Bài viết cuối: 11-10-2009, 07:48 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn