Répondre à la discussion
Affichage des résultats 1 à 11 sur 11

lancer un exécutable avec visual basic



  1. #1
    fiascototal

    lancer un exécutable avec visual basic


    ------

    bjs à tous
    je debute dans visual basic, mais j'ai du mal à trouver de bon tutoriel simple sur le net
    grace à eux j'ai deja appris pas mal de chose mais je ne sais pas comment faire pour lancer un executable
    ce qu'il me faudrait, c'est la ligne de code que je dois incrustrer ds le programme qd je sais pas moi, j'appuis sur un bouton par exemple.
    Il y aura ensuite sans doute le probleme de savoir si l'executable doit etre ou non intergré au nouveau programme, ou alors qu'il reste dans son dossier d'origine.
    est ce que quelqun sais
    merci d'avance

    -----
    pré tendre dix nez sept hètre car aimant ame usée

  2. Publicité
  3. #2
    cricri

    Re : lancer un executable avec visual basic

    exemple c est la commande shell
    shell "c:\toto.exe"
    mais attention le vb passe a l instruction de suite suivante meme si l exe met 3h a touner

  4. #3
    fiascototal

    Re : lancer un executable avec visual basic

    merci bien cricri, et une autre question, comment faire pour afficher une autre feuille (le nom de la commande, du style "disp form1" , je sais pas moi)
    merci d'avance
    pré tendre dix nez sept hètre car aimant ame usée

  5. #4
    cricri

    Re : lancer un executable avec visual basic

    nomfeuille.show vbmodal ou
    nomfeuille.show ou

    vbmodal si tu veux ou pas avoir acces a toute les feuille ouverte en meme temp

  6. #5
    fiascototal

    Re : lancer un executable avec visual basic

    merci merci,
    j'ai deux autres questions (elles arrivent progressivement hi hi): j'aimerais afficher une frame puis, une seconde plus tard, en afficher une autre et celle d'avant disparait
    dc deux chses:
    -comment faire disparaitre une frame
    -comment en faire apparaitre au timer prevu (j'ai vus qu'il y avait un objet timer mais je ne vois pas comment on s'en sert)

    merci d'avance
    pré tendre dix nez sept hètre car aimant ame usée

  7. A voir en vidéo sur Futura
  8. #6
    EspritTordu

    Re : lancer un exécutable avec visual basic

    Bonjour,

    je debute dans visual basic, mais j'ai du mal à trouver de bon tutoriel simple sur le net
    En recherchant sur ce forum, je crois que vous trouverez des liens vers des sites de tutoriaux. Mais je pense que la meilleure approche, c'est encore d'aller se casser les dents vers des petits programmes (les petits en premier ) : ceux fournis en exemple avec la bibliothèque MSDN(Microsoft Developper Network, l'aide de VB), livrée avec VB et puis les sites des sources de code comme www.vbfrance.com ou bien http://www.planet-source-code.com.

    Au passage, comme il est souvent de mise en informatique, il existe plusieurs solutions différentes pour le même problème. Si la commande "Shell" est une commande VB, il existe L'API Windows équivalent "ShellExecute" qui fait la même chose mais qui est plus souvent utilisé, il me semble. C'est un peu plus technique...

    Pour l'objet Timer (c'est un peu particulier celui là!), je vous conseille de lire l'aide et l'exemple qui lui est associé dans la bibliothèque MSDN. Le fonctionnement est celui-ci : toutes les commandes que vous inscrivez dans la fonction Timer associé avec l'objet Timer seront reproduites a chaque intervale (en millisecondes) de temps défini par la propriété "Interval" de l'objet.

    Maintenant comme tous les objets (ou la plupart), les cadres (frame) ont une propriété "Visible" qui affiche ou non l'objet.

    Si vous voulez qu'un premier cadre s'affiche, puis un second s'affiche à la place du précédent préalablement rendu invisible, suivez cet exemple à placer dans la fonction Timer dont on aura pas oublié de définir l'intervale de temps (sinon rien ne se passe...)

    Soit Frame1, Frame2, deux cadres:

    if frame1.visible=true then
    frame1.visible=false
    frame2.visible=true
    else
    frame1.visible=true
    frame2.visible=false
    end if

    Exemple très didactique, mais qui marche !

    Un conseil si je peux me permettre, n'hésitez pas à utiliser les points d'arrêt (F9) et les espions, ainsi que la lecture Pas à pas(F8) pour comprendre le fonctionnement au ralenti votre code.

  9. Publicité
  10. #7
    fiascototal

    Re : lancer un exécutable avec visual basic

    supra merci pour le "Form1.visible", c'était exactement ce que je recherchai, mais il reste plein de chose que je ne comprend pas pour timer , meme en regardant les deux sites proposés precedement. Notamment le probleme de : ou est ce que l'on place l'action que l'on veut faire, dans nos lignes de codes??
    serait il possible d'avoir les trois lignes de codes permettant, par exemple, émettre un bip toute les secondes
    merci d'avance
    pré tendre dix nez sept hètre car aimant ame usée

  11. #8
    cricri

    Re : lancer un exécutable avec visual basic

    Sub Form_Load()
    Timer1.Enabled = True ' autorise
    Timer1.Interval = 1000 ' 1s
    End Sub

    Sub Timer1_Timer() ' code executer toute les 1s si l ordi n est pas trop stresser a faire autre chose
    Beep ' bizarement beep marche pas sur mon ordi
    End Sub

  12. #9
    fiascototal

    Re : lancer un exécutable avec visual basic

    merci bien cricri
    moi en tout cas ca marche bien
    autre question, comment lancer une animation automatiquement (à l'ouverture d'une frame, à un clique sur un boutons, au lancement du programme)
    j'entend par animation des fichiers multimedia entre autre
    en fait je souhaiterai lancer une musique à l'ouverture d'une frame, ou une video
    merci d'avance
    pré tendre dix nez sept hètre car aimant ame usée

  13. #10
    EspritTordu

    Re : lancer un exécutable avec visual basic

    (à l'ouverture d'une frame, à un clique sur un boutons, au lancement du programme)
    Si vous souhaitez lancer des fichiers multimédias par l'intermédiaire de logiciels liés aux extensions dans l'explorateur de windows, je crois que vous avez les élements... tout tourne autour de "shell" (par exemple).

    Mais avant d'aller plus loin, je crois qu'en parlant de l'objet 'frame', on ne parle pas tous les deux de la même chose. J'ai l'impression que pour vous 'frame' correspond à la feuille 'form', non? C'est important pour le fond mais surtout pour ce qui va suivre : on peut ne réagir directement au chargement d'un cadre 'frame', mais on peut agir facilement au chargement d'une feuille 'form', c'est comme ça, et finalement ce n'est pas trop pénalisant.

    Dans VB, tout objet est gratifié de propriétés (dont la plupart sont visibles dans le panneau 'propriétés'), d'événements (ce qui nous intéressent) qui sont listés dans la liste déroulable au sommet à droite du module de code d'une feuille (F7 sur un composant), et de méthodes (en gros des fonctions associées à un objet (par exemple 'shell' associée à l'objet général VB)). Ces trois éléments sont résumés exhaustivement dans l'explorateur d'objet (F2, puis chercher avec le nom du composant).

    Ces événements, sont des déclencheurs : quand un évenement est déclenché sur le contrôle (=objet/composant comme 'Timer'), celui-ci renvoie l'information en déclenchant une sub. Ces événements sont divers et propres à chacun des composants bien qu'on retrouve souvent les mêmes dans les nombreux composants. Ces événements sont évidents : touche pressée, chargement, reçoie le focus, clic de souris (même on peut distinguer bouton gauche, droit, milieu...) et j'en passe : à vous de les découvrir dans l'aide et dans les exemples !

    Prenons le bouton (si commun dans Windows ): dessinez-le sur votre feuille. Puis double-cliquez sur celui-ci ou bien pressez F7. Apparaît alors le module de code associé à la feuille : la feuille c'est la partie graphique (bien jolie...) et le module de code, c'est l'envers triste du décor mais où on fait tout... Par défaut le module n'est pas vierge au début et affiche une Sub du style 'Private Sub Command1_Click() end sub'. Cette sub n'est autre la sub associée à l'évenement qui se déclenche quand l'utilisateur clique avec la souris sur le bouton. En haut de la fenêtre : deux listes déroulables : à gauche la liste des composants existants(dessinées sur la feuille et la feuille elle-même appelée 'form'), à droite la liste d'événements associés au contrôle sélectionné dans la liste déroulable de droite. Pour notre bouton, la liste de droite liste les évenements disponibles ('keypress' pour les touches, 'dbclick' pour le 'double-clique'...). La feuille 'form', elle, de mémoire, à un événement 'Load' qui déclenche le code que contient la sub associée au chargement en mémoire de la feuille.

    Pour l'objet 'Timer', la liste d'évenement est bien pauvre : un seul événement 'Timer'.

    Jouez avec les contrôles, leurs événements...

    Pour déclencher l'ouverture d'un média de la manière précisée au début, en prenant pour exemple l'ouverture du fichier lors d'un clic sur un bouton nommé par défaut Command1.

    On dessine notre bouton, on règle en deux clics et trois mouvements ses propriétés (taille, nom, texte affiché...) puis on va écrire le code. On presse F7 pour afficher le module de code associé à la feuille. Par défaut le module affiche le premier événement disponible du contrôle bouton : le clic.
    Il nous reste plus qu'à définir alors ce qu'on veux faire lorsque le contrôle détectera le clic de l'utilisateur sur sa surface. On va inscrire le code dans cette sub donc.
    Nous, on veut lancer un fichier multimédia, soit. On va utiliser la méthode 'Shell' dont on va soigneusement spécifier les paramètres (dont l'aide'mémoire s'affiche automatiquement lors de la saisie au clavier). Ces paramètres ne sont pas très compliqués : un seul obligatoire, et facile à renseigner : on inscrit le chemin d'accès du fichier média. Le tour est fait, on lance la compilation du programme (F5), puis on clique sur notre bouton et... (on attend un peu ) le fichier s'ouvre avec son logiciel par défaut.

    En résumé,

    Sub Command1_Click() 'on ouvre l'événement
    'Ici on lance le fichier et son logiciel

    shell 'A ajouter :le chemin d'accès entre guillemets du fichier

    End Sub 'on ferme l'événement

    En espérant ne pas avoir plus embrouillé qu'autre chose, voici un résumé concis pour associer du code à des objets et lancer un fichier.
    Dernière modification par EspritTordu ; 16/02/2006 à 11h20.

  14. #11
    EspritTordu

    Re : lancer un exécutable avec visual basic

    C'est bien ce qui me semblait dès le début !

    Après ma longue tirade explicative, je m'en vais coder ce que je dis (qui reste juste cependant) et voilà-t-il pas que ce sacré VB ne digère pas la méthode 'Shell' employée comme dit ci-dessus !

    Alors il faut s'en retourner à ce que je disais au début de la discussion : l'API Windows 'ShellExecute'.
    Mon explication est juste pour le fonctionnement, c'est juste 'Shell' qui foire lamentablement!! C'est une bonne leçon, il faut se méfier des méthodes, des propriétés : savoir leur champ d'utilisation, leur limite (c'est l'expérience et les nombreux échecs qui vous permettent de les éviter...) Pourquoi 'Shell' ne fonctionne-t-il pas dans ce cas là ? Aucune idée. Peut-être s'agit-il d'une commande maternée par VB qui se limite à lancer les logiciels les plus courants... Si quelqu'un peut avancer la raison de ce malfonctionnement... Et pourtant ce n'est pas la première fois que je tombe dans le panneau!!

    On ne réfléchi plus et on fonce directement vers ce qui est plus compliqué mais qui marche assurément !

    Si vous êtes au début dans l'apprentissage de VB, si pour vous le principe des propriétés, des méthodes, des évenements, des fonctions, des subs vous est nouveau alors sautez le paragraphe suivant où j'essaie d'expliquer ce qu'est l'API, le pourquoi de la chose et surtout j'illustre son application...

    Si la curiosité vous pousse à lire ces lignes, c'est alors un grand pas dans la programmation VB. VB c'est beau, mais les commandes proposées sont nombreuses mais limités : dès qu'on veut intéragir avec l'environnement Windows (comme notre cas où on utilise à travers 'Shell', l'explorateur Windows pour lancer notre fichier), plus rien d'efficace, de simple, de rapide d'éxécution, de totalement compatible avec toutes les configurations possibles et de complet...
    Mais VB n'est pas à mettre pour autant à la corbeille. Rentre en jeu les API Windows.
    C'est une fonction (et ses paramètres, c'est-à-dire un peu comme une sub, une liste de ligne code). Les API sont utilisées dans les Windows (ce qui pose parfois des problèmes de compatibilité entre les différentes versions plus ou moins récentes de Windows, mais ça reste marginal...)
    En clair en utilisant ces API, nombreuses et toutes stockées dans les Dll de windows (du genre certains Kernel.dll, gui32.dll...), vous utilisez sans vous ennuyer à écrire et comprendre des paragraphes de code (parfois très expert) optimisé (rapide et complet) : pour vous, une seule ligne suffit!
    Les listes d'API se trouvent dans l'aide (toute documentation), la MSdN(site de Microsoft), sur internet (http://www.mentalis.org/index2.shtml (à voir (même si le site n'est plus à jour) particulièrement Apiviewer.exe,Api_guide )). On trouve des API (utilisées dans le C aussi) pour tout : chargement des images, dessins, cryptage, sons... Il est conseillé de ne pas foncer vers ces apis sans plus ou moins connaître les commandes VB standards équivalents lorsqu'elles existent !

    'ShellExecute' est l'une de ces API. Elle sert à lancer les fichiers, à explorer et d'autres choses dont je me souviens plus... . Pour les puristes, elle est dans la dll 'shell32.dll' de Windows.

    Ces API ne sont pas déclarée au démarrage de VB comme peuvent l'être les commandes standards dont fait partie 'Shell' (déclaration masquée et non explicite). L'accès aux dll en général se fait par une déclaration dont je passe la description mais nécessaire !

    Puis après, c'est comme une fonction qu'on aurait écrite nous-même : on appel par son nom, on remplit ses paramètres éventuels...

    Voici les lignes de codes pour réaliser notre problème, à savoir, le lancement de fichier (quel que ce soit d'ailleurs!) après le clique sur notre bouton dessiné.

    'Petit changement : dans la section général/déclarations, on déclare donc l'API : on fait un lien entre notre programme et les dll Windows. Attention à la casse pour shellexecuteA!

    Private Declare ShellExecute lib "shell32.dll" alias "ShellExecuteA" (Byval hwnd as long, Byval lpOperation as String, Byval LpFile as string, Byval lpParameters as string, Byval lpDirectory as string, ByVal nShowCmd as long) as long

    'Puis on reprend le déroulement classique : on fait apparaître notre évenement clic du bouton

    Private sub Command1_Click()
    'On appel et règle notre API: disons qu'il existe un fichier "c:\essai.mp3" sur notre disque

    Shellexecute Me.hwnd, "Open", "C:\essai.mp3", "","",0

    End Sub


    Ce morceau de code est testé et fonctionne cette fois! Double précaution valent mieux qu'une!

Sur le même thème :

Discussions similaires

  1. visual basic 6
    Par marc.suisse dans le forum Électronique
    Réponses: 6
    Dernier message: 17/05/2006, 09h56
  2. Ascenseur en Visual basic avec K8055
    Par xa4ke dans le forum Électronique
    Réponses: 0
    Dernier message: 10/05/2006, 21h43
  3. récupéré des info usb avec du visual basic
    Par tibo03 dans le forum Électronique
    Réponses: 1
    Dernier message: 09/06/2005, 15h23
  4. Débuter avec Visual Basic
    Par Brumaire dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 18/12/2004, 18h41
  5. Problème avec visual basic
    Par KHEOPS1982 dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 14/08/2004, 00h11
Découvrez nos comparatifs produits sur l'informatique et les technologies.