看到好多人都在问QQ方面的问题,主要是关于研究QQ尾巴的问题,网络上已经有很多这方面的例子,但是在用到作者提供的代码时候,不能够正确的找到RICHEDIT,因此无法挂接钩子,下面这个方法,应该是可以,同时附带上qqhook的源代码。
其实关键是2004版本的qq它做了手脚,在原来的窗体上又增加了一个窗体,因此,用原作者的方法就不能找到rich窗口的句柄了。
测试cpp
#include
//#include
#include "QQHook.h"
#pragma comment(lib, "QQHook.lib")
#include "resource.h"
#define ID_MYTIMER 419 // ¼ÆʱÆ÷ID
BOOL g_bStart;
HWND g_hQQ;
LRESULT CALLBACK ProcMain(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
{
? switch (Msg)
? {
? case WM_CLOSE:
?//?? AnimateWindow(hDlg, 800, AW_HIDE | AW_SLIDE | AW_VER_POSITIVE);
??? EndDialog(hDlg, 0);
??? break;
? case WM_COMMAND:
??? {
????? if (LOWORD(wParam) == IDC_BTN_CONTROL)
????? {
??????? g_bStart = !g_bStart;
??????? SetDlgItemText(hDlg, IDC_BTN_CONTROL, g_bStart ? "Í£Ö¹" : "¿ªÊ¼");
??????? if (g_bStart)
????????? SetTimer(hDlg, ID_MYTIMER, 1000, NULL);
??????? else
??????? {
????????? KillTimer(hDlg, ID_MYTIMER);
????????? SetHook(NULL);
??????? }
????? }
????? if (LOWORD(wParam) == IDC_BTN_EXIT)
??????? SendMessage(hDlg, WM_CLOSE, 0, 0);
??? }
??? break;
? case WM_DESTROY:
??? PostQuitMessage(0);
??? break;
? case WM_INITDIALOG:
??? {
????? int x, y;