Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.10.28;
Скачать: [xml.tar.bz2];

Вниз

Как избежать повторного запуска exe-файла?   Найти похожие ветки 

 
KVBr   (2002-10-16 15:39) [0]

Как избежать повторного запуска exe-файла, если титл окна может динаммически меняться во время работы с приложением?


 
Romkin   (2002-10-16 15:42) [1]

FAQ


 
KVBr   (2002-10-16 16:04) [2]

В FAQ разобраны примеры для обработки приложения, зная его хендл. В моем случае хендл окна меняется. Как быть?


 
Zemal   (2002-10-16 16:06) [3]

Я делаю так:


program Project1;

uses
Forms,
Windows,
Dialogs,
uMain in "uMain.pas" {fMain};

{$R *.res}

var
UniqueMapping: THandle;
begin
UniqueMapping := CreateFileMapping($ffffffff,
nil, PAGE_READONLY, 0, 32, "MyMap");
if UniqueMapping = 0 then
begin
ShowMessage("Ошибка выделения памяти!");
Halt;
end else
if GetLastError = ERROR_ALREADY_EXISTS then
begin
ShowMessage("Вторую копию приложения запускать нельзя!");
Halt;
end;
Application.Initialize;
Application.CreateForm(TfMain, fMain);
Application.Run;
end.



Такой код в файле проекта будет тебе гарантией, что две копии твоей программы незапустит никто :). Пользуй на здоровье! :)


 
Alx2   (2002-10-16 16:07) [4]

Создай именованный объект ядра. Например, mutex. В проге проверяй его существование. Если он есть, значит запущен экз. уже. Опять таки см. в FAQ


 
Внук   (2002-10-16 16:09) [5]

В данном случае самый простой способ (и, как и любой другой способ борьбы с копиями - не идеальный) - это создание именованного мьютекса, imho.


 
Вячеслав   (2002-10-16 16:10) [6]

Это типа работает себе, работае, и вдруг БАЦ! хендл поменялся.
FAQ 2 раза :)


 
Внук   (2002-10-16 16:12) [7]

И вдруг БАЦ - вторая смена :)))


 
KVBr   (2002-10-16 16:44) [8]

Может я некорректно сформулировал вопрос. Я имел в виду динамически меняющийся хендл внешнего приложения (например,Lotus Notes) запускаемого exe моего приложения.


 
Zemal   (2002-10-16 16:54) [9]

Ну так я же тебе написал... создавай Map-файл в памяти. Вторая копия приложения будет пытаться создать точно такой же, но наткнётся на такой же и несможет, а потому закроется до инициализации... что тут непонятного?! Всё довольно просто.


 
Zemal   (2002-10-16 17:05) [10]

>>KVBr
Ну что? Подходит тебе мой вариант с созданием пустого Map-файла в памяти?
P.S. При закрытии твоего приложения этот "мар" будет удалён автоматом. Попробуй. У меня работает без сбоев.


 
Zemal   (2002-10-16 17:10) [11]

Кстати!
>>В FAQ разобраны примеры для обработки приложения, зная его хендл. В моем случае хендл окна меняется. Как быть?
Как такое может быть? Хендл окна это совсем не его "титл", а идентификатор и меняться он неможет!


 
Zemal   (2002-10-16 17:13) [12]

Хендл окна независит от титла.


 
KVBr   (2002-10-16 17:23) [13]

Zemal, спасибо, все Ok!


 
Zemal   (2002-10-16 17:26) [14]

>>KVBr
Да незачто :). В общем-то я уже пару раз такое выкладывал в этот форум... можно было в архивы глянуть... там и других подобных вариантов полно было :). Это в общем-то довольно распространённый вопрос :).



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.10.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.008 c
3-92368
_pavel_
2002-10-07 18:13
2002.10.28
VCL компоненты на MySQL


1-92487
kav
2002-10-18 09:08
2002.10.28
Вызов досовской команды


1-92518
hhh3757
2002-10-18 11:10
2002.10.28
Как откомпилить прогу без ресурсов?


14-92710
AL2002
2002-10-08 13:17
2002.10.28
Девушки. Не напивайтесь никогда.


7-92762
Metallica
2002-08-21 13:17
2002.10.28
->>> Как сделать активным процесс, зная его хэндл.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский