📄 unitmainform.pas
字号:
unit UnitMainForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Tlhelp32;
type
TMainForm = class(TForm)
Label1: TLabel;
Button1: TButton;
Button2: TButton;
ComboBox1: TComboBox;
SpeedButton1: TSpeedButton;
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure SpeedButton1Click(Sender: TObject);
private
function ListQQ: Integer;
function CallQQ: boolean;
public
{ Public declarations }
end;
var
MainForm: TMainForm;
implementation
{$R *.dfm}
function TMainForm.ListQQ: Integer;
var
i: integer;
hcurrentwindow: hwnd;
sztext: array[0..254] of char;
begin
i := 0;
ComboBox1.Items.Clear;
ComboBox1.Text := '';
hcurrentwindow := GetWindow(handle, gw_hwndfirst);
while hcurrentwindow<>0 do
begin
if GetWindowText(hcurrentwindow, @sztext, 255)>0 then
begin
if ((pos('与', strpas(@sztext))>0) and (pos('聊天', strpas(@sztext))>0))
or (pos('讨论组', strpas(@sztext))>0)
or (pos('群', strpas(@sztext))>0)
then
begin
inc(i);
ComboBox1.Items.Add(strpas(@sztext));
end;
end;
hcurrentwindow := GetWindow(hcurrentwindow, gw_hwndnext);
end;
if ComboBox1.Items.Count=1 then
ComboBox1.ItemIndex := 0;
Result := i;
end;
procedure TMainForm.FormCreate(Sender: TObject);
begin
ListQQ;
end;
function TMainForm.CallQQ: boolean;
var
strWinName: string;
npad: HWND;
i, j: integer;
begin
strWinName := Trim(ComboBox1.Text);
if strWinName='' then Exit;
Npad := FindWindow(nil, PChar(strWinName));
if npad = 0 then
begin
Result := False;
Exit;
end;
BringWindowToTop(Npad); //使其成为focus之window
i := ord('1');
keybd_event(i, 0, 0, 0); //keydown此键
keybd_event(VK_RETURN, 0, 0, 0); //换行
keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0);
keybd_event( VK_TAB, MapVirtualKey( VK_TAB, 0 ), 0 , 0 );
keybd_event( VK_TAB, MapVirtualKey( VK_TAB, 0 ), KEYEVENTF_KEYUP , 0 );
keybd_event( VK_RETURN, MapVirtualKey( VK_RETURN, 0 ), 0 , 0 );
keybd_event( VK_RETURN, MapVirtualKey( VK_RETURN, 0 ), KEYEVENTF_KEYUP , 0 );
Result := True;
end;
procedure TMainForm.Button2Click(Sender: TObject);
begin
CallQQ;
Application.ProcessMessages;
end;
procedure TMainForm.Button1Click(Sender: TObject);
var
i: integer;
begin
for i:=0 to 99 do
begin
if not CallQQ then break;
Application.ProcessMessages;
Sleep(200);
end;
end;
procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := CaFree;
end;
procedure TMainForm.SpeedButton1Click(Sender: TObject);
begin
ListQQ;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -