воскресенье, 21 сентября 2008 г.

WinAPI: Set/get windowtext

Set/get windowtext

Как можнодогадаться из названия данных API функций, речь пойдет о работе с заголовками различных окон и программ. С ними можно сделать что угодно. При том, используя API, работать можно с заголовками "чужих" окон и программ. Дот две функции, первая из которых служит для получения заголовка окна, а вторая для установления нового.

function GetWindowText(Wnd: HWnd; Str: PChar; MaxCount: Integer): Integer;

function SetWindowText(Wnd: HWnd; Str: PChar);


Рассмотрим первую функцию. Первый параметр указывает на окно, заголовок которой будет определяться. Второй - переменную, в которую будет заноситься заголовок. Третья определяет размер буфера, выделенного под заголовок. Приведенный ниже код позволяет определить заголовок программы.

procedure TForm1.Button1Click(Sender: TObject);
var r:array[1..255]of char;
begin
getwindowtext(application.Handle,@r,255);
showmessage(r)
end;


А вот так можно получать заголовки скрытых приложений и окон (по классам):

procedure TForm1.Button1Click(Sender: TObject);
var r:array[1..255]of char;
begin
getwindowtext(findwindow('progman',nil),@r,255);
showmessage(r)
end;


С помощью второй функции можно устанавливать свои заголовки. Рассмотрим её параметры. Первый указывает на окно, заголовок которого будем менять, а второй собственно и есть новый заголовок. Вот так можно менять у своей программы..

setwindowtext(application.Handle,'Hello!!!');

Чтоб поменять заголовок у формы, пиши.....

setwindowtext(Handle,'Hello!!!');

Чтоб у других программ и окон пиши...

setwindowtext(findwindow(nil,'Мой компьютер'),'Hello!!!');

Комментариев нет: