作者:admin 来源: 日期:2019/10/13 14:02:17 人气: 标签:
使用函数:EnumWindows,EnumWindowsProc
源代码奉上:unit QMsgMainFrm; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Clipbrd; type TForm1 = class(TForm) edtMsg: TEdit; lblTip: TLabel; btnTry: TButton; lblMsgWindow: TLabel; lblMsgContextWindow: TLabel; procedure btnTryClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; function EnumWindowsProc(hwnd: HWND; lParam: LPARAM): Boolean ;stdcall;implementation {$R *.dfm} procedure TForm1.btnTryClick(Sender: TObject);begin if Trim(edtMsg.Text) = '' then begin ShowMessage('请输入要发送的消息,消息不能为空'); end else begin EnumWindows(@EnumWindowsProc ,0); end;end; function EnumWindowsProc(hwnd: HWND; lParam: LPARAM): Boolean ;stdcall;var WindowText : string ; WindowClass : string ; SendHwnd : DWORD ; tdiahandle : THandle ; tedithandle : THandle ; tduihuakhandle: THandle ; c: Cardinal; ProcessHandle:LongWord; 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 BringWindowToTop(hwnd); Form1.lblMsgContextWindow.Caption := WindowText; if Clipboard.HasFormat(CF_TEXT) then Clipboard.Clear; Form1.edtMsg.SelectAll; Form1.edtMsg.CopyToClipboard; keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), 0, 0); keybd_event(Ord('V'), MapVirtualKey(Ord('V'), 0), 0, 0); keybd_event(Ord('V'), MapVirtualKey(Ord('V'), 0), KEYEVENTF_KEYUP, 0); keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), KEYEVENTF_KEYUP, 0); keybd_event(VK_RETURN, MapVirtualKey(VK_RETURN, 0),0 ,0); end; end; Result := True; end;end.我们在网络中经常会有这样的需求,有一篇推销内容要发送到QQ群或者QQ好友,手动一个一个发实在是麻烦的很,那么就需要有一套好的工具来辅助我们,所以就写了这么一个东东。大家多多支持。
本文地址:http://blog.csdn.net/sushengmiyan/article/details/8774780