Bonjour à tous,
depuis les dernières mises à jour Windows, je rencontre un problème lors de l'exécution d'un fichier BATCH depuis mon programme Delphi 7. Je m'explique.
J'utilise la fonction suivante pour afficher la liste des ports COM :
Lorsque je clique sur ce bouton, j'ai bien une fenêtre dos qui s'ouvre. mais le message "'Change' n'est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes" apparaît
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 procedure TForm1.btnPortsCOMClick(Sender: TObject); Const NomFichier : AnsiString = 'ChangePort.Bat'; Var CheminFichier : AnsiString; begin CheminFichier:=IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName)); Try DeleteFile(CheminFichier+NomFichier); Except End; mmoBatch.Clear; mmoBatch.Lines.Add('@ECHO OFF'); mmoBatch.Lines.Add('ECHO Etat des ports COM (CHANGE PORT /QUERY) : '); mmoBatch.Lines.Add('ECHO.'); mmoBatch.Lines.Add('CHANGE PORT /QUERY'); mmoBatch.Lines.Add('ECHO.'); mmoBatch.Lines.Add('PAUSE'); mmoBatch.Lines.SaveToFile(CheminFichier+NomFichier); mmoBatch.Clear; ShellExecute(0,'OPEN',PChar(CheminFichier+NomFichier),Nil,Nil,SW_SHOW); end;
J'ai uniquement ce problème sur mon Windows 10. et il n'est apparu que suite aux dernières mises à jour Windows.
Ce qui est étrange c'est que je n'ai pas ce problème sur Windows 7. De plus, sur mon Windows10, si j'exécute depuis l'explorateur le fichier bat généré par mon programme, je n'ai pas ce problème non plus.
J'ai essayé d'ajouter un manifest à mon programme pour qu'il s'exécute avec les privilèges "highestAvailable" mais ça ne change rien (Je fais mon test sur une session Administrateur).
Savez-vous comment je pourrais corriger ce problème?
EDIT : Après quelques recherches supplémentaires. il semble que le problème vienne du fait que l'invit de commande lancée par mon appli Delphi est la : "C:\Windows\SysWOW64\cmd.exe" alors que celle lancée lors de l'exécution manuelle d'un fichier bat est "C:\Windows\System32\cmd.exe". Y a-t-il un moyen de forcer le choix de l'invit de commande pour la "C:\Windows\System32" dans Delphi?
Merci d'avance.
Noémie
Partager