Oppure

Loading
13/06/11 21:05
formyvale
Ciao a tutti.
Vi dico il mio problema. Ho una memo,dovrei fare che per ogni linea fare un comando..
x esempio nella memo1 c'è:

cmd
telnet
shutdown -a

dovrei fare ke il programma fa questo: ShellExecute(Handle,'open','cmd', nil, nil, SW_SHOWNORMAL) ; per ogni linea...xò al posto di cmd andrebbe il nome del comando..
quindi in questo caso;
ShellExecute(Handle,'open','cmd', nil, nil, SW_SHOWNORMAL) ;
ShellExecute(Handle,'open','telnet', nil, nil, SW_SHOWNORMAL) ;
ShellExecute(Handle,'open','shutdown -a', nil, nil, SW_SHOWNORMAL) ;

E' difficile esporre il problema.Spero di essere stato chiaro.
Grazie
aaa
13/06/11 21:56
systemgvp
mi sembra che con ShellExecute non puoi usare comandi che portano opazioni es. -a, comunque potresti salvare il Tmemo come file BAT ed eseguirlo se devi eseguire i comandi tutti a na volta.

altrimenti se vuoi fare una console, del tipo che scrivi un comando e appena premi INVIO il programma prende questa stringa e la esegue, basta che metti un comando ShellExecute() nell'evento KeyPress filtrando con un IF il tasto INVIO.
aaa
13/06/11 22:15
Goblin
Io ti ribalto la domanda ...
Cosa vuoi fare ???
quali sono i comandi da eseguire ??
Devi fare un telnet ? usando la shell dos di win ? non sarebbe meglio usare un componente telnet ?
G.
Ibis redibis non morieris in bello
13/06/11 23:04
pierotofy
Postato originariamente da systemgvp:
mi sembra che con ShellExecute non puoi usare comandi che portano opazioni es. -a, comunque potresti salvare il Tmemo come file BAT ed eseguirlo se devi eseguire i comandi tutti a na volta


Wrong...

HINSTANCE ShellExecute(
__in_opt HWND hwnd,
__in_opt LPCTSTR lpOperation,
__in LPCTSTR lpFile,
__in_opt LPCTSTR lpParameters,
__in_opt LPCTSTR lpDirectory,
__in INT nShowCmd
);


Il 4° argomento è quello che ti permette di passare i parametri.

msdn.microsoft.com/en-us/library/…

Il supporto per le stringhe in Delphi è pietoso... comunque l'idea è semplice, prendi la stringa intera, dividi la stringa in base ad ogni "\n" (nuova linea), per ogni elemento esegui il comando.

Questo potrà servirti... pierotofy.it/pages/guide_tutorials/Delphi/Delphi_Split_Function/

Il mio blog: piero.dev
14/06/11 11:22
Goblin
Piero, è vero che shellexecute ha la possibilità di passaggio paramentri, ma il punto fondamentale è: cosa vuole fare formyvale?
Usare una lista con i comandi e ad ogni comando aprire una shell?? allora il comando shellexecute "potrebbe" anche andare bene ... io userei una tecnica diversa, qualcosa tipo createprocess in modo da avere più controllo ....
Usare una lista con i comandi in cascata?? allora il comando shellexecute non va proprio bene... direi che in base alle esigenze si può indirizzare formyvale verso l'uso di una tecnica piuttosto che un altra.
G.
Ibis redibis non morieris in bello
15/06/11 12:54
formyvale
Devo avviare un'applicazione..telnet e shutdown -a li ho messi per esempio..
aaa
15/06/11 20:38
Goblin
cavolo .. mi sembra di tirare fuori le parole con il cavatappi ...
Che necessità hai? vuoi far avviare semplicemente un applicazione ? vuoi sapere quando viene chiusa? vuoi passare il controllo all'applicazione, la vuoi far girare in background?
Io, come molti altri qui, sono pronti a darti una mano, ma ... aiutaci ad aiutarti...
alla tua domanda (la prima che hai fatto) la risposta sarebbe:

for x:= 0 to memo1.lines.count-1 do
ShellExecute(Handle,'open',PChar(memo1.lines.strings[x]), nil, nil,SW_SHOWNORMAL) ;

in questo modo apri tante applicazioni quante sono nel memo (senza gestione parametri), ma come ho detto, shellexecute non mi piace, io userei "createprocess" lascio a te documentarti sulle differenze
Un saluto
G.
Ibis redibis non morieris in bello
16/06/11 17:37
formyvale
Si è questo quello che mi serviva...
Grazie a tutti.
aaa