Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
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.
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

  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ông cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

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