Comment afficher un module a partir d'une form ?

Signaler
Messages postés
24
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
29 mai 2011
-
Messages postés
24
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
29 mai 2011
-
Salut à tous !

En faites je vous explique déjà un peu mon programme :
Il y a un forme qui fait des actions et le module affiche les résultats (en console , CMD si vous préférez).
Sauf que je n'arrive pas a lancer la console a partir de la form de départ , avez vous une idée de comment faire ?

Merci beaucoup !

32 réponses

Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
i=shell("cmd",vbNormalFocus)

i et un variable long qui récupére l'id du shell. Pas obligatoire
Messages postés
24
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
29 mai 2011

Ah désolé j'ai du mal m'expliqué ,
quand je disais CMD c'est le module dont je parlais , pas du "vrai" CMD (qui n'est autre qu'une console)

Merci quand même !
Messages postés
24
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
29 mai 2011

*le module est un console
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Salut
envoie ton code pour voir
Messages postés
24
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
29 mai 2011

Ok !

Code du form1 :
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Module1.affichage("Initialisation du module réussi !")
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load


    End Sub
End Class


Code du module :
Module Module1
    Sub main()
        Console.WriteLine("")
        Console.WriteLine("Bienvenue sur 51D4 !")
        Console.WriteLine("")
        pause()
    End Sub
    Sub affichage(ByVal texte As String)
        Console.WriteLine("")
        Console.WriteLine(texte)
        Console.WriteLine("")
        pause()
    End Sub
    Sub pause()
        Console.ReadLine()
    End Sub
End Module


J'espère que tu pourras m'aider
Messages postés
24
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
29 mai 2011

(le code pour ouvrir le module1 serait a inséré dans le form1_load)
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Dis moi " Module1.affichage("Initialisation du module réussi !")" ca marche ?
Messages postés
24
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
29 mai 2011

Justement non , en faite je pense que module1 n'est pas chargé , c'est bien ça mon problème (en faites c'est un peu un form1.show que je cherche mais ça n'existe pas pour les modules ... ! )
Messages postés
24
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
29 mai 2011

Mais autrement il marche ! (j'ai testé en trichant en démarrant comme si la form1 était une console , mais ça a crashé après )
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
Salut,

Quel est l'objectif de ton projet ?
Si le but n'est pas de lancer des lignes de commandes, alors pourquoi ne pas embarquer une zone de texte dans ta Form où tu afficherais ces "logs" ?
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Si (je dis bien si) tu change le code ansi
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        affichage("Initialisation du module réussi !")
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load


    End Sub
End Class



Code du module :
Code Visual Basic :

Module Module1
    public Sub main()
        Console.WriteLine("")
        Console.WriteLine("Bienvenue sur 51D4 !")
        Console.WriteLine("")
        pause()
    End Sub
    public Sub affichage(ByVal texte As String)
        Console.WriteLine("")
        Console.WriteLine(texte)
        Console.WriteLine("")
        pause()
    End Sub
    public Sub pause()
        Console.ReadLine()
    End Sub
End Module
Messages postés
24
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
29 mai 2011

jopop => Non non je tiens vraiment a agir avec une console , sinon évidemment le travail aurait été plus simple !

4u4me4us => J'ai essayé , mais rien n'est apparu ... :/
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
En pas à pas le code fait quoi ?

1)Affiche le code et fait un clique sur la marge de gauche.
2)Un ligne rouge va s'afficher (clique de nouveau sur la marge pour la supprimer)
3) L'ance le formulaire comme tu en as l'abbitudes
4) Dès que le code arrive sur la ligne rouge il va ce stopper automiqument
5) En survolant les vaiables avec la souris la valeur qu'elle contiènne saffiche en info bull
6) Pour poursuivre le code presse sur la touche "F8" ansi tu vois l'évolution en pas à pas du programme
7) Pour faire tourné le code normmalement presse sur la touche "F5"
Messages postés
24
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
29 mai 2011

Bonne idée , le programme est bien aller dans le sub affichage et a effectuer toutes les actions puis est retourner au main.

Je pense que le seul problème est que la console n'est pas affichée , du côté utilisateur on ne voit rien donc !
Messages postés
24
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
29 mai 2011

Au pire des cas , je dispose de teamviewer (assistance à distance) si tu penses pouvoir m'aider ainsi , car là je cherche mais je trouve pas
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
deux questions.
1) "puis est retourner au main." Si tu appelle d'abord le main la situation s'arrange t-elle?
2)Tu code en vb.net ?
Messages postés
24
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
29 mai 2011

1)Je parlais de la form1 désolé , pas du main du module ...
2)Oui en vb.net (2008 express edition) ;)
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
Et ben on va rigoler ... ^^

il va falloir importer des fonctions d'une dll :
	[DllImport("kernel32.dll")]
public static extern Boolean AllocConsole();
[DllImport("kernel32.dll")]
public static extern Boolean FreeConsole();

(ne pas oublier de faire un using de System.Runtime.InteropServices)
[list]
[*] L'appel de la première fonction va ouvrir ton CMD (plusieurs appels n'ouvrent pas plusieurs CMD).
[*]L'appel de la seconde va fermer ton CMD (s'il n'était pas ouvert ça ne va pas planter).
[*]Entre ces deux appels tu pourras jouer avec les méthodes statiques de Console.
/list
bon code
Messages postés
24
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
29 mai 2011

Le code est en vb , or tu m'a envoyé un code en C#
Et je doute que ce soit si compliqué au point de devoir importé des dll pour afficher le module1 :O ?
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Moi de crois que jopop a raison. je ne pense pas que tu puisse aussi facilement passer un projet consol dans un projet Window. Et si tu fessait un batch que tu lancerais depuis la form ?