delphi抓取QQ聊天窗口实例


本文整理自网络,侵删。

 
function EnumWindowsProc(hwnd: HWND; lParam: LPARAM): Boolean ;stdcall;
// EnumWindows 专用的回调函数的格式:
// function EnumWindowsProc(
// hwnd: HWND;    {找到的窗口句柄}
// lParam: LPARAM   {EnumWindows 传给的参数; 因为它是指针, 可传入, 但一般用作传出数据}
// ): Boolean; stdcall; {函数返回 False 时, 调用它的 EnumWindows 将停止遍历并返回 False}
function EnumWindowsProc(hwnd: HWND; lParam: LPARAM): Boolean ;stdcall;
var
  WindowText    : string  ;       // 窗体标题
  WindowClass   : string  ;       // 窗体类名
  SendHwnd      : DWORD   ;       // 发送按钮
  tdiahandle    : THandle ;
  tedithandle   : THandle ;
  tduihuakhandle: THandle ;
 begin
  if ( IsWindowVisible(hwnd) or IsIconic(hwnd) ) and
       (
        (GetWindowLong(hwnd, GWL_HWNDPARENT) = 0) or
        (GetWindowLong(hwnd, GWL_HWNDPARENT) = Longint(GetDesktopWindow))
       ) and
     ( GetWindowLong(hwnd, GWL_EXSTYLE) and WS_EX_TOOLWINDOW = 0)  then
  begin
   {-----标题文字------}
    SetLength(WindowText, GetWindowTextLength(hwnd)+2);
    Getwindowtext(hwnd, Pchar(WindowText), GetWindowTextLength(hwnd)+2);
    WindowText := string(Pchar(WindowText));

    {-----窗体类名------}
    SetLength(WindowClass, 512);
    GetClassName(hwnd, Pchar(WindowClass), 512);
    WindowClass := string(Pchar(WindowClass) );
    if SameStr(WindowClass , 'TXGuiFoundation') then
    begin
      Form1.mmo.Lines.Add(' 窗口标题:' + WindowText +
                          ' 窗体类名: ' + WindowClass);
      BringWindowToTop(hwnd);
      SetWndText(hwnd,'hello,delphi test');
//      tduihuakhandle := GetDlgItem(hwnd, 0);
//      SendMessage()
//      SendHwnd := FindWindowEx(hwnd , 0, nil, '发送(S)');   //找到送信息按钮,
//      ShowMessage(string(SendHwnd));
    end;
  end;
  Result := True;
 end;


procedure TForm1.btn1Click(Sender: TObject);
begin
   Form1.mmo.Clear;
// EnumWindows 的功能是遍历所有顶层窗口
// function EnumWindows(
// lpEnumFunc: TFNWndEnumProc; {回调函数指针}
// lParam: LPARAM       {给回调函数的参数, 它对应回调函数的第二个参数}
// ): BOOL; stdcall; //成功与否, 其实是返回了回调函数的返回值   
   EnumWindows(@EnumWindowsProc ,0);
   FQQMessage := edtQQMessage.Text;
end;

相关阅读 >>

Delphi assignfile 与指定的文件建立连接

Delphi apihook

Delphi中轻松实现tidftp的断点续传

Delphi word转pdf两种方法

Delphi 让combobox只允许输入数字和回车键以及Delphi key值表

Delphi isvaliddatetime、isvaliddate、isvalidtime、isvaliddateday ... 判断时间是否合法

Delphi编程之win10桌面图标设置

Delphi 学习 sql 语句 - insert、update、delete

Delphi 释放bitmap

Delphi goto语句用法

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...