Как отследить, запущено ли приложение?
Помогите! Необходимо поставить защиту от юзера, что бы прога второй раз не запускалась.... Любыми средствами (Delphi или Win32)
On 2001-09-12 17:40, Anonymous wrote:
Помогите! Необходимо поставить защиту от юзера, что бы прога второй раз не запускалась.... Любыми средствами (Delphi или Win32)
</BLOCKQUOTE></FONT></TD></TR><TR><TD><HR></TD></TR></TABLE>
Создай именованный mutex (раздел Win32.hlp "Synchronization") и проверяй его - он виден во всех процессах
On 2001-09-19 2159, Anonymous wrote
<TABLE BORDER=0 ALIGN=CENTER WIDTH=85%><TR><TD>Quote<HR></TD></TR><TR><TD><FONT SIZE=-1><BLOCKQUOTE>
On 2001-09-12 1740, Anonymous wrote
Помогите! Необходимо поставить защиту от юзера, что бы прога второй раз не запускалась.... Любыми средствами (Delphi или Win32)
</BLOCKQUOTE></FONT></TD></TR><TR><TD><HR></TD></TR></TABLE>
Можно воспользоваться функцией API FiwndWindow. И проверять есть ли уже окно с нужным заголовком и нужного класса.
[ Это Сообщение было отредактировано HollyBlood в 2001-09-26 2219 ]
http//www.sources.ru eсть.
Где-то на
1) Искать по имени класса не может быть надежным решением. Потому что, нет гарнтии, что имя класса уникально в системе.
2) По заголовку окна. Но заколовок в процессе работы может изменятся. И окон с таким названием может быть несколько.
Лучше использовать мьютексы.
Экземпляры приложения должны попытаться открыть мьютекс (функция OpenMutex).
Эта функция выполнится успешно, только тогда, когда мьютекс был уже создан при помощи CreateMutex.
Вот тебе и решение.
Цитата:
On 2001-09-12 1740, Anonymous wrote
Помогите! Необходимо поставить защиту от юзера, что бы прога второй раз не запускалась.... Любыми средствами (Delphi или Win32)
program _1;
uses
Forms,
Windows,
Calculator in 'Calculator.pas' {Main},
UCPUSpd in 'UCPUSpd.pas' {UCPUSpd};
{$R *.res}
var
HM THandle;
function Check boolean;
begin
HM = OpenMutex(MUTEX_ALL_ACCESS, false, 'MyOwnMutex');
Result = (HM <> 0);
if HM = 0 then HM = CreateMutex(nil, false, 'MyOwnMutex');
end;
begin
if Check then Exit;
Application.Initialize;
Application.CreateForm(TMain, Main);
Application.CreateForm(TFormSpeed, FormSpeed);
Application.run;
end.
Вставь в проект и прога второй раз не запуститься. Если получится пиши на [EMAIL]rea28@comail.ru[/EMAIL]