Spustenie programu z Command Line bez Command Shell okna
Spustenie programu z Command Line bez Command Shell okna
Dá sa Salamander nastaviť tak aby neotváral textové Command Shell okno keď spúšťam programy cez Command Line?
Napríklad: regsvr32 msinet.ocx
Prečo Salamander otvorí textové okno, keď spúšťam Windows aplikáciu? To textové okno je vačšinou prázdne a musím ho zbytočne zatvárať po ukončení spusteného programu.
Ďakujem.
Napríklad: regsvr32 msinet.ocx
Prečo Salamander otvorí textové okno, keď spúšťam Windows aplikáciu? To textové okno je vačšinou prázdne a musím ho zbytočne zatvárať po ukončení spusteného programu.
Ďakujem.
-
- ALTAP Staff
- Posts: 5231
- Joined: 08 Dec 2005, 06:34
- Location: Novy Bor, Czech Republic
- Contact:
-
- ALTAP Staff
- Posts: 5231
- Joined: 08 Dec 2005, 06:34
- Location: Novy Bor, Czech Republic
- Contact:
-
- ALTAP Staff
- Posts: 5231
- Joined: 08 Dec 2005, 06:34
- Location: Novy Bor, Czech Republic
- Contact:
Nemyslím zavřít automaticky, programově. Myslím ručně. Ťuknutím na křížek vpravo nahoře, Aby tam nepřekáželo "hodinu".Jan Rysavy wrote:Ale kdy ho zavřít a jak?
Tedy např.: spustím "notepad", počkám až naběhne (notepad i konzole), pak konzoli zavřu myší "X"em. Notepad běží dál. (W XP pro/home SP2 CZ)
To mi taky nejde moc do hlavy, proč se spouští konzole, když spouštím např. výše zmiňovaný notepad, jelikož stejně se v té konzoli nedá nic psát dokud notepad neuzavřu. Resp - psát se dá, ale nezobrazuje se to
On ten řádek už celkově postrádá smysl, jelikož jeho chování je nyní úplně mimo rámec původní myšlenky, která měla opodstatnění v době DOSu, ale nyní....
Využil bych ho tedy jen pro spouštění aplikací. viz MSDN ShellExecute(). Nic jiného už pomoci tohoto řádku stejně nelze provádět.
On ten řádek už celkově postrádá smysl, jelikož jeho chování je nyní úplně mimo rámec původní myšlenky, která měla opodstatnění v době DOSu, ale nyní....
Využil bych ho tedy jen pro spouštění aplikací. viz MSDN ShellExecute(). Nic jiného už pomoci tohoto řádku stejně nelze provádět.
Protože některé programy a některé OS se chovají jinak pro ShellExecute a jinak je-li program spuštěn přes command-interpreter. A jinak je-li spuštěn s konzolí a jinak bez ní.Denis wrote:To mi taky nejde moc do hlavy, proč se spouští konzole, ...
... Využil bych ho tedy jen pro spouštění aplikací. viz MSDN ShellExecute()...
Obecně je problém hlavně(jen) v interpretaci stdin a stdout. Sám si vzpomínám, že se jsem při testech (pře pár lety) dokázal vygenerovat asi 6-8 kombinací, kdy se stdin/stdout choval pro cílový program jinak (cílové programy: win32-gui, win32-conzole, win 3.x (16) a DOS; spuštění W2K, win98).
Nevím jaký přesně způsob spuštění zvolil Altap, ale musím říct že mne vyhovuje - je ekvivalentní jako by to šlo z command promptu a to i u řady 9x i NT).
V EXE souboru by mělo být uloženo, zad program vyžaduje konzoli nebo Windowsí GUI. (pomocí PE Viewer pluginu část: Optional Header řádek Subsystem)
Problém je, že Servant Salamander těžko zjistí, který soubor se spustí a zda vůbec zadaný příkaz má nějaký soubor (příkazy typu copy).
Problém s odhadnutím spuštěného souboru je v tom, že existuje spousty míst, kde se soubor hledá (minimálně aktualní adresář a proměnná %PATH%) a při chybějíci příponě Windows doplní i příponu podle toho, jaké soubory naleznou. Navíc se tento způsob vyhledávání souborů IIRC liší mezi různými verzemi Windows...
Problém je, že Servant Salamander těžko zjistí, který soubor se spustí a zda vůbec zadaný příkaz má nějaký soubor (příkazy typu copy).
Problém s odhadnutím spuštěného souboru je v tom, že existuje spousty míst, kde se soubor hledá (minimálně aktualní adresář a proměnná %PATH%) a při chybějíci příponě Windows doplní i příponu podle toho, jaké soubory naleznou. Navíc se tento způsob vyhledávání souborů IIRC liší mezi různými verzemi Windows...
Tak tak.zarevak wrote:V EXE souboru by mělo být uloženo, zad program vyžaduje konzoli nebo Windowsí GUI. (pomocí PE Viewer pluginu část: Optional Header řádek Subsystem)
Problém je, že Servant Salamander těžko zjistí, který soubor se spustí a zda vůbec zadaný příkaz má nějaký soubor (příkazy typu copy).
Problém s odhadnutím spuštěného souboru je v tom, že existuje spousty míst, kde se soubor hledá (minimálně aktualní adresář a proměnná %PATH%) a při chybějíci příponě Windows doplní i příponu podle toho, jaké soubory naleznou. Navíc se tento způsob vyhledávání souborů IIRC liší mezi různými verzemi Windows...
A to ještě neuvažujeme případ když je program přeložen jako GUI, ale dle stavu stdin/stdout a konzole (např. fail při AllocConsole) reaguje jinak když má platný vstup/výstup a když nemá (případně dle typu handle zjistí zda jde o výstup na konzoli či ne).
Navíc si nejsem jist, jak se chovají EXE packery (typu UPX a podobné) a jak dobře zachovávají EXE hlavičku.
-
- ALTAP Staff
- Posts: 5231
- Joined: 08 Dec 2005, 06:34
- Location: Novy Bor, Czech Republic
- Contact:
To je nesmysl, příkazový řádek je klíčový pro pokročilejší uživatele. Potřebují spouštět konzolové aplikace jako GnuPG, CVS, SVN, atd, specifikovat jejich paramtery (viz horké klávesy pro přinesení názvů souborů) a po jejich vykonání si prohlédnout výstup na konzoli.Denis wrote:On ten řádek už celkově postrádá smysl, jelikož jeho chování je nyní úplně mimo rámec původní myšlenky, která měla opodstatnění v době DOSu, ale nyní...
Když to takhle vytrhnete z kontextu, tak máte pravdu, ale já to myslel trochu jinak.
Pokud někdo bude chtít command, tak napíše "Command" a spustí se mu command.
Ale když napíše Notepad, tak se mu spustí notepad a nebude ho otravovat žádné další okno.
třeba příkazy pro změnu cesty "CD ..." nefungujou. Tak se domnívám, že ta koncepce onoho stavového řádku není již v této době ideální. Měl by sloužit pro spouštění aplikací stejně jako to dělá Start/Spustit...
Pokud někdo bude chtít command, tak napíše "Command" a spustí se mu command.
Ale když napíše Notepad, tak se mu spustí notepad a nebude ho otravovat žádné další okno.
třeba příkazy pro změnu cesty "CD ..." nefungujou. Tak se domnívám, že ta koncepce onoho stavového řádku není již v této době ideální. Měl by sloužit pro spouštění aplikací stejně jako to dělá Start/Spustit...
-
- ALTAP Staff
- Posts: 5231
- Joined: 08 Dec 2005, 06:34
- Location: Novy Bor, Czech Republic
- Contact:
To by přece bylo velice nepraktické, abychom před každý příkaz CVS nebo SVN museli napsat "command" (asi spíš CMD).
Ideální stav by byl, abychom dokázali (automaticky) rozlišit příkazy pro CMD od spouštění GUI aplikací (například zmíněný notepad). Jak je patrné z diskuze nahoře, toto neumíme a netušíme jak to řešit.
Ideální stav by byl, abychom dokázali (automaticky) rozlišit příkazy pro CMD od spouštění GUI aplikací (například zmíněný notepad). Jak je patrné z diskuze nahoře, toto neumíme a netušíme jak to řešit.