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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2009, 20:05   #21
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
то и при запуске через exeшник программа запускается в свёрнутом виде (так быть не должно). Как сделать проверку: если программа запущена, то при нажатии на exeшник она разварачивается из трея или получает фокус, а если не запущена, то просто запустить её.
"давайте отделим мух от котлет":
1) вы хотите запустить программу в скрытом виде и должно быть наличие иконки в трее
2) вот это
Код:
Application.ShowMainForm := False или 
ShowWindow(Application.Handle, SW_HIDE);
ShowWindow(Application.MainForm.Han dle, SW_HIDE);
осуществляет скрытие приложения при запуске по formcreate
3) сворачивание или минимизация - это когда приложение присутствует на таскбаре в виде панельки
4) чтобы была иконка в трее нужно создать ее там, например через Shell_NotifyIcon или готовым компонентом, например cooltrayicon
5) необходимо назначить реакции на клики по иконке программы в трее (разворачивание и скрытие), теми-же showwindow
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 02.12.2009, 20:34   #22
TaYgA
Форумчанин
 
Аватар для TaYgA
 
Регистрация: 24.09.2009
Сообщений: 264
По умолчанию

raxp, несовсем так.
1) Я хочу чтоб только при автозагрузке программа запускалась в скрытом виде, а если запускать через exeшник (когда программа не запущена) она запускалась в развёрнутом виде.
2) Если программа запущена но скрыта в трее, то при клике по exeшнику она разварачивалась (а не запускался ещё один проект).
3) Если программа запущена в развёрнутом виде то при клике по exeшнику она получала фокус (а не запускался ещё один проект).
Использую компонент cooltrayicon. Клик по иконке программы в трее, чтоб она разворачивалась я прописал.
TaYgA вне форума Ответить с цитированием
Старый 03.12.2009, 00:00   #23
notHaker
Форумчанин
 
Аватар для notHaker
 
Регистрация: 01.12.2009
Сообщений: 569
По умолчанию

Цитата:
Сообщение от TaYgA Посмотреть сообщение
raxp, несовсем так.
1) Я хочу чтоб только при автозагрузке программа запускалась в скрытом виде, а если запускать через exeшник (когда программа не запущена) она запускалась в развёрнутом виде.
2) Если программа запущена но скрыта в трее, то при клике по exeшнику она разварачивалась (а не запускался ещё один проект).
3) Если программа запущена в развёрнутом виде то при клике по exeшнику она получала фокус (а не запускался ещё один проект).
Использую компонент cooltrayicon. Клик по иконке программы в трее, чтоб она разворачивалась я прописал.
1) Принимай параметр прогой. "C:\YourProgram.exe /hide" например в автозапуске. Если есть параметр /hide, то сворачивай.
2-3) Семафоры, семафоры... Поисчи на форуме, здесь же... 100% есть.
Вроде этого : "Как не допустить запуска второй копии программы". А отсальное дело техники...

ЫЗ: я не могу так слёту накодить те семафоры, тк давненько ими не занимался... надо бы память освежить. Если чего то не получится пиши.
Код - это работа, а работа стоит денег.

pz-game.ru. 2d зомби-сурвивал для олдфагов.

Последний раз редактировалось notHaker; 03.12.2009 в 00:03.
notHaker вне форума Ответить с цитированием
Старый 03.12.2009, 00:43   #24
TaYgA
Форумчанин
 
Аватар для TaYgA
 
Регистрация: 24.09.2009
Сообщений: 264
По умолчанию

notHaker, с 2 и 3 вроде всё ясно, поищу. А вот насчёт первого вопроса, что то совсем мутно Если вас не затруднит напишите пожалуйсто поподробней!!!
TaYgA вне форума Ответить с цитированием
Старый 03.12.2009, 00:53   #25
notHaker
Форумчанин
 
Аватар для notHaker
 
Регистрация: 01.12.2009
Сообщений: 569
По умолчанию

Цитата:
Сообщение от TaYgA Посмотреть сообщение
notHaker, с 2 и 3 вроде всё ясно, поищу. А вот насчёт первого вопроса, что то совсем мутно Если вас не затруднит напишите пожалуйсто поподробней!!!
Ну например... Если бы вы запустили прогу из коммандной строки например так :
start C:\MyProgram.exe /hide
То после запуска, в программе можно вызвать функцию GetCommandLine. Она передаёт строку с коммандой (в данном случае "C:\MyProgram.exe /hide"). В библиотеке rxLib, есть функция отделяющая параметры от комманды. А дальше вам решать что с этими параметрами делать, это же данные... Что роисходит при автозапуске :

То же самое... Только коммандную строку вызываете не вы, а система. И система выполняет комманду (абстрактно говоря ) прописанную в автозапуске.
Код - это работа, а работа стоит денег.

pz-game.ru. 2d зомби-сурвивал для олдфагов.

Последний раз редактировалось notHaker; 03.12.2009 в 01:03.
notHaker вне форума Ответить с цитированием
Старый 03.12.2009, 08:09   #26
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
В библиотеке rxLib, есть функция отделяющая параметры от комманды.
К черту сторонние библиотеки, когда есть стандартные классические средства - ParamCount и ParamStr;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.12.2009, 09:07   #27
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
1) Я хочу чтоб только при автозагрузке программа запускалась в скрытом виде, а если запускать через exeшник (когда программа не запущена) она запускалась в развёрнутом виде.
значит проверяйте есть-ли ключ в автозагрузке в formcreate, если есть - то скрывать, если нет - показывать
Цитата:
2) Если программа запущена но скрыта в трее, то при клике по exeшнику она разварачивалась (а не запускался ещё один проект).
используйте проверку на запущенную копию в dpr до инициализации, например globaladdatom
Код:
begin
  //антизапуск 2-копии
  PIWin := FindWindow(WINDOWCLASSNAME, NIL);
  if PIWin <> 0 then
    begin
     if Paramcount = 0 then halt;
     AtomFN := GlobalAddAtom(pChar(paramstr(0)));
     PostMessage(PIWin, CM_OPENFILE, AtomFN, 0);
     halt;
    end;
  //Run program
  Application.Initialize;
...
и считывание командной строки paramstr, как уже подсказал уважаемый Stilet
Цитата:
3) Если программа запущена в развёрнутом виде то при клике по exeшнику она получала фокус (а не запускался ещё один проект).
см. пункт 2
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 03.12.2009, 10:48   #28
notHaker
Форумчанин
 
Аватар для notHaker
 
Регистрация: 01.12.2009
Сообщений: 569
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
К черту сторонние библиотеки, когда есть стандартные классические средства - ParamCount и ParamStr;
Верте или нет. Такую функцию ток в rxLib видел, и у меня исторически сложилось, что када GetCommandLine юзал, то отделяющую функцию сам и написал.
Код - это работа, а работа стоит денег.

pz-game.ru. 2d зомби-сурвивал для олдфагов.
notHaker вне форума Ответить с цитированием
Старый 03.12.2009, 11:21   #29
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
то отделяющую функцию сам и написал.
...что тоже есть вариант...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.12.2009, 15:20   #30
TaYgA
Форумчанин
 
Аватар для TaYgA
 
Регистрация: 24.09.2009
Сообщений: 264
По умолчанию

Никак не могу разобраться с этой темой.
1)
Цитата:
значит проверяйте есть-ли ключ в автозагрузке в formcreate
Как это проверить?
Код:
FileExists
Я думаю не подойдёт, а подругому я не умею
2)
Код:
begin
  //антизапуск 2-копии
  PIWin := FindWindow(WINDOWCLASSNAME, NIL);
  if PIWin <> 0 then
    begin
     if Paramcount = 0 then halt;
     AtomFN := GlobalAddAtom(pChar(paramstr(0)));
     PostMessage(PIWin, CM_OPENFILE, AtomFN, 0);
     halt;
    end;
  //Run program
  Application.Initialize;
...
В какой процедуре это прописывать?
TaYgA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Несколько вопросов. Miron86 Компоненты Delphi 3 09.09.2009 18:25
несколько вопросов fitc Общие вопросы Delphi 28 14.07.2009 21:20
Несколько вопросов Зубоскалик Общие вопросы Delphi 14 20.11.2008 14:28
Несколько Вопросов Дорст Общие вопросы Delphi 3 12.11.2007 09:18
Несколько вопросов по Delphi 2005 Nez Общие вопросы Delphi 53 21.02.2007 05:49