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

C Discussion :

Shell execute .


Sujet :

C

  1. #21
    Membre émérite

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Par défaut
    Citation Envoyé par miron
    Non pa spour lancer louto extractible car cela ne fonctionne pas.
    C'est à dire ?
    Si tu vas voir ton docteur et que tu lui dis "je ne vais pas bien", tu crois qu'il va te donner un médicament sans te demander plus de précisions ? Ben là c'est pareil.

    Citation Envoyé par miron
    Non mais il me semble que create prossess convit mieux a mon probleme.
    Peu etre que je me trompe;...
    Pour le savoir, il faudrait une description plus précise du problème (cf. ma signature).

  2. #22
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut
    Citation Envoyé par David.Schris
    C'est à dire ?
    Si tu vas voir ton docteur et que tu lui dis "je ne vais pas bien", tu crois qu'il va te donner un médicament sans te demander plus de précisions ? Ben là c'est pareil.
    Pour le savoir, il faudrait une description plus précise du problème (cf. ma signature).
    OK
    Tout d'abord sachez que pour le moment mon probleme est comment dire plus de presision que autre.
    Pour faire simple j'ai un programme de gestion de programmes, qui donc est capable de trouver des fichier .pb, il sen sert, et j'ai une archive Win rar auto extractible.
    Donc la cette archive contien des programmes et autre, c'est une archive d'instalation d'un programme.
    Je desire donc "lancer" cette archive ("Laby_Instal.exe").
    La je me dit Pierre utilise ShelleExecute !
    Je cherche sur devellopez .com, msdn, et arive au bout de code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    HWND hwnd;
    ShellExecute(hwnd,"open","Laby_Instal.exe",NULL,NULL,SW_HIDE);
    Lors de la compilation mon compilo me dit :
    Citation Envoyé par Compilo
    [Warning] 'hwnd' might be used uninitialized in this function
    La je me dit "il se pourais que ca pose des problemes," alors je crée une discussion sur dev.com.
    La on me dit il faut linitialiser...
    Oui OK ca j'avais compris d'apres le Warning, mais avec quoi?
    Tout content que je suis lorsque je revien sur le post et vois 5 ou 6 messages !
    Mais la je decouvre des tones de ligne de codes, casi imcomprehensible pour moi et essai de faire le tri sans 'foutre' le bordel sur le forum.
    J'usqua ce post ou je me dit, Pierre raconte ta vie.
    Voila donc la situation, le probleme et l'explication de mes post.
    Je donne donc ma question :
    Comment Initialiser "hwnd" ?
    Merci.

  3. #23
    Membre émérite

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Par défaut
    Citation Envoyé par miron
    OK
    Tout d'abord sachez que pour le moment mon probleme est comment dire plus de presision que autre.
    Pour faire simple j'ai un programme de gestion de programmes, qui donc est capable de trouver des fichier .pb, il sen sert, et j'ai une archive Win rar auto extractible.
    Donc la cette archive contien des programmes et autre, c'est une archive d'instalation d'un programme.
    Je desire donc "lancer" cette archive ("Laby_Instal.exe").
    La je me dit Pierre utilise ShelleExecute !
    Je cherche sur devellopez .com, msdn, et arive au bout de code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    HWND hwnd;
    ShellExecute(hwnd,"open","Laby_Instal.exe",NULL,NULL,SW_HIDE);
    Lors de la compilation mon compilo me dit :
    La je me dit "il se pourais que ca pose des problemes," alors je crée une discussion sur dev.com.
    La on me dit il faut linitialiser...
    Oui OK ca j'avais compris d'apres le Warning, mais avec quoi?
    Tout content que je suis lorsque je revien sur le post et vois 5 ou 6 messages !
    Mais la je decouvre des tones de ligne de codes, casi imcomprehensible pour moi et essai de faire le tri sans 'foutre' le bordel sur le forum.
    J'usqua ce post ou je me dit, Pierre raconte ta vie.
    Voila donc la situation, le probleme et l'explication de mes post.
    Je donne donc ma question :
    Comment Initialiser "hwnd" ?
    Merci.
    Comment initialiser hwnd ?
    En créant une fenêtre comme cela t'a déjà été dit.
    Ou en l'initialisant à NULL comme cela t'a déjà été dit aussi.

    Concernant ma dernière question ("C'est à dire ?"), elle se rapporte à "cela ne fonctionne pas".
    Attention : j'ai bien écrit qu'elle se rapportait à "cela ne fonctionne pas". Elle ne se rapportait pas à "cela ne compile pas".
    Cela suppose donc que tu as déjà compilé ton programme (sans warning). Cela suppose aussi que tu as déjà essayé de le lancer.
    Là, puisque tu dis que " cela ne fonctionne pas", c'est que :
    - soit cela ne fait rien sans aucun message d'erreur ;
    - soit cela fait autre chose que ce que tu veux sans aucun message d'erreur ;
    - soit une erreur est affichée.
    Si cela ne fait rien : dire "quand je le lance, rien ne se passe" est déjà plus précis que "cela ne fonctionne pas".
    Si cela fait autre chose que ce qui est prévu, dire "cela fait XXX et YYY au lieu de ZZZ" est plus précis qu'un simple "cela ne fonctionne pas".
    Si un message d'erreur s'affiche, donner le message d'erreur est plus précis que "cela ne fonctionne pas".
    Voilà ce que voulait dire mon "C'est à dire ?".
    Pour reprendre l'analogie de mon précédent message : le docteur te demande où tu as mal et de quel type de douleur il s'agit et quand tu la sens, etc.
    Ben là, c'est pareil.

    Donc, au départ, tu nous dis : "cela ne fonctionne pas".
    Maintenant, tu nous dis que tu n'arrives même pas à compiler ton programme correctement.
    Il y a eu comme une régression entre les deux, non ?

    D'après ce que j'ai dit au début de ce message, tu devrais être capable de compiler ton programme correctement (sans warning).
    Alors lance-le.
    Si cela ne fonctionne pas, note tous les éléments possibles concernant ce dysfonctionnement (messages d'erreur, etc) et décris correctement ce qui se passe en mettant une copie de ton code ici.
    Quand je dis "une copie de ton code", il faut comprendre : un programme complet (compilable sans avoir besoin d'autre chose qu'un compilateur) et minimal (pas un truc de 30000 lignes).

    Ok ?

    Pas de description détaillée et/ou pas de code complet et minimal == sans moi.

  4. #24
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    J'aurais pu te dire qu'on pouvait mettre NULL pour le parametre hwnd mais j'ai preferé te dire que parfois les parametres de l'api windows n'étaient pas obligatoires et qu'on pouvait y mettre NULL

    Citation Envoyé par Gruik
    Note, dans pas mal de cas, les fonctions de l'api windows acceptent des parametres NULL.
    Cela pour te forcer à lire la doc, c'était pas compliqué, c'est ecrit noir sur blanc

    hwnd
    [in] Handle to the owner window used for displaying a user interface (UI) or error messages. This value can be NULL if the operation is not associated with a window (c'est ton cas).
    Mais peut être tu sais pas lire l'anglais, auquel cas je te conseille de t'y mettre, justement pour etre capable de lire les docs.

  5. #25
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut
    Citation Envoyé par David.Schris
    Comment initialiser hwnd ?
    En créant une fenêtre comme cela t'a déjà été dit.
    Mais en fait je comprend pas créer une fenetre, mais lorsqon double clic sur un programme on a pas besoin de creer une fenetre !!
    La je ne comprend deja pas en fait la necessité.
    Ou en l'initialisant à NULL comme cela t'a déjà été dit aussi.
    Avec NULL je ne vois rien!!!
    Enfin Peu importe d'un coté et puis d'un autre non.
    Si j'ai bien compris il faut que je mette ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    HWND hwnd;
     
        hwnd = CreateWindow("MaWinClass", "Titre", WS_OVERLAPPEDWINDOW,
                                       CW_USEDEFAULT, CW_USEDEFAULT, 400, 300,
                                                       NULL, NULL, hinstance, NULL);
    ?
    Concernant ma dernière question ("C'est à dire ?"), elle se rapporte à "cela ne fonctionne pas".
    Attention : j'ai bien écrit qu'elle se rapportait à "cela ne fonctionne pas". Elle ne se rapportait pas à "cela ne compile pas".
    Cela suppose donc que tu as déjà compilé ton programme (sans warning).
    Pourquoi sans Warning, un code avec Warning fonctionne souvent, le plus simple exemple est un void main !!Le compilo dit toujours : main return int !
    Alors que a la base on ma dit de metre Void !!!
    Cela suppose aussi que tu as déjà essayé de le lancer.
    Là, puisque tu dis que " cela ne fonctionne pas", c'est que :
    - soit cela ne fait rien sans aucun message d'erreur ;
    - soit cela fait autre chose que ce que tu veux sans aucun message d'erreur ;
    - soit une erreur est affichée.
    Si cela ne fait rien : dire "quand je le lance, rien ne se passe" est déjà plus précis que "cela ne fonctionne pas".
    Si cela fait autre chose que ce qui est prévu, dire "cela fait XXX et YYY au lieu de ZZZ" est plus précis qu'un simple "cela ne fonctionne pas".
    Si un message d'erreur s'affiche, donner le message d'erreur est plus précis que "cela ne fonctionne pas".
    Voilà ce que voulait dire mon "C'est à dire ?".
    Pour reprendre l'analogie de mon précédent message : le docteur te demande où tu as mal et de quel type de douleur il s'agit et quand tu la sens, etc.
    Ben là, c'est pareil.

    Donc, au départ, tu nous dis : "cela ne fonctionne pas".
    Maintenant, tu nous dis que tu n'arrives même pas à compiler ton programme correctement.
    Il y a eu comme une régression entre les deux, non ?

    D'après ce que j'ai dit au début de ce message, tu devrais être capable de compiler ton programme correctement (sans warning).
    Alors lance-le.
    Si cela ne fonctionne pas, note tous les éléments possibles concernant ce dysfonctionnement (messages d'erreur, etc) et décris correctement ce qui se passe en mettant une copie de ton code ici.
    Quand je dis "une copie de ton code", il faut comprendre : un programme complet (compilable sans avoir besoin d'autre chose qu'un compilateur) et minimal (pas un truc de 30000 lignes).

    Ok ?

    Pas de description détaillée et/ou pas de code complet et minimal == sans moi.

  6. #26
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut
    Voila mes essai :

    1. Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
       
      int main()
      {
        HWND hwnd;
        ShellExecute(hwnd,"open","Laby_Instal.exe",NULL,NULL,SW_HIDE);
      return 0;
      }
      Et la :
      Citation Envoyé par Compilateur
      [Warning] 'hwnd' might be used uninitialized in this function

    2. Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      int main()
      {      
        HWND hwnd;
        HINSTANCE hinstance;
        hwnd = CreateWindow("MaWinClass", "Titre", WS_OVERLAPPEDWINDOW,
                                         CW_USEDEFAULT, CW_USEDEFAULT, 400, 300,
                                                         NULL, NULL, hinstance, NULL);
        ShellExecute(hwnd,"open","Laby_Instal.exe",NULL,NULL,SW_HIDE);
      return 0;
      }
      Et la :
      Citation Envoyé par Compilateur
      [Warning] 'hinstance' might be used uninitialized in this function

    QUe faire ?


  7. #27
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Il faut que tu declares un main() à la windows, l'un des parametres est le "hinstance"
    Quand on cree un projet win32 avec vc++, on nous le met ce main particulier.

    Mais sinon, normalement t'as pas besoin de creer une fenetre, ça marche pas quand tu mets NULL?

  8. #28
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut
    Citation Envoyé par Gruik
    Il faut que tu declares un main() à la windows, l'un des parametres est le "hinstance"
    Quand on cree un projet win32 avec vc++, on nous le met ce main particulier.

    Mais sinon, normalement t'as pas besoin de creer une fenetre, ça marche pas quand tu mets NULL?
    Et bien en fait apres plusieurs essais je sais pas pourquoi mais ca fonctionne effectivement...


  9. #29
    Membre émérite

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Par défaut
    Citation Envoyé par Gruik
    Il faut que tu declares un main() à la windows, l'un des parametres est le "hinstance"
    Quand on cree un projet win32 avec vc++, on nous le met ce main particulier.
    Avec Dev-C++ aussi, il me semble
    Son prototype est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE PrevInstance, LPSTR lpCmdLine, int nCmdShow);
    Une petite doc. : "API Windows en C / 1 - La fenêtre principale"

  10. #30
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut
    Citation Envoyé par David.Schris
    Avec Dev-C++ aussi, il me semble
    Son prototype est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE PrevInstance, LPSTR lpCmdLine, int nCmdShow);
    Une petite doc. : "API Windows en C / 1 - La fenêtre principale"
    Merci pour le lien je croi que je vais m'en servir pour des applications futur !!

  11. #31
    Membre expérimenté Avatar de Pikwik
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 237
    Par défaut
    Citation Envoyé par miron
    Citation:
    Pikwik a écrit :
    Peut-être que je me suis trompé mais avec null je n'arrive a rien

    [EDIT]: Ha bha non ca marche avec NULL.... je devais être fatigué moi hier soir... Sorry


    Merci pour ce long discours, heureusement que NULL fonctionne pour les paramettres par ce que dans le cas contraire, j'airais été tres mal !!!
    Et pour HW... il fait mettre quoi, patrce que avec tt ca je suis perdu, je ne vaux pas lancer OOTLOOK mais seulement une Archive SFX (auto extractible ).
    __________________
    A l'avenir je ne daignerai même pas te lire... Ce n'est pas la première fois que je trouve ton attitude déplorable sur ce forum... Mais bon ce n'est pas une affaire de C, mais de politesse...

  12. #32
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut
    Citation Envoyé par Pikwik
    A l'avenir je ne daignerai même pas te lire... Ce n'est pas la première fois que je trouve ton attitude déplorable sur ce forum... Mais bon ce n'est pas une affaire de C, mais de politesse...
    Ce n'aitais pas mechant du tout, c'aitais que en fait pour lparameter NULL fonctionnais et que ton code meme sil aitais expliquais étais pour moi quand meme incomprehensible.
    Donc j'étais rasurais lorsque j'ai su que lparameters ne deandais rien d'autre que NULL !
    Il est vrai et on me le dit que lorsque je dit qqc je le dit d'une facon qui veux pas tj direce que je veux dire, donc bon...
    Je ne penssais pas etre aussi mal vu sur ce forum, et essai et essairais de mameliorer, et de redonne rune plus belle image au pseudo miron.

  13. #33
    Membre émérite

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Par défaut
    Citation Envoyé par miron
    Ce n'aitais pas mechant du tout, c'aitais que en fait pour lparameter NULL fonctionnais et que ton code meme sil aitais expliquais étais pour moi quand meme incomprehensible.
    Donc j'étais rasurais lorsque j'ai su que lparameters ne deandais rien d'autre que NULL !
    Il est vrai et on me le dit que lorsque je dit qqc je le dit d'une facon qui veux pas tj direce que je veux dire, donc bon...
    Je ne penssais pas etre aussi mal vu sur ce forum, et essai et essairais de mameliorer, et de redonne rune plus belle image au pseudo miron.
    Profites-en pour améliorer ton ortographe et ta grammaire car, là, j'ai vraiment eu du mal à lire ton message (comprendre : cette fois, j'ai fait l'effort e le faire...à l'avenir, je ne sais pas si je le ferai).

    PS : se ke jeu di n'ais pa maichen du tou, c'ais juste un consseille.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Problème Shell Execute
    Par cchasse98 dans le forum Débuter
    Réponses: 6
    Dernier message: 09/12/2013, 11h25
  2. Réponses: 2
    Dernier message: 10/05/2012, 13h00
  3. ma commande shell execute n'ouvre que les fichier TXT
    Par Hanen85 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/05/2009, 18h10
  4. Réponses: 3
    Dernier message: 17/05/2007, 16h19
  5. [shell] Execution script sql et JAVA
    Par RR instinct dans le forum Langage
    Réponses: 7
    Dernier message: 26/09/2006, 11h08

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