Něco k Delphi
Velmi často se lidé ptají, jak mají v Delphi spustit nějaký externí program.
Nejjednodušším řešením je použít winexec nebo shellExecute
S touto problematikou souvisí i několik dalších témat:

Spuštění pod jiným uživatelským účtem

Spuštění pod jiným uživatelským účtem

Čekání na doběhnutí programu

Čekání na doběhnutí programu
měl by fungovat kód na tomto
odkazu .

Konzolová aplikace

Konzolová aplikace
Občas se hodí pustit
konzolovou aplikaci a odchytit její výstup. Na to se ve fóru Delphi
doporučuje TDosCommand - ke stažení údajně na
torry . Při použití TDosCommand jsou ale údajně problémy, pokud výstup spouštěné aplikace obsahuje diakritiku. Řešilo se to v
diskuzi, vyřešit by to podle všeho měla funkce
OemToChar nebo pokud výstup jde do TMemo, tak nastavit mu charset na OEM_CHARSET (to všechno najdete v té diskuzi).
Spuštění
pouze jednou (když se spustí další instance, tak se má ukončit) -
zde.
Trocha kódu z té diskuze nad o
spuštění pouze jedné instance:

JCL

JCL

Mutexy

Mutexy
uses
Windows, Dialogs, ...
var
FMutex:THandle;
begin
FMutex := CreateMutex(
nil
, true,
'NazevMutexuProMojiAplikaci'
);
if
GetLastError() = ERROR_ALREADY_EXISTS
then
begin
if
(FMutex <>
0
)
then
CloseHandle(FMutex);
ShowMessage(
'Aplikace mo~e být spustna jen jednou !!!'
);
exit;
end
;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
ReleaseMutex(FMutex);
CloseHandle(FMutex);
end
.
Syntax higlighted by Syntax highlighter, available at www.4ITDevelopers.net and www.JakNaWin.com

Semafory

Semafory
uses
Windows, Dialogs, ...
var
FSemafor:THandle;
begin
FSemafor := CreateSemaphore(
nil
,
2
,
2
,
'NazevSemaforuProMojiAplikaci'
);
if
FSemafor <>
0
then
if
WaitForSingleObject(FSemafor,
0
) <> WAIT_OBJECT_
0
then
begin
CloseHandle(FSemafor);
ShowMessage(
'Aplikace mu~e být spuatna pouze dvakrát !!!'
);
exit;
end
;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
ReleaseSemaphore(FSemafor,
0
,
nil
);
CloseHandle(FSemafor);
end
.
Syntax higlighted by Syntax highlighter, available at www.4ITDevelopers.net and www.JakNaWin.com
vice tady. jeste jde pouzit FindWindow, ale moc nedoporucuji. Bc. Jaroslav Blazek
Java
spuštění programu:
Spuštění programu asociovaného s danou příponou by mělo být podporováno v Javě 6, údajně metoda open z java.awt.Desktop - viz
diskuze.
něco málo k C#
na diskuzi o C# jsem zaznamenal akorát dotaz, jak neco spustit
pouze jednou - např.
zde. Další ukázky můžete najít třeba na webu
CodeProject.com.
Spuštění cizí aplikace asi všichni ovládají :-), nicméně pokud by to někdo přeci jen potřeboval, tak to lze udělat příkazem
Informace ke stavu builder.cz zde
vytvořil Mi.Chal. 28.6. 2005 22:23, naposledy změněnil Mi.Chal. 3.5. 2009 11:41