Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.01.2008, 23:01   #1
SalasAndriy
Форумчанин Подтвердите свой е-майл
 
Аватар для SalasAndriy
 
Регистрация: 01.11.2007
Сообщений: 157
Вопрос Мониториг SystemTray

Здраствуйте! У меня такой вопрос: как можно отследить приложения у которых есть значок созданый на панели SystemTray? Я делаю программу типа оболочки Windows и панели задач при её работе видно вообще не будет. Много программ работают с SystemTray и мне нужно чтоб они отслеживались моей программой. Может кто знает ответ на данный вопрос. Буду очень благодарен
SalasAndriy вне форума Ответить с цитированием
Старый 29.01.2008, 23:05   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Рассматривал такую возможность, реализация такой фичи это запуск вашей оболочке до запуска explorer, т.к. это не перехват api... тут намного все сложней... Почитайте прежде всего о низкоуровневом подходе к помещению в трей иконки и ее обработке... Почитайте в сети несколько сетей, найти варианта 2 думаю сможете
BOBAH13 вне форума Ответить с цитированием
Старый 29.01.2008, 23:16   #3
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Есть вариант с хукингом этого окна - это простой тулбар и работает он с обычными для тулбара сообщениями, вроде TB_SETBUTTONINFO. Честно говоря, так и не дошли руки с этим поэкспериментировать, но можете посмотреть что-нибудь наподобие litestep - исходники открытые и я помню, что этот код там был, просто не дочитал до конца.
B_N вне форума Ответить с цитированием
Старый 30.01.2008, 00:08   #4
SalasAndriy
Форумчанин Подтвердите свой е-майл
 
Аватар для SalasAndriy
 
Регистрация: 01.11.2007
Сообщений: 157
По умолчанию

Цитата:
BOBAH13: реализация такой фичи это запуск вашей оболочке до запуска explorer
Цитата:
B_N: Есть вариант с хукингом этого окна - это простой тулбар и работает он с обычными для тулбара сообщениями, вроде TB_SETBUTTONINFO. Честно говоря, так и не дошли руки с этим поэкспериментировать, но можете посмотреть что-нибудь наподобие litestep - исходники открытые и я помню, что этот код там был, просто не дочитал до конца.
Программа не будет запускаться перед Explorer. Когда она запуститься она автомати уберет панель задач, заблокирует открытие диспетчера задач, заблокирует рабочий стол, будет работать в полноэкранном режиме. Она создаеться для того чтоб пользователь не имел доступ к другим ресурсам компьютера кромеа как игры и некоторые программы. вобщем для компьютерного зала. Нею по локальной сети будет управлять сервер.

Спасибо за вашу помощь!

Может еще у кого-то есть какие-то предложения

Последний раз редактировалось SalasAndriy; 30.01.2008 в 00:12.
SalasAndriy вне форума Ответить с цитированием
Старый 30.01.2008, 00:11   #5
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от SalasAndriy Посмотреть сообщение
Она создаеться для того чтоб пользователь не имел доступ к другим ресурсам компьютера крома как игры и некоторые программы. вобщем для компьютерного зала.
А при чем здесь тогда Notification Area? Пишите "Screen Saver" своего рода. Хотя, конечно, под NT есть масса более гибких способов.
B_N вне форума Ответить с цитированием
Старый 30.01.2008, 00:35   #6
SalasAndriy
Форумчанин Подтвердите свой е-майл
 
Аватар для SalasAndriy
 
Регистрация: 01.11.2007
Сообщений: 157
По умолчанию

Я имею ввиду что при её работе могут быть запущены программы на панели SystemTray и мне надо чтоб программа как-то их видела.

Цитата:
можете посмотреть что-нибудь наподобие litestep - исходники открытые и я помню, что этот код там был
Я гляну на счёт litestep. Может и найду ответ
SalasAndriy вне форума Ответить с цитированием
Старый 30.01.2008, 00:41   #7
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

B_N на словах всегда просто Я бы первым делом заблокировал explorer, потом хук на все окна ( через длл ) на клавиши. Потом перехват CreateProcess, чтобы точно знать запуск всех ехе, в том числе и системных. Ну это первое что пришло в голову, потом надо будет почитать спецификацию по работе виндовс, просмотреть все аспекты.
BOBAH13 вне форума Ответить с цитированием
Старый 30.01.2008, 00:42   #8
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от SalasAndriy Посмотреть сообщение
Я имею ввиду что при её работе могут быть запущены программы на панели SystemTray и мне надо чтоб программа как-то их видела.

Я гляну на счёт litestep. Может и найду ответ
Скорее всего, найдете. Там был этот код, просто не хочется искать сейчас исходники лайтстепа . Правда, честно говоря, я не до конца понял Вашу задачу, если объясните точнее, может быть присоветую что-нибудь хитрое.
B_N вне форума Ответить с цитированием
Старый 30.01.2008, 00:47   #9
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
B_N на словах всегда просто Я бы первым делом заблокировал explorer, потом хук на все окна ( через длл ) на клавиши. Потом перехват CreateProcess, чтобы точно знать запуск всех ехе, в том числе и системных. Ну это первое что пришло в голову, потом надо будет почитать спецификацию по работе виндовс, просмотреть все аспекты.
Да я и не спорю о простоте, сам ведь пишу, что руки не дошли. А насчет хуков и прочих мелочей у меня, лично, всегда есть безотказное решение - нулевое кольцо

И, кстати, блокировать эксплорер совсем ни к чему - достаточно написать свой шелл, ИЛИ ДАЖЕ (крамола ) - повесить готовый

Последний раз редактировалось zetrix; 30.01.2008 в 08:40.
B_N вне форума Ответить с цитированием
Старый 30.01.2008, 01:06   #10
SalasAndriy
Форумчанин Подтвердите свой е-майл
 
Аватар для SalasAndriy
 
Регистрация: 01.11.2007
Сообщений: 157
По умолчанию

Цитата:
Правда, честно говоря, я не до конца понял Вашу задачу, если объясните точнее, может быть присоветую что-нибудь хитрое.
Ну вот запускаеться Windows после загрузки всех драйверов и программ срабатует на мою программу автозапуск который прописан в реестре. Потом после запуска в событии OnCreate она уберет с глаз пользователя панель задач, заблокирует кнопку Windows на клавиатуре чтоб нельзя было никаким способом вызвать меню пуск, заблокирует рабочий стол(скроет все ярлыки и заблокирует от вызова контекстного меню), блокирует вызов диспетчера задач.

Дальше связываеться по локальной сети с сервером (еще одной программой) и получает от него команды что делать с ПК ну эт не важно.

При её работе пользователь сможет запускать например плеер Winamp который можно будет свертывать в панель SystemTray которая храниться в оперативе, но её не видно. И потом возникнет потребность вызвать Winamp из этой кнопки на панели SystemTray, но пользователь этого сделать не сможет потому как панель SystemTray скрыта и мне надо чтоб аналог этой панели отображался в моей программе, Чтоб другое приложение, при создании иконки в SystemTray, моя программа смогла этот значок увидеть.

Например создать какой-то список приложений имеющих в данный момент значек на панели SystemTray.

и увы немогу с этим справиться, может вы мне поможете

Последний раз редактировалось SalasAndriy; 30.01.2008 в 01:08.
SalasAndriy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
наверно SystemTray RealSHELS Общие вопросы Delphi 5 28.05.2008 15:27