Форум: "WinAPI";
Текущий архив: 2006.05.07;
Скачать: [xml.tar.bz2];
ВнизКак получить caption окна чужой программы? Найти похожие ветки
← →
Asail (2006-02-13 10:00) [0]Здрасте!
Есть задача отслеживать, какая программа (чужая) активна (т.е. в фокусе одно из ее окон).
Для получения handle активного окна использую GetForegroundWindow. А как теперь по этому handl"у прочитать содержимое заголовка окна?
Спасибо!
← →
Marser © (2006-02-13 10:07) [1]GetWindowText
← →
Asail (2006-02-13 10:27) [2]Спасибо! Только у меня чего-то не фурычит :-(
Делаю так:
var
H : hWND;
Count : Integer;
Str : String;
begin
...
Str:="";
H:=GetForegroundWindow;
Count:=GetWindowTextLength(H);
GetWindowText(H,PChar(Str),Count);
Edit1.Text:=Str;
...
end;
В чем ошибка?
← →
ЮЮ © (2006-02-13 10:30) [3]SetLength(str, Count);
GetWindowText(H,PChar(Str),Count);
← →
Marser © (2006-02-13 10:31) [4]Попробуй так:
var
H : hWND;
Count : Integer;
Str : String;
begin
H:=GetForegroundWindow;
Count:=GetWindowTextLength(H);
SetLength(Str,5);
GetWindowText(H,@Str[1],Count);
Edit1.Text:=Str;
end;
← →
Pit © (2006-02-13 10:32) [5]
var
H : hWND;
Count : Integer;
Str :array [0..128] of Char;
begin
H:=GetForegroundWindow;
Count:=GetWindowTextLength(H);
GetWindowText(H,Str,Count);
Edit1.Text:=Str;
← →
Marser © (2006-02-13 10:33) [6]> Count:=GetWindowTextLength(H);
> SetLength(Str,5);
Следует читать как
Count:=GetWindowTextLength(H);
SetLength(Str,Count);
← →
Asail (2006-02-13 10:34) [7]Да, так работает!!!
Только пришлось (не понял почему) добавить в размер еще один байт:
Count:=GetWindowTextLength(H)+1;
Хотя, впрочем, наверное, знаю - для "\0" в конце.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2006.05.07;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c