Faire son propre "Gyazo"

Yelloww

Joueur CS:GO bitch!
Premium
Inscription
11 Mars 2012
Messages
574
Réactions
160
Points
20 088
RGCoins
45
Bonjour!
Aujourd'hui je vais vous apprendre a faire votre propre Gyazo, c'est-à-dire un logiciel afin de prendre des screenshots assez rapidement, j'suis assez fier du résultat, je vous en fait donc partager! :)

I - Les prérequis

  1. Un hébergement Web (000webhost suffit, pas besoin de payer)
  2. Visual Studio (Réaliser sous Microsoft Visual Basic 2010)
  3. Un cerveau :troll:

II - Commençons!

Bon, tout d'abord nous allons créer un nouveau projet, appelons le PrintScreen

Ensuite, nous allons parametré un peu la form, vous pouvez mettre ces paramètres, surtout ne pas négliger
Form.BorderStyle : None
Opacity: 1%
Size: 1920;1080 Même si vous n'avez pas cette résolution, mettez la quand même, le logiciel adaptera

Ensuite, nous allons ajouter ce code dans notre Form1_Load, double cliquez sur la form, et ajoutez:
Code:
        Me.TopMost = True
       

        If (Not System.IO.Directory.Exists("C:\Users\Public\screen")) Then
            System.IO.Directory.CreateDirectory("C:\Users\Public\screen")
        End If

Ici, nous avons fait que notre form est toujours au top, c'est nécessaire, ensuite nous avons fait que SI le dossier Screen n'existe pas, alors on le crée, c'est obligatoire.

Bon, on a le début, c'est plutot pas mal mais inutile pour le moment, sauvegardez, on sait jamais ;)
Maintenant, on va ajouter un evenement, Si on appuie sur la touche Echap, alors le programme se ferme, pour cela, faite comme moi:
Déjà, cliquez sur Form1_load, puis:
0f876635619c36f90ea6c9c624f7a076.gif



Puis, nous allons rajouter ce code dans la partie que nous venons de générer:
Code:
        If e.KeyCode = Keys.Escape Then
            Me.Close()
        End If

Ce qui signifie, si on appuie sur Echap, alors le programme se ferme.

Bon, on a un bon début là, surtout sauvegardez :)
Maintenant, on va ajouter une nouvelle form.
Pour ceux qui ne savent pas, faites comme moi
(Vous, ce sera Form2)
e8437ebef166fee8291480b06c01b791.gif


Maintenant, on va re-ajouter un evenement, même principe sauf que là, c'est MouseDown.

Dans cette evenement, on va ajouter
Code:
        Form2.Show()
        Form2.Location = Cursor.Position
        Form2.Location = Form2.Location 'Non obligatoire, mais on sait jamais :)

On va ouvrir la seconde form, qui servira a prendre le screenshot, et dire que la form s'ouvrira là ou la souris est.

Bon, maintenant la partie importante, ce qui va prendre le screen, et définir la zone
Ajoutez un evenement MouseUp

Code:
 Form2.Hide()
        Me.Hide()
        Dim bounds As Form2
        Dim screenshot As System.Drawing.Bitmap
        Dim graph As Graphics
        bounds = Form2
        screenshot = New System.Drawing.Bitmap(bounds.Width, bounds.Height, System.Drawing.Imaging.PixelFormat.Format32bppRgb)
        graph = Graphics.FromImage(screenshot)
        graph.CopyFromScreen(Form2.Bounds.X, Form2.Bounds.Y, 0, 0, bounds.Size, CopyPixelOperation.SourceCopy)
        Form2.BackgroundImage = screenshot
      
        ' Ici on va générer un String, qui sera le nom du fichier
        Dim s As String = "abcdefghijklmnopqrstuvwxyz1234567890" ' Les chiffres et lettres qui seront utiliser
        Dim r As New Random
        Dim sb As New StringBuilder
        For i As Integer = 1 To 12 'Nombre de caractères, remplacez 12 par ce que vous voulez
            Dim idx As Integer = r.Next(0, 35)
            sb.Append(s.Substring(idx, 1))
        Next


        Dim bmp As Bitmap
        Try
            If Form2.Label1.Text < 10 And Form2.Label4.Text < 10 Then 'Vérification si l'image est plus grande que 10x10

            Else

                'On va enregistrer le fichier ici: C:\Users\Public\Screen\StringGenere.png
                bmp = Form2.BackgroundImage
                bmp.Save("C:\Users\Public\screen\" & sb.ToString & ".png")
              
                'On upload le fichier, Je vous donnerai le php après
                My.Computer.Network.UploadFile("C:\Users\Public\screen\" & sb.ToString & ".png", "http://votresite/upload.php") 'Remplacee, je donnerai le fichier php plus tard
             
                'On se rend sur notre page, là ou le screen est upload et on copie le lien automatiquement dans le presse papier
                Process.Start("http://votresite/screenshot/" & sb.ToString & ".png")
                My.Computer.Clipboard.SetText("http://votresite/screenshot/" & sb.ToString & ".png")
              
                'Suppression du fichier une fois l'upload fait
                If System.IO.File.Exists("C:\Users\Public\screen\" & sb.ToString & ".png") = True Then

                    System.IO.File.Delete("C:\Users\Public\screen\" & sb.ToString & ".png")
                End If
            End If
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

Bon, on a finit avec la première Form, maintenant passant a la form2
Mettez les mêmes paramètres, sauf Opacity c'est a dire:
Form.BorderStyle : None
Opacity: 80%
Size: 1920;1080

Maintenant, on va mettre la couleur de la form en ControlText (Choix personnel)
66c30223492711a5edf99ceb1580eafa.png


Ensuite, on va ajouter Deux Label, qui serviront a savoir la hauteur, et la largeur, qui sera éditer en directe
4e0707a54c09782985ab2a890b433e4e.png


Choisissez la couleur, la police, ce que vous voulez!
Bon, maintenant on retourne coté code
Double clique sur Form2, et on ajoute un evenement, SizeChanged
Et on ajoute ceci dedans:
Code:
        Label1.Text = Me.Size.Height
        Label2.Text = Me.Size.Width

Bon maintenant, passons coté serveur!
Voici le code PHP, je précise il ne vient pas de moi, c'est une vrai passoire, mais si c'est pour un usage personnel, comme moi, c'est largement suffisant ;)
PHP:
<?php
if (!empty($_FILES["file"])){
move_uploaded_file($_FILES["file"]["tmp_name"],
      "screenshot/" . $_FILES["file"]["name"]); #Screenshot = Votre repertoire, Pensez BIEN A METTRE LES PERMISSIONS D'ECRITURE, C'EST A DIRE 777
}
?>

Voila, il ne reste que a éditer le code par votre site a vous, et de creer un dossier screenshot et de mettre les permissions d'écriture, 777
cfc937a510774b99c758d2eddee941f7.png



Si vous avez des questions, je suis là!
 
Dernière édition:
Bonjour!
Aujourd'hui je vais vous apprendre a faire votre propre Gyazo, c'est-à-dire un logiciel afin de prendre des screenshots assez rapidement, j'suis assez fier du résultat, je vous en fait donc partager! :)

I - Les prérequis

  1. Un hébergement Web (000webhost suffit, pas besoin de ftp)
  2. Visual Studio (Réaliser sous Microsoft Visual Basic 2010)
  3. Un cerveau :troll:

II - Commençons!

Bon, tout d'abord nous allons créer un nouveau projet, appelons le PrintScreen

Ensuite, nous allons parametré un peu la form, vous pouvez mettre ces paramètres, surtout ne pas négliger
Form.BorderStyle : None
Opacity: 1%
Size: 1920;1080 Même si vous n'avez pas cette résolution, mettez la quand même, le logiciel adaptera

Ensuite, nous allons ajouter ce code dans notre Form1_Load, double cliquez sur la form, et ajoutez:
Code:
        Me.TopMost = True
       

        If (Not System.IO.Directory.Exists("C:\Users\Public\screen")) Then
            System.IO.Directory.CreateDirectory("C:\Users\Public\screen")
        End If

Ici, nous avons fait que notre form est toujours au top, c'est nécessaire, ensuite nous avons fait que SI le dossier Screen n'existe pas, alors on le crée, c'est obligatoire.

Bon, on a le début, c'est plutot pas mal mais inutile pour le moment, sauvegardez, on sait jamais ;)
Maintenant, on va ajouter un evenement, Si on appuie sur la touche Echap, alors le programme se ferme, pour cela, faite comme moi:
Déjà, cliquez sur Form1_load, puis:
0f876635619c36f90ea6c9c624f7a076.gif



Puis, nous allons rajouter ce code dans la partie que nous venons de générer:
Code:
        If e.KeyCode = Keys.Escape Then
            Me.Close()
        End If

Ce qui signifie, si on appuie sur Echap, alors le programme se ferme.

Bon, on a un bon début là, surtout sauvegardez :)
Maintenant, on va ajouter une nouvelle form.
Pour ceux qui ne savent pas, faites comme moi
(Vous, ce sera Form2)
e8437ebef166fee8291480b06c01b791.gif


Maintenant, on va re-ajouter un evenement, même principe sauf que là, c'est MouseDown.

Dans cette evenement, on va ajouter
Code:
        Form2.Show()
        Form2.Location = Cursor.Position
        Form2.Location = Form2.Location 'Non obligatoire, mais on sait jamais :)

On va ouvrir la seconde form, qui servira a prendre le screenshot, et dire que la form s'ouvrira là ou la souris est.

Bon, maintenant la partie importante, ce qui va prendre le screen, et définir la zone
Ajoutez un evenement MouseUp

Code:
 Form2.Hide()
        Me.Hide()
        Dim bounds As Form2
        Dim screenshot As System.Drawing.Bitmap
        Dim graph As Graphics
        bounds = Form2
        screenshot = New System.Drawing.Bitmap(bounds.Width, bounds.Height, System.Drawing.Imaging.PixelFormat.Format32bppRgb)
        graph = Graphics.FromImage(screenshot)
        graph.CopyFromScreen(Form2.Bounds.X, Form2.Bounds.Y, 0, 0, bounds.Size, CopyPixelOperation.SourceCopy)
        Form2.BackgroundImage = screenshot
      
        ' Ici on va générer un String, qui sera le nom du fichier
        Dim s As String = "abcdefghijklmnopqrstuvwxyz1234567890" ' Les chiffres et lettres qui seront utiliser
        Dim r As New Random
        Dim sb As New StringBuilder
        For i As Integer = 1 To 12 'Nombre de caractères, remplacez 12 par ce que vous voulez
            Dim idx As Integer = r.Next(0, 35)
            sb.Append(s.Substring(idx, 1))
        Next


        Dim bmp As Bitmap
        Try
            If Form2.Label1.Text < 10 And Form2.Label4.Text < 10 Then 'Vérification si l'image est plus grande que 10x10

            Else

                'On va enregistrer le fichier ici: C:\Users\Public\Screen\StringGenere.png
                bmp = Form2.BackgroundImage
                bmp.Save("C:\Users\Public\screen\" & sb.ToString & ".png")
              
                'On upload le fichier, Je vous donnerai le php après
                My.Computer.Network.UploadFile("C:\Users\Public\screen\" & sb.ToString & ".png", "http://votresite/upload.php") 'Remplacee, je donnerai le fichier php plus tard
             
                'On se rend sur notre page, là ou le screen est upload et on copie le lien automatiquement dans le presse papier
                Process.Start("http://votresite/screenshot/" & sb.ToString & ".png")
                My.Computer.Clipboard.SetText("http://votresite/screenshot/" & sb.ToString & ".png")
              
                'Suppression du fichier une fois l'upload fait
                If System.IO.File.Exists("C:\Users\Public\screen\" & sb.ToString & ".png") = True Then

                    System.IO.File.Delete("C:\Users\Public\screen\" & sb.ToString & ".png")
                End If
            End If
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

Bon, on a finit avec la première Form, maintenant passant a la form2
Mettez les mêmes paramètres, sauf Opacity c'est a dire:
Form.BorderStyle : None
Opacity: 80%
Size: 1920;1080

Maintenant, on va mettre la couleur de la form en ControlText (Choix personnel)
66c30223492711a5edf99ceb1580eafa.png


Ensuite, on va ajouter Deux Label, qui serviront a savoir la hauteur, et la largeur, qui sera éditer en directe
4e0707a54c09782985ab2a890b433e4e.png


Choisissez la couleur, la police, ce que vous voulez!
Bon, maintenant on retourne coté code
Double clique sur Form2, et on ajoute un evenement, SizeChanged
Et on ajoute ceci dedans:
Code:
        Label1.Text = Me.Size.Height
        Label2.Text = Me.Size.Width

Bon maintenant, passons coté serveur!
Voici le code PHP, je précise il ne vient pas de moi, c'est une vrai passoire, mais si c'est pour un usage personnel, comme moi, c'est largement suffisant ;)
PHP:
<?php
if (!empty($_FILES["file"])){
move_uploaded_file($_FILES["file"]["tmp_name"],
      "screenshot/" . $_FILES["file"]["name"]); #Screenshot = Votre repertoire, Pensez BIEN A METTRE LES PERMISSIONS D'ECRITURE, C'EST A DIRE 777
}
?>

Voila, il ne reste que a éditer le code par votre site a vous, et de creer un dossier screenshot et de mettre les permissions d'écriture, 777
cfc937a510774b99c758d2eddee941f7.png



Si vous avez des questions, je suis là!
Gros travaille de ta part merci de l'avoir partager pour ceux qui ne savais pas le faire.
 
Putain oui je cherchais comment upload et tout thx ;)
 
C'est quand même pas compliquer de coder en VB c'est frustrant pour les vrais développeurs mais sinon bon projet
 
C'est quand même pas compliquer de coder en VB c'est frustrant pour les vrais développeurs mais sinon bon projet
Y'a quoi de compliquer? J'ai jamais dit que ça l'était, mon but est de faire apprendre, j'aurais pu balancer les codes et le projet sans avoir décrit ce que chaque étape faisait.
 
Y'a quoi de compliquer? J'ai jamais dit que ça l'était, mon but est de faire apprendre, j'aurais pu balancer les codes et le projet sans avoir décrit ce que chaque étape faisait.
Je parle pas de toi mais du langage fin de la façon que les programmeurs de VB et C# codent, tu cliques la t'as 10 lignes de code en plus tu recliques la 'as 20 ligne et hop ça fait un programme
 
Retour
Haut