![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Главные окна из списка [D7, WinXP]
JanMihail © (2007-05-24 16:23:00)Есть список окон Windows и дескриптор каждого окна:
...
Delphi 7
Microsoft Word
Unit1.pas
...
Как узнать какие из них являются главными, т.е. Unit1.pas входит в Delphi 7 следовательно из этого списка главные:
Delphi 7
Microsoft Word
Как это узнать?
(2007-06-13 19:04:00) [1]Удалено модератором
(2007-06-13 19:04:00) [2]Удалено модератором
(2007-06-02 01:36:00) [3]Удалено модератором
JanMihail (2007-05-25 12:13:00) [4]
> DVM © (24.05.07 21:21) [7]
Спасибо!!!Именно это мне нужно!!!
DVM (2007-05-24 21:23:00) [5]строку с MagicDWord можно убрать.
DVM (2007-05-24 21:21:00) [6]Если нужны те окна которые на таскбаре, то тут не все так просто. Я как то занимался подобным вопросом, в результате так и не смог добиться 100 процентного соответствия с панелью задач. Вот что получилось (этот код работает иногда не совсем верно с окнами экселя):
function IsAppWindow(Wnd: HWND): BOOL;
var
Style, ExtStyle: LongInt;
hOwner, hParent: HWND;
begin
Result := true;
if not IsWindow(Wnd) then
begin
Result := false;
exit;
end;
Style := GetWindowLong(Wnd, GWL_STYLE);
ExtStyle := GetWindowLong(Wnd , GWL_EXSTYLE);
hOwner := GetWindow(Wnd, GW_OWNER);
hParent := GetParent(Wnd);
if (Style and WS_CHILD) <> 0 then result := false;
if (Style and WS_VISIBLE) = 0 then Result := false;
if not IsWindowVisible(Wnd) then Result := false;
if (ExtStyle and WS_EX_TOOLWINDOW) <> 0 then Result := false;
if (ExtStyle and WS_EX_MDICHILD) <> 0 then Result := false;
if (hOwner <> 0) and ((ExtStyle and WS_EX_APPWINDOW) = 0) then result := false;
if (hOwner <> 0) and Result then Result := not IsAppWindow(hOwner);
if hParent <> 0 then Result := false;
if GetWindowLong(Wnd , GWL_USERDATA) = MagicDWord then Result := false;
end; // End of function IsAppWindow;
IceBeerg (2007-05-24 18:59:00) [7]Может главне это те у которых родитель explorer.exe? По PID'у процесса смотреть?
Anatoly Podgoretsky (2007-05-24 17:00:00) [8]> Сергей М. (24.05.2007 16:48:03) [3]
А понятие главные окна - это не понятие системы, а конкретного программиста, только он решает, что такое главное окно
clickmaker (2007-05-24 16:50:00) [9]ну судя по вопросу, автору нужны именно те окна, которые на таскбаре
Сергей М. (2007-05-24 16:48:00) [10]
> clickmaker © (24.05.07 16:42) [2]
Это ж не "главныые окна" ..
clickmaker (2007-05-24 16:42:00) [11]ну разве что
GetWindowLong(Handle, GWL_EXSTYLE) and WS_EX_APPWINDOW <> 0
WS_EX_APPWINDOW - окна с кнопками на таскбаре
Сергей М. (2007-05-24 16:25:00) [12]Считай что никак.