|
GetMem(mText,Ret);
try
Buf:=LongInt(mText);
SendMessage(hWnd,WM_GETTEXT,Ret,Buf);
Result:=StrPas(mText);
finally
FreeMem(mText,Ret);
end;
end;
五、
如何住原消息文本框里追加文本:
与取文本相反
// 发送文本到窗口
procedure SetWndText(hWnd: HWND; Text: String);
Var
Ret:LongInt;
mText:PChar;
Buf:Integer;
begin
GetMem(mText,Length(Text));
StrCopy(mText,PChar(Text));
try
Buf:=LongInt(mText);
SendMessage(hWnd,WM_SETTEXT,0,Buf);
finally
FreeMem(mText,Length(Text));
end;
end;
六、
如果让“发送”按钮自动点击:
一切都准备好了,现在要开始发送了,为了让消息自动发送,我们可以模拟“发送”按钮被点击了。
SendMessage(btnWnd,WM_LBUTTONDOWN,MK_LBUTTON,0);
SendMessage(btnWnd,WM_LBUTTONUP,0,0);
通过模拟一个鼠标在“开始”按钮上的按下与放开,就实现了点击发送功能。
七、
其它的定时功能比较简单,在此也不多说了。
八、
全部源代码如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants,
Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
Button2: TButton;
procedure
Timer1Timer(Sender: TObject);
procedure
Button1Click(Sender: TObject);
procedure
Button2Click(Sender: TObject);
private
{ Private
declarations }
public
{ Public
declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
// 获得窗口文本
function GetWndText(hWnd:
HWND): String;
Var
Ret:LongInt;
mText:PChar;
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;
// 发送文本到窗口
procedure SetWndText(hWnd:
HWND; Text: String);
Var
Ret:LongInt;
mText:PChar;
Buf:Integer;
begin
GetMem(mText,Length(Text));
StrCopy(mText,PChar(Text));
try
Buf:=LongInt(mText);
SendMessage(hWnd,WM_SETTEXT,0,Buf);
finally
FreeMem(mText,Length(Text));
end;
end;
// 取得QQ的发送消息窗口
function GetQQWnd: HWND;
var
hCurrentWindow: HWnd;
WndText:String;
begin
hCurrentWindow := GetWindow(Application.Handle,
GW_HWNDFIRST);
while hCurrentWindow
<> 0 do
begin
WndText:=GetWndText(hCurrentWindow);
if (Pos(''''聊天中'''',WndText)>0)
or (Pos(''''发送消息'''',WndText)>0) then
begin
Result:=hCurrentWindow;
Exit;
end;
hCurrentWindow := GetWindow(hCurrentWindow, GW_HWNDNEXT);
end;
Result:=0;
end;
// 定时处理
procedure TimerProc;
var
qqWnd,txtWnd,btnWnd:HWND;
Msg:String;
begin
qqWnd:=GetQQWnd;
if qqWnd=0 then Exit;
btnWnd:=GetDlgItem(qqWnd,1); // 发送按钮
txtWnd:=GetWindow(GetDlgItem(qqWnd,0),GW_CHILD); // 文本框
if (btnWnd=0) or (txtWnd=0) then Exit;
Msg:=GetWndText(txtWnd);
Msg:=Msg+#13+#10+''''欢迎光临绿荫网络http://www.lvyin.net'''';
SetWndText(txtWnd,Msg);
SendMessage(btnWnd,WM_LBUTTONDOWN,MK_LBUTTON,0);
SendMessage(btnWnd,WM_LBUTTONUP,0,0);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
TimerProc;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled :=not Timer1.Enabled;
if Timer1.Enabled then
Button1.Caption :=''''停 止''''
else
Button1.Caption :=''''开 始'''';
end;
上一页 [1] [2] [3] 下一页 没有相关教程
|