Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как сделать, чтоб программу можно было запустить, комбинацией WIN+X? 
:(
    Опции темы
78125
Дата 20.6.2003, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 20.1.2003
Где: Санкт-Петербург

Репутация: нет
Всего: нет



САБЖ

После установки программы она должна запускаться горячей комбинацией. (Может Sheeld Express и ключи реестра какие переправить).

После того, как программа запущена, и была свернута, та же горячая комбинация должна восстанавливать окно поверх всех........
--------------------
купим подпись
PM MAIL   Вверх
SmaLL
Дата 20.6.2003, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 557
Регистрация: 17.12.2002
Где: Voronezh

Репутация: 1
Всего: 2



Сделай для проги ярлык и назнач в нЁм горячую комбинацию
Когда прога уже запущена, то повторное нажатие на комбинацию запустит вторую копию программы, и вторая копия должна проверять, а не запущена ли первая копия, если ДА, то активировать первую копию, а самой закрыться.
Т.Е. ищи "как предотвратить запуск второй копии приложеия"


--------------------
Что ни делается - всЁ к лучшему! SmallWeb
Мой адрес не дом и не улица, мой адрес родной пивзавод!
PM MAIL WWW ICQ   Вверх
stab
Дата 20.6.2003, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 14
Всего: 48



поискал в реестре имена прог которые запускаются по Win+что-нить и не нашел, так что судя по всему тока через хуки.


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
78125
Дата 20.6.2003, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 20.1.2003
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Цитата(SmaLL @ 20.6.2003, 12:38)
Когда прога уже запущена, то повторное нажатие на комбинацию запустит вторую копию программы, и вторая копия должна проверять, а не запущена ли первая копия, если ДА, то активировать первую копию, а самой закрыться.
Т.Е. ищи "как предотвратить запуск второй копии приложеия"

Можно написать текстовый файлик, который будет содержать 0 или 1 в зависимости от запущенности программы, повторный запуск, с проверкой этого файла, приведет к закрытию копии....
--------------------
купим подпись
PM MAIL   Вверх
SmaLL
Дата 20.6.2003, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 557
Регистрация: 17.12.2002
Где: Voronezh

Репутация: 1
Всего: 2



Цитата(78125 @ 20.6.2003, 13:07)
Можно написать текстовый файлик, который будет содержать 0 или 1 в зависимости от запущенности программы, повторный запуск, с проверкой этого файла, приведет к закрытию копии....

А если прога вылетела в трубу, в смысле прога подвисла и пришлось снять задачу.
Тогда у тебя прога больше не запустится.

Такое делается либо мьютексами либо FindWindow


--------------------
Что ни делается - всЁ к лучшему! SmallWeb
Мой адрес не дом и не улица, мой адрес родной пивзавод!
PM MAIL WWW ICQ   Вверх
Shuricksoft
Дата 20.6.2003, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 27.3.2002
Где: Odessa, Ukraine

Репутация: нет
Всего: нет



Где-то тут уже обсуждалась подобная тема. Или не тут =) Короче, там, вроде как, через какие-то "атомы" мутили - остаётся след в памяти, и вторая прога не запускается. А перед выгрузкой - затирается "след".
PM MAIL ICQ   Вверх
dm9
Дата 20.6.2003, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 6
Всего: 137



Shuricksoft
ИМХО, то же, что и с файлом. Если вырубят программу по CAD, до перезагрузки винды программа больше не запустится. (Насколько я помню, атомы остаются в памяти, пока их не уберёшь сам (в программе) или пока не перегрузишься).
PM MAIL ICQ   Вверх
78125
Дата 20.6.2003, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 20.1.2003
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Цитата(SmaLL @ 20.6.2003, 12:38)
Сделай для проги ярлык и назнач в нЁм горячую комбинацию

мне нужна комбинация не ctrl + alt + X
а необходимо WIN + X
--------------------
купим подпись
PM MAIL   Вверх
&-ray
Дата 20.6.2003, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 406
Регистрация: 15.4.2003
Где: Казахстан, г Аста на

Репутация: нет
Всего: нет



Цитата
вторая копия должна проверять, а не запущена ли первая копия, если ДА, то активировать первую копию, а самой закрыться.


Это делается в dpr:

Код

var
PrevWin: HWND;

begin
 Application.Initialize;
 PrevWin:=findwindow('TForm1','Form1');
 if PrevWin<>0
 then begin
         SetForegroundWindow(PrevWin);
         halt;
         end;
 Application.CreateForm(TForm1, Form1);
 Application.Run;
end.



--------------------
"Совсем неважно от чего помрешь, ведь куда важнее - для чего родился..." С.Б.

--------------------
И снова мышь беру я в руки
Куда иду? - Конечно в сруки!
PM MAIL WWW   Вверх
stab
Дата 20.6.2003, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 14
Всего: 48



Цитата
Такое делается либо мьютексами либо FindWindow


если по FindWindow делать, так как это приведено выше то тогда отлаживать будет не удобно, т.к. этот код найдет окно в дизайнере дельфей, но это так мелочи


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
SmaLL
Дата 21.6.2003, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 557
Регистрация: 17.12.2002
Где: Voronezh

Репутация: 1
Всего: 2



Цитата(cully @ 20.6.2003, 21:52)
если по FindWindow делать, так как это приведено выше то тогда отлаживать будет не удобно, т.к. этот код найдет окно в дизайнере дельфей, но это так мелочи

Согласен, но я пользуюсь операторами условной компиляции, так что никаких напрягов


--------------------
Что ни делается - всЁ к лучшему! SmallWeb
Мой адрес не дом и не улица, мой адрес родной пивзавод!
PM MAIL WWW ICQ   Вверх
&-ray
Дата 21.6.2003, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 406
Регистрация: 15.4.2003
Где: Казахстан, г Аста на

Репутация: нет
Всего: нет



А я вообще этот код прикрываю скобками {} до лучших времен, а когда проект уже готов 100%, открываю его и компилирую последний раз wink.gif


--------------------
"Совсем неважно от чего помрешь, ведь куда важнее - для чего родился..." С.Б.

--------------------
И снова мышь беру я в руки
Куда иду? - Конечно в сруки!
PM MAIL WWW   Вверх
stab
Дата 21.6.2003, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 14
Всего: 48



я то ж так делал раньше, но больно уж часто приходилось {$DEFINE DEBUG} то коментить, то раскоменчивать, в итоге сделал через атомы. И мой вам совет делайте так же да будет вам меньше работы. smile.gif


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
78125
  Дата 24.6.2003, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 20.1.2003
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Цитата(78125 @ 20.6.2003, 19:18)
мне нужна комбинация не ctrl + alt + X
а необходимо WIN + X

Всем, большое спасибо!
Вот только теперь непосредственно с комбинацией горячих клавиш помогите.... hehe.gif
--------------------
купим подпись
PM MAIL   Вверх
Guest
Дата 17.7.2003, 12:35 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата
Это делается в dpr:

Код

var
PrevWin: HWND;

begin
 Application.Initialize;
 PrevWin:=findwindow('TForm1','Form1');
 if PrevWin<>0
 then begin
         SetForegroundWindow(PrevWin);
         halt;
         end;
 Application.CreateForm(TForm1, Form1);
 Application.Run;
end.

Сделал как тут написано, но:

Код

[Error] CBClient.dpr(11): Undeclared identifier: 'HWND'
[Error] CBClient.dpr(15): Undeclared identifier: 'findwindow'
[Warning] CBClient.dpr(17): Comparing signed and unsigned types - widened both operands
[Error] CBClient.dpr(18): Undeclared identifier: 'SetForegroundWindow'


что делатьconfused.gif

bored.gif
  Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0598 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.