Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.02.18;
Скачать: CL | DM;

Вниз

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

 
Mozgan   (2007-01-27 20:20) [0]

Помогите пожалуйста, как можно подсчитать количество открытых (запущенных) окон класса IEFrame? Точнее сколько на данный момент открыто окон Internet Explorer?


 
FAskerQ ©   (2007-01-27 20:37) [1]

Можно таким вот убогим способом

var
 Wnd: hWnd;
 buff: array[0..MAX_PATH] of Char;
 i: integer;
begin
 i:= 0;
 Wnd := GetWindow(Handle, GW_HWNDFIRST);
 while Wnd <> 0 do
 begin
   if IsWindowVisible(Wnd) then
    begin
      GetClassName(Wnd, buff, SizeOf(buff));
      if buff = "IEFrame" then
        i:= i + 1;
    end;
   Wnd := GetWindow(Wnd, GW_HWNDNEXT);
 end;
 Caption:= IntToStr(i);


 
Mozgan   (2007-01-27 20:41) [2]

Друг мой!  

1000 и 1000 благодарности тебе! Спасибо тебе большое, я над этой темой бился несколько дней, но ничего толком не выходило. Всегада только одно окно...
Ещё раз спасибо! Щас буду изучать код!


 
Mozgan   (2007-01-27 21:02) [3]

Уважаемый FAskerQ!
Спасибо за пример, теперь ясно как определять и посчитывать.
Но возник ещё од ин вопрос. Как я могу закрыть эти (открытые) окна?

Вот кусок, который хочу использовать:
windows.PostMessage(findwindow("IEFrame",nil),wm_close,0,0);


 
Mozgan   (2007-01-27 21:52) [4]

Я конечно извиняюсь за повторы, но не могли бы вы подсказать как можно закрыть все-таки все открытые окна?


 
antonn ©   (2007-01-27 23:18) [5]

вот функция, принудительно закрывает все окна - устоять не возможно :)
function CloseAllWindow(RParam: Longword): Boolean;
var TTokenHd: THandle;
TTokenPvg: TTokenPrivileges;
cbtpPrevious: DWORD;
rTTokenPvg: TTokenPrivileges;
pcbtpPreviousRequired: DWORD;
tpResult: Boolean;
const SE_SHUTDOWN_NAME = "SeShutdownPrivilege";
begin
if Win32Platform = VER_PLATFORM_WIN32_NT then begin
  tpResult := OpenProcessToken(GetCurrentProcess(),
    TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,
    TTokenHd);
  if tpResult then begin
    tpResult := LookupPrivilegeValue(nil,SE_SHUTDOWN_NAME,TTokenPvg.Privileges[0].Luid);
    TTokenPvg.PrivilegeCount := 1;
    TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
    cbtpPrevious := SizeOf(rTTokenPvg);
    pcbtpPreviousRequired := 0;
    if tpResult then
     Windows.AdjustTokenPrivileges(TTokenHd,False,TTokenPvg, cbtpPrevious,rTTokenPvg,pcbtpPreviousRequired);
  end;
end;
Result := ExitWindowsEx(RParam, 0);
end;


пример использования CloseAllWindow(EWX_POWEROFF or EWX_FORCE)


 
FAskerQ ©   (2007-01-28 00:47) [6]


> antonn ©   (27.01.07 23:18) [5]


Жестокий вы человек однако


> Mozgan   (27.01.07 21:02) [3]


Можно таким вот убогим способом

var
Wnd: hWnd;
buff: array[0..MAX_PATH] of Char;
lpdwProcessId: DWORD;
PrHandle: THandle;
begin
 Wnd := GetWindow(Handle, GW_HWNDFIRST);
 while Wnd <> 0 do
 begin
   if IsWindowVisible(Wnd) then
   begin
     GetClassName(Wnd, buff, SizeOf(buff));
     if buff = "IEFrame" then
     begin
       GetWindowThreadProcessId(Wnd, lpdwProcessId);
       PrHandle:= OpenProcess(PROCESS_TERMINATE, false, lpdwProcessId);
       TerminateProcess(PrHandle, 0);
     end;
   end;
   Wnd := GetWindow(Wnd, GW_HWNDNEXT);
 end;


 
Mozgan   (2007-01-28 20:04) [7]

FAskerQ!
Огоромное спасибо за помощь и наглядный пример, он помог ПРАВИЛЬНО исвоить материал. И самостоятельно решить ряд задач, которые придумал сам!
Ещё раз спасибо!

antonn! Тебе тоже большое спасибо! Не обижайса, ты не жестокий человек, просто твой вариант для меня был чуть-чуть трудоемок для понимания. Начинающий же. Спасибо!


 
$P|@Sh   (2007-01-28 21:02) [8]

Mozgan, ты прям сама вежливость :-DDDDDD



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

Текущий архив: 2007.02.18;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.043 c
11-1148388361
Виталий(гость)
2006-05-23 16:46
2007.02.18
Не могу обратиться к свойству Caption


9-1143750544
Kavi
2006-03-31 00:29
2007.02.18
тест графики


2-1170250227
XTD
2007-01-31 16:30
2007.02.18
Куда загрузить список Имя,Изображение?


4-1160299759
breeze
2006-10-08 13:29
2007.02.18
дата создания процесса


4-1160388543
novice_man
2006-10-09 14:09
2007.02.18
Использование SHBrowseForFolder.