Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2007.12.09;
Скачать: [xml.tar.bz2];

Вниз

Как определить, активна ли задача ?   Найти похожие ветки 

 
BFG9k ©   (2007-05-23 19:35) [0]

Есть хэндл главного окна программы. Это то окно, что отображается на панели задач. Как определить, активно ли оно ? (то есть находится на панели задач в нажатом-утопленном состоянии)


 
Gtnz   (2007-05-23 19:48) [1]

hasfocus?


 
Юрий Зотов ©   (2007-05-23 21:19) [2]

GetForegroundWindow?


 
Германн ©   (2007-05-24 01:25) [3]


> BFG9k ©   (23.05.07 19:35)
>
> Есть хэндл главного окна программы. Это то окно, что отображается
> на панели задач. Как определить, активно ли оно ? (то есть
> находится на панели задач в нажатом-утопленном состоянии)
>

Прошу прощения за возможный offtop, но более чем неоднократно в ХР встречал ситуацию, когда "кнопка на панели задач утоплена", а окна её программы не видно! Нужно кликнуть по "утопленной" кнопке и программа вылезает на поверхность.


 
SpellCaster   (2007-05-24 11:31) [4]

> [3] Германн ©   (24.05.07 01:25)

Ага, есть такое. Если стоит задача определить именно нажатость кнопки на панели задач, то это не так уж просто - поскольку если вывести на передний план окно, не отображающееся на панели задач, то кнопка окна, бывшего активным до этого, останется нажатой (сейчас попробовал с контакт-листом аськи).


 
Сергей М. ©   (2007-05-24 12:06) [5]


> хэндл главного окна программы. Это то окно, что отображается
> на панели задач


В случае с VCL GUI-приложением это утверждение не соответствует действительности.


 
Leonid Troyanovsky ©   (2007-05-24 13:07) [6]


> Сергей М. ©   (24.05.07 12:06) [5]

> В случае с VCL GUI-приложением это утверждение не соответствует
> действительности.

Главное окно <> главная форма.
Почему бы окну Application не быть "главным".

--
Regards, LVT.


 
Сергей М. ©   (2007-05-24 14:22) [7]


> Leonid Troyanovsky ©   (24.05.07 13:07) [6]


> Почему бы окну Application не быть "главным"


А действительно - почему ? Ведь оно и есть в этом случае главное.

Только вот к кнопке в таскбаре оно не имеет непоср.отношения - кнопка в таскбаре имеет отношение к окну формы, в дан.случае главной, а не к главному окну приложения.

Так ведь ?


 
BFG9k ©   (2007-05-24 14:37) [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:54) [9]


> BFG9k


Активность задачи в Win32 - это вообще нонсенс.

Активность окна имеет смысл для конкретного треда.

Активность VCL-формы имеет смысл для конкретного VCL-приложения.

Активное окно = Окно, имеющее фокус ввода.

Активная VCL-форма <> Активное окно.


 
BFG9k ©   (2007-05-24 15:12) [10]

Сергей М. : ну мож я не так выразился .... мне нужно именно то, что в таскбаре .... я знаю, как его найти (по названию), но оно никогда не совпадает с GetFocus или GetForegroundWindow, в каком бы состоянии оно не было :(


 
clickmaker ©   (2007-05-24 15:28) [11]

GetActiveWindow()?


 
BFG9k ©   (2007-05-24 15:38) [12]

неа .... это тоже окно, получившее фокус ввода...


 
Сергей М. ©   (2007-05-24 15:46) [13]

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:57) [14]

Че-то не работает ... ладно, видимо где-то еще ошибка


 
Leonid Troyanovsky ©   (2007-05-24 17:45) [15]


> Сергей М. ©   (24.05.07 14:22) [7]

> Так ведь ?

Нет, конечно. Окно с кнопкой на таскбаре - приложения.
См., например, TApplication.SetTitle

--
Regards, LVT.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2007.12.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.061 c
6-1175397157
-=Germe$=-
2007-04-01 07:12
2007.12.09
SMTP сервер.


2-1195070123
olegusis
2007-11-14 22:55
2007.12.09
ICO #2


11-1179751681
Don
2007-05-21 16:48
2007.12.09
LikeSpeedButton


2-1194968009
Галинка
2007-11-13 18:33
2007.12.09
Named Pipes: как с ними в линуксе обращаться?


15-1194857221
@!!ex
2007-11-12 11:47
2007.12.09
Шифрование ICQ сообщение.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский