[Delphi]如何利用Sendmessage或Postmessage函数????~

我想用Delphi写一个程序向在前台(或后台)运行的一个记事本(sample.txt那种)发送一串字符串'hello!Youaresuccessed',在"百度知道"查了... 我想用Delphi写一个程序向在前台(或后台)运行的一个记事本(sample.txt那种)发送一串字符串'hello ! You are successed',在"百度知道"查了很多文章,都不太理想(最好有源代码)!而且我新鸟一个,希望可以说得详细点!谢谢高手啦! 展开
 我来答
kaviechen
2008-02-18 · TA获得超过251个赞
知道小有建树答主
回答量:308
采纳率:0%
帮助的人:373万
展开全部
//如果只打开一个记事本的话用下面的代码,如果是有多个的话,需要修改一下枚举窗口时的窗口名
//if pos(sample.txt - 记事本',StrPas(WinText))>0 then

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Controls, Forms, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
public
end;

var
Form1: TForm1;
HEdit: THandle;

implementation

{$R *.dfm}

//向控件发送字符
procedure SendDBCSString(hFocus: HWND; const sSend: string);
var
k : integer;
ch : byte;
begin
k := 1;
while k <= Length(sSend) do begin
ch := byte(sSend[k]);
if Windows.IsDBCSLeadByte(ch) then
begin
Inc(k);
SendMessage(hFocus, WM_IME_CHAR, MakeWord(byte(sSend[k]), ch), 0);
end
else
SendMessage(hFocus, WM_IME_CHAR, word(ch), 0);
Inc(k);
end;
end;

//枚举记事本窗口,获取记事本的内容输入框句柄
Function EnumWinProc(Wnd: HWND; Form1: TForm1): Boolean; Export;StdCall;
var
WinText : Array[0..255] of Char;
begin
GetWindowText(Wnd, WinText, 255);
Result := True;
if pos('记事本',StrPas(WinText))>0 then
HEdit:=FindWindowEx(WND,0,'Edit','');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
EnumWindows(@EnumWinProc, LongInt(Self));
SendDBCSString(HEdit,'预先设定的文字');
end;

end.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式