T
tigerhacker
Unregistered / Unconfirmed
GUEST, unregistred user!
我想写一个QQ聊天记录器,就是把所有好友和自己的聊天内容记录下来!遇到问题!请大家帮帮忙!谢谢!
问题是这样的!我的思路是:
首先抓取 QQ消息框的窗口句柄
代码如下!
function GetQQWnd():HWND;
var
hCurrentWindow: HWnd;
WndText:array[0..255]of char;
begin
hCurrentWindow := GetWindow(Application.Handle, GW_HWNDFIRST);
while hCurrentWindow <> 0 do
begin
GetWindowText(hCurrentWindow,WndText,50);
if (Pos('聊天中',WndText)>0) or (Pos('发送消息',WndText)>0) then
begin
Result:=hCurrentWindow;
Exit;
end;
hCurrentWindow := GetWindow(hCurrentWindow, GW_HWNDNEXT);
end;
Result:=0;
end;
这里没有问题!当聊天窗口打开的时候可以抓取到窗口句柄!
接下来是要抓取聊天记录框和发送消息框的句柄,
然后提取当中的内容保存,
我的代码如下:
// 获得窗口文本
function GetWndText(hWnd: HWND): String;
Var
Ret:LongInt;
mTextChar;
Buf:Integer;
begin
Ret:=SendMessage(hWnd,WM_GETTEXTLENGTH,0,0)+1;
GetMem(mText,Ret);
try
Buf:=LongInt(mText);
SendMessage(hWnd,WM_GETTEXT,Ret,Buf);
Result:=StrPas(mText);
finally
FreeMem(mText,Ret);
end;
end;
函数 GetWndText(hWnd: HWND): String;
参数为文本框的句柄,返回内容为文本框的字符串,
可是这就遇到问题了!
我用的txtWnd:=GetWindow(GetDlgItem(qqWnd,0),GW_CHILD); // 得到文本框句柄
后来测试的结果是,返回的内容为空,可是我的QQ的输入框有内容,明显不对了!我也不知道为什么!请大家一起讨论一下!谢谢! 我觉得关键问题就在于如何抓取 聊天记录框和发送消息框的句柄,我的代码是不是有问题!谢谢大家!
问题是这样的!我的思路是:
首先抓取 QQ消息框的窗口句柄
代码如下!
function GetQQWnd():HWND;
var
hCurrentWindow: HWnd;
WndText:array[0..255]of char;
begin
hCurrentWindow := GetWindow(Application.Handle, GW_HWNDFIRST);
while hCurrentWindow <> 0 do
begin
GetWindowText(hCurrentWindow,WndText,50);
if (Pos('聊天中',WndText)>0) or (Pos('发送消息',WndText)>0) then
begin
Result:=hCurrentWindow;
Exit;
end;
hCurrentWindow := GetWindow(hCurrentWindow, GW_HWNDNEXT);
end;
Result:=0;
end;
这里没有问题!当聊天窗口打开的时候可以抓取到窗口句柄!
接下来是要抓取聊天记录框和发送消息框的句柄,
然后提取当中的内容保存,
我的代码如下:
// 获得窗口文本
function GetWndText(hWnd: HWND): String;
Var
Ret:LongInt;
mTextChar;
Buf:Integer;
begin
Ret:=SendMessage(hWnd,WM_GETTEXTLENGTH,0,0)+1;
GetMem(mText,Ret);
try
Buf:=LongInt(mText);
SendMessage(hWnd,WM_GETTEXT,Ret,Buf);
Result:=StrPas(mText);
finally
FreeMem(mText,Ret);
end;
end;
函数 GetWndText(hWnd: HWND): String;
参数为文本框的句柄,返回内容为文本框的字符串,
可是这就遇到问题了!
我用的txtWnd:=GetWindow(GetDlgItem(qqWnd,0),GW_CHILD); // 得到文本框句柄
后来测试的结果是,返回的内容为空,可是我的QQ的输入框有内容,明显不对了!我也不知道为什么!请大家一起讨论一下!谢谢! 我觉得关键问题就在于如何抓取 聊天记录框和发送消息框的句柄,我的代码是不是有问题!谢谢大家!