Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.02.2015, 17:39
Zulander Zulander вне форума
Прохожий
 
Регистрация: 08.02.2015
Сообщения: 7
Версия Delphi: Delphi XE7
Репутация: 10
По умолчанию Проблема с выводом иконки в трее

Ситуация следующая - наваял программу, которая отлично работает, а все управление осуществляется через иконку в трее. При запуске программы иконка появляется проблем никаких. Но задача заключается в том, чтобы программа работала всегда и запускалась вместе с загрузкой операционной системы. Я конечно же через планировщик заданий создал задачу на запуск этой программы вместе с загрузкой ОС, но при удаленном подключении иконка в трее не появляется, хотя программа в процессах висит и отрабатыват как нужно. Вопрос в том, как бы вывести эту иконку того процесса, который уже запущен
Ответить с цитированием
  #2  
Старый 08.02.2015, 18:41
Аватар для Freeman
Freeman Freeman вне форума
Местный
 
Регистрация: 05.10.2012
Адрес: Санкт-Петербург
Сообщения: 577
Версия Delphi: 6
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Zulander
Вопрос в том, как бы вывести эту иконку того процесса, который уже запущен
Штатным решением является написание службы, услугами которой будут пользоваться приложения из пользовательского пространства.
__________________
Не стоит путать форумы с богадельнями. © Bargest
Ответить с цитированием
  #3  
Старый 08.02.2015, 19:08
Zulander Zulander вне форума
Прохожий
 
Регистрация: 08.02.2015
Сообщения: 7
Версия Delphi: Delphi XE7
Репутация: 10
По умолчанию

То есть если написать программу в качестве службы (Service Application), и в ней я реализую появление иконки в трее, то она появится у каждого пользователя? Ведь на самом деле не суть как я воздействую на программу будь то форма или иконка в трее, главное знать как работать именно с тем процессом, который запущен при загрузки ОС.
Ответить с цитированием
  #4  
Старый 08.02.2015, 20:16
Аватар для Freeman
Freeman Freeman вне форума
Местный
 
Регистрация: 05.10.2012
Адрес: Санкт-Петербург
Сообщения: 577
Версия Delphi: 6
Репутация: выкл
По умолчанию

Нет, служба не сможет добавлять значки в трей, особенно в Windows 7 и старше. Роль службы -- выступать распределителем монопольных ресурсов, вроде подключения к БД или доступа к какому-то сайту через API. Приложение со значком в трее должно запускаться из-под пользователя и взаимодействовать со службой.
__________________
Не стоит путать форумы с богадельнями. © Bargest
Ответить с цитированием
Этот пользователь сказал Спасибо Freeman за это полезное сообщение:
Zulander (09.02.2015)
  #5  
Старый 08.02.2015, 22:47
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

А при чём здесь службы не пойму, когда
Код:
...
 begin
 with TRegistry.Create do
   begin RootKey := HKEY_LOCAL_MACHINE;
    OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run', true);
    WriteString(Название программы, Application.ExeName);
   CloseKey;
   Free;
 end;
хотя использование HKLM - это дурной тон, но можно ключ и изменить
Ответить с цитированием
  #6  
Старый 09.02.2015, 13:35
Zulander Zulander вне форума
Прохожий
 
Регистрация: 08.02.2015
Сообщения: 7
Версия Delphi: Delphi XE7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
А при чём здесь службы не пойму, когда
Код:
...
 begin
 with TRegistry.Create do
   begin RootKey := HKEY_LOCAL_MACHINE;
    OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run', true);
    WriteString(Название программы, Application.ExeName);
   CloseKey;
   Free;
 end;
хотя использование HKLM - это дурной тон, но можно ключ и изменить
Немножко не понял что вы имели ввиду? Как работа с реестром поможет мне получить управление текущим процессом?
Ответить с цитированием
  #7  
Старый 09.02.2015, 14:30
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от Zulander
...задача заключается в том, чтобы программа работала всегда и запускалась вместе с загрузкой операционной системы...
Вот это и есть автозапуск путём "прописки" сборки в соответствующей ветке реестра
Ответить с цитированием
  #8  
Старый 09.02.2015, 15:50
Zulander Zulander вне форума
Прохожий
 
Регистрация: 08.02.2015
Сообщения: 7
Версия Delphi: Delphi XE7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
Вот это и есть автозапуск путём "прописки" сборки в соответствующей ветке реестра
Прочитайте пожалуйста весь пост от начала и до конца, вы отвечаете только на пол предложения вырванного из общего контекста, суть в том, что я не могу обратиться к уже запущенному процессу и тем более у пользователя вывести иконку.
И еще раз повторю вопрос, как работа с реестром (автозапуском) поможет мне получить управление текущим процессом?
Ответить с цитированием
  #9  
Старый 09.02.2015, 15:54
Zulander Zulander вне форума
Прохожий
 
Регистрация: 08.02.2015
Сообщения: 7
Версия Delphi: Delphi XE7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Freeman
Нет, служба не сможет добавлять значки в трей, особенно в Windows 7 и старше. Роль службы -- выступать распределителем монопольных ресурсов, вроде подключения к БД или доступа к какому-то сайту через API. Приложение со значком в трее должно запускаться из-под пользователя и взаимодействовать со службой.
Сижу эту мысль раскуриваю, спасибо
Ответить с цитированием
  #10  
Старый 09.02.2015, 16:16
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от Zulander
...как работа с реестром (автозапуском) поможет мне получить управление текущим процессом?
В данном случае - никак, это может лишь запустить программу при старте системы (без планировщика)
Ответить с цитированием
  #11  
Старый 09.02.2015, 16:19
Zulander Zulander вне форума
Прохожий
 
Регистрация: 08.02.2015
Сообщения: 7
Версия Delphi: Delphi XE7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
В данном случае - никак, это может лишь запустить программу при старте системы (без планировщика)
Ну и на том спасибо)
Ответить с цитированием
  #12  
Старый 09.02.2015, 16:39
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Оффтоп:
Всё же не могу понять, в чём проблема? - у меня есть несколько сборок с иконкой в трее что запускаются через реестр, иконка отображается всегда и успешно работает под любым пользователем от 95х до W7. Может всё дело в "удаленном подключении ", кстати, это как, если не секрет, объясните пжлст
Ответить с цитированием
  #13  
Старый 09.02.2015, 21:02
Аватар для Freeman
Freeman Freeman вне форума
Местный
 
Регистрация: 05.10.2012
Адрес: Санкт-Петербург
Сообщения: 577
Версия Delphi: 6
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Alegun
Всё же не могу понять, в чём проблема? - у меня есть несколько сборок с иконкой в трее что запускаются через реестр, иконка отображается всегда и успешно работает под любым пользователем от 95х до W7.
Если правильно понял, задача автора темы больше похожа на ситуацию со значками от драйвера видеокарты или звуковушки: драйвер монопольно управляет картой, которая волшебным образом не размножается при одновременном подключении пользователей, служба разруливает взаимодействие драйвера с пользовательскими процессами, а пользовательские процессы запускаются через твою ветку реестра и рисуют значок в трее. Вся эта цветомузыка работает в режиме быстрого переключения пользователей или на терминальном сервере.
__________________
Не стоит путать форумы с богадельнями. © Bargest
Ответить с цитированием
  #14  
Старый 11.02.2015, 03:34
Zulander Zulander вне форума
Прохожий
 
Регистрация: 08.02.2015
Сообщения: 7
Версия Delphi: Delphi XE7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Freeman
Если правильно понял, задача автора темы больше похожа на ситуацию со значками от драйвера видеокарты или звуковушки: драйвер монопольно управляет картой, которая волшебным образом не размножается при одновременном подключении пользователей, служба разруливает взаимодействие драйвера с пользовательскими процессами, а пользовательские процессы запускаются через твою ветку реестра и рисуют значок в трее. Вся эта цветомузыка работает в режиме быстрого переключения пользователей или на терминальном сервере.
Да, что то вроди. Из ситуации я вышел написав 2 приложения (Служба Windows и интерфейс пользователя). Служба все время мониторит конфигурационные ключи в реестре и если что-нибудь меняется, то и ведет себя соответственно, а пользователь запускает свое интерфейсное приложение и имеет возможность менять эти конфигурационные ключи в реестре. Вот собственно и все, всем спасибо
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:48.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025