IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

ShellExecute [D7] [Win32] [fichier.inf] [syntaxe]


Sujet :

Delphi

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 101
    Points : 132
    Points
    132
    Par défaut ShellExecute [D7] [Win32] [fichier.inf] [syntaxe]
    Bonsoir,

    Etant occupé de créer un dvd contenant divers drivers et logiciels,
    je bute sur le point suivant :

    j'aimerai pouvoir simuler l'installation d'un fichier .inf comme si l'utilisateur aurais appliqué un click droit puis installer sur le fichier inf se trouvant dans un repertoire du dvd.

    ceci dans le but de ne pas avoir a ouvrir :
    demarrer , panneau de config, ajout de matériel et d'ensuite aller chercher le fichier .inf en question.

    en ce sens je pensais me tourner vers ceçi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ShellExecute(handle,'open','rundll32.exe setupapi,InstallHinfSection DefaultInstall 132','drivers\AHCI_v10_3_0_23_XPx86\nvgts.inf','',0);
    mais sans succès !
    si j'essaye comme ceçi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ....
    begin
    Repertoire := ExtractFilePath(Application.ExeName);
     
    ShellExecute(handle,'open','rundll32.exe setupapi,InstallHinfSection DefaultInstall 132',(Repertoire)+'drivers\AHCI_v10_3_0_23_XPx86\nvgts.inf','',0);
    .....
    .....
    j'ai une erreur de paramètres je suppose donc que ma syntaxe n'est pas appropriée !

    Auriez-vous l'amabilité de m'expliquer l'erreur et comment la rectifier ?

    Merçi
    Windows 7 / Debian 8 jessie / Kali 2 / Nas Synology ds214se / Arduino Mega 2560 / Raspberry Pi 3

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 427
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 427
    Points : 1 326
    Points
    1 326
    Par défaut
    Bonjour à toutes et à tous,

    @ Hepha1970, les guillemets sont important à la bonne place.

    Voici un exemple qui permet de voir une photo avec l'aperçu image.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure TForm1.Button3Click(Sender: TObject);
    begin
      ShellExecute(0,'open','rundll32.exe',
      'C:\WINDOWS\System32\shimgvw.dll,ImageView_Fullscreen C:\Data\Delphi\Apercu image\cauetetcindy.jpg',Nil, SW_SHOW);
    end;
    Test avec le chemin du fichier image contenu dans un Tedit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
    fName: string;
    begin
      fname:=edit1.Text; //C:\Data\Delphi\Apercu image\cauetetcindy.jpg
     
      fname :='C:\WINDOWS\System32\shimgvw.dll,ImageView_Fullscreen ' + fname;
    ShellExecute(0,'open','rundll32.exe',pchar(fname) ,nil, SW_SHOW);
     end;
    @+,

    Cincap

  3. #3
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    shellexecute :
    parametre 1 : mettre 0 ou le handle du programme (facultatif, 0 suffit)
    parametre 2 : commande (par exemple 'open')
    parametre 3 : fichier à éxécuter (peut être jpg, mp3, exe, html, url etc)
    parametre 4 : parametres à passer à un fichier exe/com/bat/cmd
    parametre 5 : repertoire de travail (facultatif)
    parametre 6 : affichage de la commande (constante SW_...)


    ce qui donne par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShellExecute(0, 'open', 'rundll32.exe', 'paramêtres RundDLL32', nil, SW_SHOW);
    ou encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShellExecute(0, 'open', 'C:\program files\picasa\PicasaViewer.exe', 'c:\mes documents\mes images\photo.jpg', nil, SW_HIDE);

    sinon lire l'aide sur ShellExecute.
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 427
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 427
    Points : 1 326
    Points
    1 326
    Par défaut InstallINF(Monfichier, 0) ; //naturellement
    @ Hepha1970, tu pourrais exécuter ton fichier avec une fonction comme ceci :

    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
     
    uses
       ShellAPI;
     
    function InstallINF(const PathName: string; hParent: HWND): Boolean;
    var
       instance: HINST;
    begin
       instance := ShellExecute(hParent,
         PChar('open'),
         PChar('rundll32.exe'),
         PChar('setupapi,InstallHinfSection DefaultInstall 132 ' + PathName),nil, SW_HIDE) ;
     
       Result := instance > 32;
    end;
    Utilisation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     InstallINF('C:\MonFichier.inf', 0) ;
    ou :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    procedure TForm1.BTest1Click(Sender: TObject);
    Var
    Monfichier : String;
    begin
     
     Monfichier := editTest1.text ;  //C:\monFichier.inf
     
     InstallINF(Monfichier, 0) ;   //InstallINF('C:\monFichier.inf', 0) ;
    end;
    @+,

    Cincap

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 101
    Points : 132
    Points
    132
    Par défaut
    Merçi a tous pour vos solutions j'ai donc utilisé la première solution de cincap et maintenant cela répond exactement a mes attente encore merçi a vous
    Windows 7 / Debian 8 jessie / Kali 2 / Nas Synology ds214se / Arduino Mega 2560 / Raspberry Pi 3

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Syntaxe des fichiers inf
    Par Chatbour dans le forum Windows XP
    Réponses: 3
    Dernier message: 17/09/2006, 13h29
  2. Utiliser les fichiers de syntaxe pour le correcteur orthographique avec vim
    Par karmaki dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 11/08/2006, 06h01
  3. Ecrire un fichier.inf
    Par Furius dans le forum Windows
    Réponses: 10
    Dernier message: 19/10/2005, 12h15
  4. Convertir fichier.ISS en fichier.INF
    Par Furius dans le forum Windows
    Réponses: 9
    Dernier message: 15/10/2005, 11h53
  5. Affichier un fichier inf
    Par cyrose dans le forum C++Builder
    Réponses: 2
    Dernier message: 25/06/2002, 08h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo