![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как определить, активна ли задача ? [D7, WinXP]
BFG9k © (2007-05-23 19:35:00)Есть хэндл главного окна программы. Это то окно, что отображается на панели задач. Как определить, активно ли оно ? (то есть находится на панели задач в нажатом-утопленном состоянии)
Leonid Troyanovsky (2007-05-24 17:45:00) [1]
> Сергей М. © (24.05.07 14:22) [7]
> Так ведь ?
Нет, конечно. Окно с кнопкой на таскбаре - приложения.
См., например, TApplication.SetTitle
--
Regards, LVT.
BFG9k (2007-05-24 15:57:00) [2]Че-то не работает ... ладно, видимо где-то еще ошибка
Сергей М. (2007-05-24 15:46:00) [3]
function HasFocus(hWnd: THandle): Boolean;
var
idProcess, idThread: DWord;
begin
Result := False;
idThread := GetWindowThreadProcessId(hWnd,@idProcess);
if idThread = GetCurrentThreadId then
Result:= GetFocus = hWnd
else
if AttachThreadInput(GetCurrentThreadId, idThread, True) then
try
Result:= GetFocus = hWnd;
finally
AttachThreadInput(GetCurrentThreadId, idThread, False);
end;
end;
BFG9k (2007-05-24 15:38:00) [4]неа .... это тоже окно, получившее фокус ввода...
clickmaker (2007-05-24 15:28:00) [5]GetActiveWindow()?
BFG9k (2007-05-24 15:12:00) [6]Сергей М. : ну мож я не так выразился .... мне нужно именно то, что в таскбаре .... я знаю, как его найти (по названию), но оно никогда не совпадает с GetFocus или GetForegroundWindow, в каком бы состоянии оно не было :(
Сергей М. (2007-05-24 14:54:00) [7]
> BFG9k
Активность задачи в Win32 - это вообще нонсенс.
Активность окна имеет смысл для конкретного треда.
Активность VCL-формы имеет смысл для конкретного VCL-приложения.
Активное окно = Окно, имеющее фокус ввода.
Активная VCL-форма <> Активное окно.
BFG9k (2007-05-24 14:37:00) [8]Leonid Troyanovsky, Сергей М. :
Кнопка в таскбаре - это и есть Application. Главная форма - это действительно другое. Я имел в виду именно кнопку в таскбаре, то есть application.
> Юрий Зотов © (23.05.07 21:19) [2]
> GetForegroundWindow?
нет ... и не GetTopWindow и не GetFocus ....
> Gtnz (23.05.07 19:48) [1]
> hasfocus?
А причем тут WinAPI, окна и хэндлы ?
....
Вообще даже GetWindowPlacement не помогает ... хотя по идее теоретически оттуда можно вытащить - активное окно или нет... но возвращается все время одно и то же значение для всех окон (имеется в виду TWindowPlacement.showCmd).
Сергей М. (2007-05-24 14:22:00) [9]
> Leonid Troyanovsky © (24.05.07 13:07) [6]
> Почему бы окну Application не быть "главным"
А действительно - почему ? Ведь оно и есть в этом случае главное.
Только вот к кнопке в таскбаре оно не имеет непоср.отношения - кнопка в таскбаре имеет отношение к окну формы, в дан.случае главной, а не к главному окну приложения.
Так ведь ?
Leonid Troyanovsky (2007-05-24 13:07:00) [10]
> Сергей М. © (24.05.07 12:06) [5]
> В случае с VCL GUI-приложением это утверждение не соответствует
> действительности.
Главное окно <> главная форма.
Почему бы окну Application не быть "главным".
--
Regards, LVT.
Сергей М. (2007-05-24 12:06:00) [11]
> хэндл главного окна программы. Это то окно, что отображается
> на панели задач
В случае с VCL GUI-приложением это утверждение не соответствует действительности.
SpellCaster (2007-05-24 11:31:00) [12]> [3] Германн © (24.05.07 01:25)
Ага, есть такое. Если стоит задача определить именно нажатость кнопки на панели задач, то это не так уж просто - поскольку если вывести на передний план окно, не отображающееся на панели задач, то кнопка окна, бывшего активным до этого, останется нажатой (сейчас попробовал с контакт-листом аськи).
Германн (2007-05-24 01:25:00) [13]
> BFG9k © (23.05.07 19:35)
>
> Есть хэндл главного окна программы. Это то окно, что отображается
> на панели задач. Как определить, активно ли оно ? (то есть
> находится на панели задач в нажатом-утопленном состоянии)
>
Прошу прощения за возможный offtop, но более чем неоднократно в ХР встречал ситуацию, когда "кнопка на панели задач утоплена", а окна её программы не видно! Нужно кликнуть по "утопленной" кнопке и программа вылезает на поверхность.
Юрий Зотов (2007-05-23 21:19:00) [14]GetForegroundWindow?
Gtnz (2007-05-23 19:48:00) [15]hasfocus?