Zamykanie 2 programow na raz

0

Witam!

Jak zrobic aby zamknac 2 te same uruchomione programy?

Jak robie:

[code] var uchwyt : THandle;
begin
uchwyt := FindWindow(nil,'IrfanView');
SendMessage(uchwyt, WM_QUIT,0,0);
end;[/code]

gdy mam uruchomione 2 kopie tego programu to moj program sie wywala z bledem.
Moze cos zle napisalem?
Prosze o pomoc.

Pozdrowionka [cya]

0

nie masz wyłączyć kopii programu tylko nie dopuścić do uruchomienia tej kopii.
poszukaj se w faq, albo w artykułach, albo nawet na forum, gdzieś to chyba jest

0

var
hM : HDC;
begin
hM:=CreateFileMapping(THANDLE($FFFFFFFF),nil,
PAGE_READONLY,0,32,'ApplicationTestMap');

if GetLastError=ERROR_ALREADY_EXISTS then
begin
ShowMessage('Nie można uruchomić tego samego programu');
Application.Terminate;
CloseHandle(hM);
end;

Z tym, że ciąg "ApplicationTestMap" musi być unikalny dla całego systemu - dwie aplikacje nie mogę wykorzystać tego samego parametru.

[dopisane]
Ach sory, zapomnialem dopisac ze ten kodzik blokuje ponowne uruchamianie tego samego programu - tak dla jasnosci :-P

0

function KillTask(ExeFileName: string): integer;
const
PROCESS_TERMINATE=$0001;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
result := 0;

FSnapshotHandle := CreateToolhelp32Snapshot
(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle,
FProcessEntry32);

while integer(ContinueLoop) 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
UpperCase(ExeFileName))
or (UpperCase(FProcessEntry32.szExeFile) =
UpperCase(ExeFileName))) then
Result := Integer(TerminateProcess(OpenProcess(
PROCESS_TERMINATE, BOOL(0),
FProcessEntry32.th32ProcessID), 0));
ContinueLoop := Process32Next(FSnapshotHandle,
FProcessEntry32);
end;

CloseHandle(FSnapshotHandle);
end;

w przycisku zamknij je8nij kod:

killtask('nazwa twojego pliku exe (no programu).exe');

nie ma juz zadnego takiego otworzonego ;P

0

Dzieki

[browar] dla wszystkich :)
[cya]

1 użytkowników online, w tym zalogowanych: 0, gości: 1