Salut les developpeurs
Je voudrais executer une commande comme c'etait sous dos mais avec delphi. Y'a t'il une fonction special qui peut faire ça?
Merci d'avance
Version imprimable
Salut les developpeurs
Je voudrais executer une commande comme c'etait sous dos mais avec delphi. Y'a t'il une fonction special qui peut faire ça?
Merci d'avance
ShellExecute ?
Salut
J'ai mal posé ma problème
Le problème c'est d'executé une commande dos et non pas d'ouvrir le dos.
D'autres part ,la commande que je voudrais l'executé et :
C'est à dire je veut envoyer le fichier text print1.txt vers mon imprimente connecté au port parallèle LPt1.Code:
1
2'Copy C:\print1.txt Lpt1'
J'espère que j'ai bien pricisé mon problème et merci d'avance!
bonjour,
Regarde dans l'aide des API windows
createprocess
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 function ExecuteCommande(Commande: String;Attente : Boolean = True): Boolean; Var lpsaProcess, lpsaThread : PSecurityAttributes; StartupInfo : TStartupInfo; ProcessInfo : TProcessInformation; AddrCmd : Array [0..255] Of Char; ExitCode : DWord; begin FillChar(StartupInfo, SizeOf(TStartupInfo), 0); with StartupInfo do begin cb := SizeOf(TStartupInfo); dwFlags := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK; wShowWindow := SW_HIDE; end; New(lpsaProcess); New(lpsaThread); lpsaProcess^.nLength := SizeOf(lpsaProcess^); lpsaProcess^.lpSecurityDescriptor := Nil; lpsaProcess^.bInheritHandle := True; lpsaThread^.nLength := SizeOf(lpsaThread^); lpsaThread^.lpSecurityDescriptor := Nil; lpsaThread^.bInheritHandle := True; StrPCopy(AddrCmd, Commande); Result := CreateProcess(nil, AddrCmd, lpsaProcess, lpsaThread, False, STARTF_FORCEONFEEDBACK, nil, nil, StartupInfo, ProcessInfo); if not Result then Result:=(GetLastError>10000); Dispose(lpsaProcess); Dispose(lpsaThread); if Result then begin while Attente do begin // Solution d'attente 1 Sleep(500); GetExitCodeProcess(ProcessInfo.hProcess, ExitCode); if ExitCode<>STILL_ACTIVE then break; // Solution d'attente 2 // WaitForSingleObject(ProcessInfo.hProcess, INFINITE); end; CloseHandle(ProcessInfo.hThread); CloseHandle(ProcessInfo.hProcess); end; end;
Bonjour,
Et pourquoi pas mettre ta commande dans un fichier batch et l'exécuter avec ShellExecute.
Mais, c'est peut-être trop simple ?
j'ajouterais ceci, pour lancer une commande Dos, tu dois lancer
cmd.exe /c "commande dos"
donc avec le code de Yurck voici comment appeler ta commande dos:
Code:
1
2
3
4
5
6
7
8
9
10
11 function BuildDosCommandStr(Command:string):string; begin result:='cmd /c "'+Command+'"'; end; procedure TForm1.Button8Click(Sender: TObject); begin ExecuteCommande(BuildDosCommandStr('Copy C:\print1.txt Lpt1'),TRUE); end;
Merci à tous
Je vais les tester
A bientot
Merci
Salut les developpeurs
Presque ç que j'ai voulu ;
Elle marche bien ,
Merci à tous et merci pour les gens qui m'ont aider
Salut,
J'ai beaucoup lu des articles sur la création de ces types de fichiers mais je ne comprend toujours pas. Alors, aidez-moi donc à créer ces types de fichiers avec des instructions un peu plus complexes telles que:
1- Utiliser la commande DISKPART
2- Formater un lecteur amovible (flash)
3- En gros, utiliser les commandes les plus usuelles de l'invite de commande de windows
Merci, je compte sur vous.