Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 503

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!
Как мне получить handle всех запущеных окон в windows?

padonak Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: padonak (статус: Посетитель)
Вопрос отправлен: 15 августа 2010, 17:14
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: bugmenot

1. Перечислить окна верхнего уровня - EnumWindows - http://msdn.microsoft.com/en-us/library/ms633497(VS.85).aspx
2. И для каждого из них перечислить дочерние окна - EnumChildWindows - http://msdn.microsoft.com/en-us/library/ms633494(VS.85).aspx

!. Не забывай объявить функции обратного вызова как stdcall

Ответ отправил: bugmenot (статус: 3-ий класс)
Время отправки: 15 августа 2010, 17:44
Оценка за ответ: 4

Комментарий к оценке: мощь конечно, ток у меня с англицким не очень (((

Мини-форум вопроса

Всего сообщений: 7; последнее сообщение — 15 августа 2010, 18:31; участников в обсуждении: 2.
padonak

padonak (статус: Посетитель), 15 августа 2010, 17:47 [#1]:

bugmenot: цель вобще какая, найди окно, и выполнить группу действий над ним... затем найди следующее и т.д.
padonak

padonak (статус: Посетитель), 15 августа 2010, 18:00 [#2]:

procedure TrimWorkingSet;
var
MainHandle: THandle;
begin
if Win32Platform = VER_PLATFORM_WIN32_NT then
begin
MainHandle := OpenProcess(PROCESS_ALL_ACCESS, false, GetCurrentProcessID);
SetProcessWorkingSetSize(MainHandle, DWORD(-1), DWORD(-1));
CloseHandle(MainHandle);
end;
end;

эта процедура идёт только к своему приложению... я думал что хватит handle чужого окна, чтобы использовать эту процедуру на другом приложении, но увы не вышло... эксперты, как можно сделать так, чтобы эта процедура пробегалась по всем приложениям и снижала нагрузку на систему?
bugmenot

bugmenot (статус: 3-ий класс), 15 августа 2010, 18:11 [#3]:

почти связный текст можно добыть...
http://translate.google.com/translate?hl=ru&sl=en&u=http://msdn.microsoft.com/en-us/library/ms633497(VS.85).aspx
виконання програми розпочинається з того самого мiсця, де призупинилося.

bugmenot

bugmenot (статус: 3-ий класс), 15 августа 2010, 18:21 [#4]:

Второй вопрос вообще к процессам относится, не к окнам. Реального эффекта не будет, сразу говорю.
виконання програми розпочинається з того самого мiсця, де призупинилося.

padonak

padonak (статус: Посетитель), 15 августа 2010, 18:24 [#5]:

bugmenot: будет...
padonak

padonak (статус: Посетитель), 15 августа 2010, 18:26 [#6]:

bugmenot: я сравнивал нагрузку до использования процедуры и после, разница большая... по использовании окна, нагрузка возрастает, но если воткнуть таймер, то будет то что нужно...
padonak

padonak (статус: Посетитель), 15 августа 2010, 18:31 [#7]:

bugmenot: спасибо, вопрос закрыт...

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:41
Выполнено за 0.03 сек.