Форум: "WinAPI";
Текущий архив: 2002.06.27;
Скачать: [xml.tar.bz2];
ВнизКак получить handle окна, имеющего фокус ввода? Найти похожие ветки
← →
Deus (2002-04-29 18:14) [0]GetFocus - только для моего процесса...:(
GetForegroundWindow - возвращает главное окно.
А если в этом окне поле ввода, в котором стоит курсор - как получить его handle?
Мне нужно что-то типа GetFocus, но для всей системы...
← →
Song (2002-04-29 18:16) [1]GetWindowFromPoint() ???
← →
Deus (2002-04-29 18:21) [2]Я наверно не очень внятно спросил.
Мне нужно получить hwnd окна, имеющего фокус ввода клавиатуры.
GetWindowFromPoint - как может мне помочь?
← →
troits (2002-04-29 20:16) [3]Попробуй
AttachThreadInput, потом GetFocus
← →
troits (2002-04-30 11:23) [4]
function GetFocusedWindow: HWND;
var
CurrThID, ThID: DWORD;
begin
result := GetForegroundWindow;
if result <> 0 then
begin
CurrThID := GetCurrentThreadId;
ThID := GetWindowThreadProcessId(result, // handle to window
nil // process identifier
);
result := 0;
if AttachThreadInput(CurrThID, ThID, True) then
begin
result := GetFocus;
AttachThreadInput(CurrThID, ThID, False);
end;
end;
end;
← →
Deus (2002-04-30 17:42) [5]Спасибо большое, troits, я уже так сделал.
В общем то, начиная с 98 есть такая ф-я: GetGUIThreadInfo
С ней проще.
Правда, пока никак не получается :))))
Или хэдл левый, или вообще 0/nil возвращается. Копаю....
Конкектно твоя ф-я всегда возвращает 0. :(((
винды XP, delphi 5
← →
troits (2002-04-30 19:31) [6]>Deus
Ну, так уж и всегда ;)
Согласен, не учитывается случай, когда активное окно в вызывающем Thread-е (Тогда AttachThreadInput возвращает False)
Вот исправленная версия. У меня все работает (Win2k Delphi 5.0)
function GetFocusedWindow: HWND;
var
CurrThID, ThID: DWORD;
begin
result := GetForegroundWindow;
if result <> 0 then
begin
CurrThID := GetCurrentThreadId;
ThID := GetWindowThreadProcessId(result, // handle to window
nil // process identifier
);
result := 0;
if CurrThID = ThId then
result := GetFocus
else
begin
if AttachThreadInput(CurrThID, ThID, True) then
begin
result := GetFocus;
AttachThreadInput(CurrThID, ThID, False);
end;
end;
end;
end;
← →
Deus (2002-04-30 20:06) [7]Да, точно, работает!
Большое спасибо!
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.06.27;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c