Форум: "Основная";
Текущий архив: 2007.08.19;
Скачать: [xml.tar.bz2];
ВнизГлавные окна из списка Найти похожие ветки
← →
JanMihail © (2007-05-24 16:23) [0]Есть список окон Windows и дескриптор каждого окна:
...
Delphi 7
Microsoft Word
Unit1.pas
...
Как узнать какие из них являются главными, т.е. Unit1.pas входит в Delphi 7 следовательно из этого списка главные:
Delphi 7
Microsoft Word
Как это узнать?
← →
Сергей М. © (2007-05-24 16:25) [1]Считай что никак.
← →
clickmaker © (2007-05-24 16:42) [2]ну разве что
GetWindowLong(Handle, GWL_EXSTYLE) and WS_EX_APPWINDOW <> 0
WS_EX_APPWINDOW - окна с кнопками на таскбаре
← →
Сергей М. © (2007-05-24 16:48) [3]
> clickmaker © (24.05.07 16:42) [2]
Это ж не "главныые окна" ..
← →
clickmaker © (2007-05-24 16:50) [4]ну судя по вопросу, автору нужны именно те окна, которые на таскбаре
← →
Anatoly Podgoretsky © (2007-05-24 17:00) [5]> Сергей М. (24.05.2007 16:48:03) [3]
А понятие главные окна - это не понятие системы, а конкретного программиста, только он решает, что такое главное окно
← →
IceBeerg © (2007-05-24 18:59) [6]Может главне это те у которых родитель explorer.exe? По PID"у процесса смотреть?
← →
DVM © (2007-05-24 21:21) [7]Если нужны те окна которые на таскбаре, то тут не все так просто. Я как то занимался подобным вопросом, в результате так и не смог добиться 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;
← →
DVM © (2007-05-24 21:23) [8]строку с MagicDWord можно убрать.
← →
JanMihail © (2007-05-25 12:13) [9]
> DVM © (24.05.07 21:21) [7]
Спасибо!!!Именно это мне нужно!!!
← →
имя (2007-06-02 01:36) [10]Удалено модератором
← →
имя (2007-06-13 19:04) [11]Удалено модератором
← →
имя (2007-06-13 19:04) [12]Удалено модератором
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2007.08.19;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.06 c