| Главная | |
Delphi |
WinAPIПолучить/Установить текст в TMemo из другого приложенияУ Вас была такая ситуация, где Вы должны были копировать/вставить некоторый текст из другого приложения (без использования OLE)? Рассмотрим этот код: Function GetOtherWindowMemoText(const sCaption : String) : WideString;
var
hWindow : THandle;
hChild : THandle;
aTemp : array[0..5000] of Char;
sClassName : String;
begin
Result := '';
hWindow := FindWindow(Nil,PChar(sCaption));
if hWindow = 0 then begin
ShowMessage('НЕ МОГУ найти программу');
exit;
end;
hChild := GetWindow(hWindow, GW_CHILD);
while hChild <> 0 do Begin
if GetClassName(hChild, aTemp, SizeOf(aTemp)) > 0 then begin
sClassName := StrPAS(aTemp);
if sClassName = 'Edit' then begin
SendMessage(hChild,WM_GETTEXT,SizeOf(aTemp),Integer(@aTemp));
Result := StrPAS(aTemp);
end;
end;
hChild := GetWindow(hChild, GW_HWNDNEXT);
end;
end;
Function SetOtherWindowMemoText(const sCaption : String; const sText : String) : WideString;
var
hWindow : THandle;
hChild : THandle;
aTemp : array[0..5000] of Char;
sClassName : String;
begin
Result := '';
hWindow := FindWindow(Nil, PChar(sCaption));
if hWindow = 0 then begin
ShowMessage('НЕ МОГУ найти программу');
exit;
end;
hChild := GetWindow(hWindow, GW_CHILD);
while hChild <> 0 do Begin
if GetClassName(hChild, aTemp, SizeOf(aTemp)) > 0 then begin
sClassName := StrPAS(aTemp);
if sClassName = 'Edit' then begin
StrPCopy(aTemp,sText);
SendMessage(hChild,WM_SETTEXT,SizeOf(aTemp),Integer(@aTemp));
end;
end;
hChild := GetWindow(hChild, GW_HWNDNEXT);
end;
end;
Если, к примеру, Вы хотите получить текст из Notepad, то Вы должны будете передать заголовок блокнота в функцию GetOtherWindowMemoText и назначить возвращаемое значение на RichEdit, то: ...............................................//Получить текст из блокнота. RichEdit1.Lines.Text := GetOtherWindowMemoText('Untitled - Notepad'); ............................................... //Установить текст в блокноте. SetOtherWindowMemoText('Untitled - Notepad', RichEdit1.Lines.Text); ............................................... Abdulaziz Jasser |
|
|
||
| Copyright (c) Авраменко С. Н. 2008. |