pesi, листик Word отличается от Блокнота как минимум классом окна. В моем MS Office XP этот класс — «_WwG». В других версиях Word смотрите сами, какой класс окна. Все остальное можете делать (почти) так же, как в случае с Блокнотом.
Код:
...
var
Form1: TForm1;
WordDoc: HWND;
function EnumChildWndProc(hndl: HWND; lprm: LPARAM): BOOL; stdcall;
implementation
{$R *.dfm}
function EnumChildWndProc(hndl: HWND; lprm: LPARAM): BOOL; stdcall;
const
WordDocClass = '_WwG';
var
WndClassName: PChar;
begin
Result := True;
GetMem(WndClassName, 255);
try
GetClassName(hndl, WndClassName, 255);
if StrPas(WndClassName) = WordDocClass then
begin
WordDoc := hndl;
Result := False;
end;
finally
FreeMem(WndClassName, 255);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
wnd: HWND;
i: Integer;
s: string;
begin
WordDoc := 0;
wnd := FindWindow(nil, PChar('Документ1 - Microsoft Word'));
if wnd <> 0 then
begin
EnumChildWindows(wnd, @EnumChildWndProc, 0);
if WordDoc <> 0 then
begin
s := 'Hello';
for i := 1 to Length(s) do
PostMessage(WordDoc, WM_CHAR, Word(s[i]), 0);
PostMessage(WordDoc, WM_KEYDOWN, VK_RETURN, 0);
end
else ShowMessage('Word list is not found!');
end
else ShowMessage('MS Word is not found!');
end;