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

VB.NET Discussion :

Pause du programme


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 31
    Points : 16
    Points
    16
    Par défaut Pause du programme
    Bonjour,
    Je crée un programme de capture d'écran sous visual basic 2005 express edition,
    je voudrai que lorsque l'on clique sur le bouton qui lance la capture le programme fasse une pause de x secondes avant la capture, x étant égal au contenu d'une textbox a coté du bouton, pour qu'ains lutilisateur puisse choisir le temps lui meme.
    Suis-je clair??
    merci de votre aide

  2. #2
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Citation Envoyé par pedro85 Voir le message
    Bonjour,
    Je crée un programme de capture d'écran sous visual basic 2005 express edition,
    je voudrai que lorsque l'on clique sur le bouton qui lance la capture le programme fasse une pause de x secondes avant la capture, x étant égal au contenu d'une textbox a coté du bouton, pour qu'ains lutilisateur puisse choisir le temps lui meme.
    Suis-je clair??
    merci de votre aide
    Utilise un thread et mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Threading.Sleep(5000) 'attend 5 secondes

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Ben oui mais avec un Thread.Sleep ça va freezer l'IHM... c'est peut-être pas ce qu'il veut. Moi j'aurais plutot utilisé un Timer qui se lance au bout de 5 secondes.
    A propos de timers, il y a ici un article très intéressant qui compare en détail les différents timers proposés par le Framework (en anglais)

  4. #4
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Ben oui mais avec un Thread.Sleep ça va freezer l'IHM... c'est peut-être pas ce qu'il veut. Moi j'aurais plutot utilisé un Timer qui se lance au bout de 5 secondes.
    A propos de timers, il y a ici un article très intéressant qui compare en détail les différents timers proposés par le Framework (en anglais)
    Je n'ai jamais eu de problème avec la méthode Sleep... On peut aussi utiliser un Timer mais quand on peut faire simple pourquoi chercher compliqué ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 31
    Points : 16
    Points
    16
    Par défaut
    Merci mais en fait mon probleme ce n'est pas de faire faire une pause au programme ca je sais faire mais ce que je voudrais c'est que la valeur entrée par lutilisateur dans la textbox soit utilisée par la pause pour permettre a lutilisateur de la choisir lui meme

  6. #6
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Citation Envoyé par pedro85 Voir le message
    Merci mais en fait mon probleme ce n'est pas de faire faire une pause au programme ca je sais faire mais ce que je voudrais c'est que la valeur entrée par lutilisateur dans la textbox soit utilisée par la pause pour permettre a lutilisateur de la choisir lui meme
    Donc tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim Temps as Integer = Cint(Textbox1.text)
    Threading.Sleep(temps)

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 31
    Points : 16
    Points
    16
    Par défaut
    Ben je ne comprends pas c'est ce que je fais.
    Je vous join le code et une capture d'écran(justement lol) pour que vous compreniez mieux.

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Public Class Form1
     
        Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Me.Visible = False
            Dim textebox As Integer
            textebox = TextBox1.Text
            Dim attente As Integer
            attente = (textebox / 1000)
            Sleep(attente)    'C'est cette pause qui me pose (haha...) probleme.
            Shell("SNAPSHOT.EXE")
            Sleep(1000)
            Dim dossier As String
            dossier = (FolderBrowserDialog1.SelectedPath + "\capture.bmp")
            FileCopy("C:\snapshot.bmp", dossier)
            Me.Visible = True
     
        End Sub
     
        Public Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
        End Sub
     
     
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            FolderBrowserDialog1.Description = "Choisissez votre répertoire"
            If FolderBrowserDialog1.ShowDialog(Me) = Windows.Forms.DialogResult.OK Then
                MessageBox.Show(Me, _
                            "Vous aves choisi " + FolderBrowserDialog1.SelectedPath, _
                            "Repertoire", _
                            MessageBoxButtons.OK, _
                            MessageBoxIcon.Information)
                Label4.Text = FolderBrowserDialog1.SelectedPath
     
            End If
        End Sub
     
        Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Integer)
     
    End Class

  8. #8
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Et y'a une erreur ? EN tout cas y'a des erreurs de conversions dans ton code !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Me.Visible = False
            Dim textebox As Integer
            textebox = Cint(TextBox1.Text)
            Dim attente As Integer
            attente = Cint((textebox / 1000))
            Sleep(attente)
            Shell("SNAPSHOT.EXE")
            Sleep(1000)
            Dim dossier As String
            dossier = (FolderBrowserDialog1.SelectedPath + "\capture.bmp")
            FileCopy("C:\snapshot.bmp", dossier)
            Me.Visible = True
        End Sub
    Mets ca en haut de ta form :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Option Strict On
    Option Explicit On

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 31
    Points : 16
    Points
    16
    Par défaut
    Merci maintenant le programme tourne sans erreur mais par contre il ne respecte toujours pas le temps de pause rentré avant la capture.
    Par contre je n'ai pas réussi a mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Option Strict On
    Option Explicit On
    ou que ce soit dans le code. (qu'entendez vous par en haut de ma form)
    ca a peu etre un rapport avec ca.
    Désolé je pose peut etre des question bete mais je programme que depuis 3 semaines (et encore que quelques heures le weekend alors...)

  10. #10
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Citation Envoyé par pedro85 Voir le message
    Merci maintenant le programme tourne sans erreur mais par contre il ne respecte toujours pas le temps de pause rentré avant la capture.
    Par contre je n'ai pas réussi a mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Option Strict On
    Option Explicit On
    ou que ce soit dans le code. (qu'entendez vous par en haut de ma form)
    ca a peu etre un rapport avec ca.
    Désolé je pose peut etre des question bete mais je programme que depuis 3 semaines (et encore que quelques heures le weekend alors...)
    T'inquiète pas c'est pas grave

    Place ces deux lignes tout en haut de tes formulaires (avant les imports)

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 115
    Points : 110
    Points
    110
    Par défaut
    J'ai mieux pour toi :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Path As String = ""
    Private Const VK_SNAPSHOT As Short = &H2CS
    Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Integer, ByVal dwExtraInfo As Integer)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        Private Function SaveScreen(ByVal theFile As String) As Boolean
            Dim Data As IDataObject = Clipboard.GetDataObject()
            Dim ImageBitmap As Bitmap
            If Data.GetDataPresent(GetType(System.Drawing.Bitmap)) Then
                ImageBitmap = CType(Data.GetData(GetType(System.Drawing.Bitmap)), Bitmap)
                Dim PB As New PictureBox
                PB.Image = ImageBitmap
                PB.Image.Save(theFile, Imaging.ImageFormat.Jpeg) 'La tu mets le format que tu veux
            End If
        End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            If Not Path.Trim = "" Then
                Me.Visible = False
                System.Threading.Thread.Sleep(CInt(TextBox1.Text) * 1000) 'Tu mets le temps en secondes dans la textbox
                keybd_event(System.Windows.Forms.Keys.Snapshot, 0, 0, 0)
                System.Threading.Thread.Sleep(200) 'Le temps de récupérer le screenshot
                SaveScreen(Path & "\screenshot.jpg")
                Me.Visible = True
            Else
                MsgBox("Choisir le dossier de destination de l'image...")
            End If
        End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            Dim FBD As New FolderBrowserDialog
            FBD.ShowDialog()
            Path = FBD.SelectedPath
        End Sub

  12. #12
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Pourquoi faire simple quand on peut faire compliqué... ca répond pas vraiment à la question posée en plus ! Cela dit c'est une approche intéressante...

    @pedro85 :
    A mon avis le probleme, en plus de la conversion qui est peut-être foireuse, est que la méthode Sleep prend en parametre des millisecondes. Or toi tu divises par 1000 la valeur qui vient de la textbox, ce qui marcherait si cette valeur était en microsecondes mais ca m'etonnerait. Si c'est des secondes que tu entres dans la textbox, tu dois multiplier par 1000, pas diviser, pour obtenir des millisecondes.
    Au fait, tu n'as pas besoin d'importer la fonction Sleep avec un Declare : utilise System.Threading.Thread.Sleep à la place, ça fait exactement la même chose.

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 31
    Points : 16
    Points
    16
    Par défaut Abruti je suis et je resterai
    A mon avis le probleme, en plus de la conversion qui est peut-être foireuse, est que la méthode Sleep prend en parametre des millisecondes. Or toi tu divises par 1000 la valeur qui vient de la textbox, ce qui marcherait si cette valeur était en microsecondes mais ca m'etonnerait. Si c'est des secondes que tu entres dans la textbox, tu dois multiplier par 1000, pas diviser, pour obtenir des millisecondes.
    Au fait, tu n'as pas besoin d'importer la fonction Sleep avec un Declare : utilise System.Threading.Thread.Sleep à la place, ça fait exactement la même chose.

    Hum, , bon, ok, voila quoi, j'crois que jvais retourner reviser mes maths.
    Eh bien tomlev, merci bien, car effectivement, C'EST LA BONNE REPONSE!
    Malheureusement je n'ai pas de superbe écran plasma a offrir...
    Eh oui c'était juste un probleme de calcul, j'ai supprimé le "/" et remplacé par le "*" et paf! ca a fait des chocapics! non mais par contre ca a marché.

    un grand merci

    quan le prog sera fini jmetrai un lien ici vers un serveur ou je l'aurai déposé pour qe vous voyiez ce a quoi vous avez contribué.


    MERCI

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/07/2009, 16h51
  2. Réponses: 4
    Dernier message: 26/04/2008, 00h29
  3. Effectuer une pause du programme
    Par Ph.denis dans le forum C
    Réponses: 2
    Dernier message: 04/04/2008, 13h59
  4. Pause du programme au niveau du GUI
    Par Emilie[2009] dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 16/03/2008, 17h12
  5. [LG]Pause de programme ou Break time
    Par lvdnono dans le forum Langage
    Réponses: 11
    Dernier message: 17/05/2003, 17h23

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