

spusteni console pres shellexecute
Ahoj vsem, mam prikaz
ShellExecute(GetDesktopWindow,nil,'cmd.exe',pchar(' start '+edit1.text),pchar(dir1), SW_shownormal);
kdyz toto zadam nespusti se mi console, nevite nekdo jak na to aby se to spustilo v cmd jako kdyz pouziji soubor *.bat.
Program delam pro restart serveru a nestaci *.bat protoze server se obcas sekne a nenajede ani *.bat nepomuze.
Pro consoli zadavam cestu i s *.exe ale najede jen dany adresar kde console je ale aplikace se jiz nespusti.
program funguje tak ze vse hlida z SQL database kdyz padne, program ji ma restartovat ale nic se neprovede.
Pokud dam prikaz
ShellExecute(GetDesktopWindow,nil,pchar(edit1.text),'','', SW_shownormal);
consolova aplikace najede a hned spadne.
Nejak som nepochopil čo vlastne chceš spustiť? Načo spúšťať príkazový riadok cmd.exe a v ňom potom čo spúšťaš ?
Ak chceš spustiť nejakú applikáciu tak použi WinExec:
Príklady:
WinExec('C:\NC.exe', SW_NORMAL); { DOS program }
WinExec('notepad.exe', SW_MAXIMIZED); { Windows program }
WinExec("command.com /c progdos.exe",sw_ShowNormal); program, ktorý zavrie okno po spustení
Popisi to takto, _realmserver ma vlastni databasi a do nej zapisuje status ON - OFF samotnej program dost pada a je potreba ho casto rucne restartovat.
Takto kdyz to zapisi, aplikace realmserver se spusti a hned vypadne ani neni videt proc
Samostatne kdyz ji spustim tak jede, pres tento zpusob ne, nevim proc tomu tak je.
Zkousel jsem zadat i cestu v parametru dir ani to nepomohlo.
a co urobi
?
Prip.
aby sa nezavrela konzola a videl si preco to padlo.
Prip.
Prip.
Prip. niektore z dalsich rieseni ktore su vyssie? (WinExec('program.exe'))
Takze jsem zkusil vsechny moznosti, co jsou zde vypsany ani jedna nepomohla, zjistil jsem totiz ze pokus server spustim pomoci jakehokoliv prikazu v aplikaci tak jakoby se priradi pod adresar v kterem neni, tim padem se ztrati config,libmysql.dll a python25.dll, a druhy server ktery se na nej napojuje totez.
Kdyz dam muj program k serveru spusti ten v kterem je bez problemu ale druhy ne kazdy ten server ma svuj adresar a svou knihovnu libmysql.dll kera je velikosti jina.
prenastavit nazev knihoven nejde v tomto spociva velkej orech co stim.
Kdyz to dam pres *.bat spusti se oba ale nelze je aplikaci v pripade zaseknuti ukoncit.
Na ukonceni pouzivam vlastni FCE s pomoci Tlhelp32.
Po ukonceni by mela zase nabehnout, servery musi byt samostatne nelze je dat do jednoho adresare, prepsal by se config a nesel by spustit vubec to same libmysql.dll.
A odkial alebo z akeho adresara spustas ten program rucne tak aby fungoval?
Resp. vobec nerozumiem tomu co pises. Napis presne ako rucne spustas ten program aby fungoval. Napr. si v konzole
C:\akyadresar> akyprogram.exe akeparametre
P.S. potom az si tam dosadis co tam rucne mas, tak to bude vyzerat takto:
ShellExecute(0, nil, 'akyprogram.exe', 'akeparametre' alebo nil, 'C:\akyadresar', SW_shownormal);
Ak chceš silou mocou ShellExecute tak tu máš aj s čakaním na ukončenie aplikácie:
Prípadne si výstup programu zachytitíš napr. do Tmemo:
Diky moc (pme) uz to beha jak ma

Dobrý den,
tohle se mi moc líbilo, zkoušel jsem to modifikovat tak, aby se do mema vypisoval postupný výstup z programu, který má delší odezvu ale nepodařilo se mi to. Otevřel jsem si nový handle na stejný soubor a snažil se z něho číst, ale pořad měl nulovou velikost. Neporadil by jste jak na to? Spouštím externí programy a chci jejich výstup přesměrovat do mema ale chci vidět co se dějě v reálném čase. Děkuji.
Honza
Poradte lamě.
Kde dělam kopanec.
zkoušim to rozchodit a vše kde je Windows je podtržene červeně.
tmp: Windows.THandle;
Windows.CreateFile
Windows.CloseHandle
V uses mam Winapi.Windows i ShellApi