Вопрос
1.Как получить заголовки (caption) всех запущенных программ?
2.Как например написать программно в edit другой программы?
Ответ
procedure TForm1.FormCreate(Sender: TObject);
function Enumerator(Wnd: HWND; lParam: integer): LongBool; stdcall;
var
Len: integer;
P: PChar;
begin
// получаем длину текста заголовка окна
Len:=SendMessage(Wnd, WM_GETTEXTLENGTH, 0, 0);
if Len>0 then
begin
// увеличиваем длину на один (строка должна заканчиваться нулем)
Len:=Len+1;
// выделяем память под строку
GetMem(P, Len);
// получаем текст заголовка
SendMessage(Wnd, WM_GETTEXT, Len, integer(P));
// добавляем его в ListBox
SendMessage(lParam, LB_ADDSTRING, 0, integer(P));
// освобождаем память
FreeMem(P, Len);
end;
end;
begin
// допустим, на форме имеется Listbox1: TListBox;
ListBox1.Items.Clear;
// заполняем его заголовками всех окон на текущем desktop'е
EnumWindows(@Enumerator, ListBox1.Handle);
end;
Из конференции Expert_FAQ
Copyright 2000-2004 Сообщество Чайников
Контактная информация