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

Поиск:

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


Опытный
**


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

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



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


Можно отслеживать параметры, передаваемые виндовсом программе (WinMain), и смотреть,есть ли указатель на предыдущий экземпляр программы.


--------------------

------------------------------------------------------------------

[email protected]
До востребования

PM MAIL WWW ICQ   Вверх
&-ray
Дата 17.7.2003, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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

CODE

[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'



что делать


в раздел uses в dpr впиши windows


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

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


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 20.1.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   Вверх
<Spawn>
Дата 18.7.2003, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


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

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



Попробуй так(Только учти, что заместо 'TForm1' и 'Form1' ты должен поставить свои названия класса и имени окна):

Код

var
hMutex:THandle;
begin
hMutex:=CreateMutex(nil, False, 'TestMutex');
if  WaitForSingleObject(hMutex,0)<>WAIT_TIMEOUT then
begin
 Application.Initialize;
 Application.CreateForm(TForm1,Form1);
 Application.Run;
end
else
SetForegroundWindow(FindWindow('TForm1','Form1'))
end;



--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
pascal
Дата 18.7.2003, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код

[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'

Так в uses надо было ещё и модуль Windows припесать, где всё это описывается...
PM MAIL WWW ICQ   Вверх
78125
Дата 21.7.2003, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



АГА !!! Получилсь!!!
Спасибо <Spawn> .

pascal, посмотри двумя высказываниями выше твоего, что написано. smile.gif

<Spawn> Все работает, but if моя программа свернута то выражение
Код

SetForegroundWindow(FindWindow('TForm1','Form1'))

не восстанавливает ее, оно только передает фокус, если программа не является активной....

Может кто подскажет, что сюда дописать?
--------------------
купим подпись
PM MAIL   Вверх
<Spawn>
Дата 21.7.2003, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


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

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



Поиграйся с этим :

Код
if IsZoomend(Hwnd) then
SetActiveWindow(Hwnd){или ShowWindow(Hwnd,SW_RESTORE)}



--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
&-ray
Дата 21.7.2003, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата
if IsZoomend(Hwnd) then

лучше проверять на IsIconic


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

--------------------
И снова мышь беру я в руки
Куда иду? - Конечно в сруки!
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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