Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Delphi - For
Forum - Delphi - For

Avatar
formyvale (Normal User)
Rookie


Messaggi: 28
Iscritto: 19/11/2010

Segnala al moderatore
Postato alle 23:05
Lunedì, 13/06/2011
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

PM Quote
Avatar
systemgvp (Normal User)
Expert


Messaggi: 296
Iscritto: 14/04/2008

Segnala al moderatore
Postato alle 23:56
Lunedì, 13/06/2011
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.

PM Quote
Avatar
Goblin (Member)
Expert


Messaggi: 375
Iscritto: 02/02/2011

Segnala al moderatore
Postato alle 0:15
Martedì, 14/06/2011
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
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 1:04
Martedì, 14/06/2011
Testo quotato

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...

Testo quotato


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.

http://msdn.microsoft.com/en-us/library/bb762153%28v=vs.85 ...

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... http://www.pierotofy.it/pages/guide_tutorials/Delphi/Delph ...



Il mio blog: https://piero.dev
PM Quote
Avatar
Goblin (Member)
Expert


Messaggi: 375
Iscritto: 02/02/2011

Segnala al moderatore
Postato alle 13:22
Martedì, 14/06/2011
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
PM Quote
Avatar
formyvale (Normal User)
Rookie


Messaggi: 28
Iscritto: 19/11/2010

Segnala al moderatore
Postato alle 14:54
Mercoledì, 15/06/2011
Devo avviare un'applicazione..telnet e shutdown -a li ho messi per esempio..

PM Quote
Avatar
Goblin (Member)
Expert


Messaggi: 375
Iscritto: 02/02/2011

Segnala al moderatore
Postato alle 22:38
Mercoledì, 15/06/2011
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
PM Quote
Avatar
formyvale (Normal User)
Rookie


Messaggi: 28
Iscritto: 19/11/2010

Segnala al moderatore
Postato alle 19:37
Giovedì, 16/06/2011
Si è questo quello che mi serviva...
Grazie a tutti.

PM Quote