Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

PRESSE-PAPIER


Information sur la source

Catégorie :Tutoriaux Classé sous : presse, papier Niveau : Débutant Date de création : 04/09/2001 Vu / téléchargé: 6 409 / 326

Note :
9,33 / 10 - par 3 personnes
9,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Controle du presse papier, c'est a vous de jouer !!!
 

Source

  • Private Sub AIDE_Click()
  • frmAbout.Show
  • End Sub
  • Private Sub Coller_Click()
  • Screen.ActiveControl = Clipboard.GetData()
  • End Sub
  • Private Sub Copier_Click()
  • Clipboard.Clear
  • Clipboard.SetData Screen.ActiveControl
  • End Sub
  • Private Sub Couper_Click()
  • Clipboard.Clear ' effacer presse papier
  • Clipboard.SetData Screen.ActiveControl 'contenue oicture vers presse papiers
  • Screen.ActiveControl = LoadPicture("") ' efface picture box
  • End Sub
  • Private Sub effacer_Click()
  • Screen.ActiveControl = LoadPicture("")
  • End Sub
  • Private Sub Picture1_MouseDown(button As Integer, shift As Integer, x As Single, y As Single)
  • If button = 2 Then
  • PopupMenu Edition
  • End If
  • End Sub
  • Private Sub Quitter_Click()
  • End
  • End Sub
  • Option Explicit
  • ' Options de sécurité des clés de base de registres...
  • Const READ_CONTROL = &H20000
  • Const KEY_QUERY_VALUE = &H1
  • Const KEY_SET_VALUE = &H2
  • Const KEY_CREATE_SUB_KEY = &H4
  • Const KEY_ENUMERATE_SUB_KEYS = &H8
  • Const KEY_NOTIFY = &H10
  • Const KEY_CREATE_LINK = &H20
  • Const KEY_ALL_ACCESS = KEY_QUERY_VALUE + KEY_SET_VALUE + _
  • KEY_CREATE_SUB_KEY + KEY_ENUMERATE_SUB_KEYS + _
  • KEY_NOTIFY + KEY_CREATE_LINK + READ_CONTROL
  • ' Types racines des clés de base de registres...
  • Const HKEY_LOCAL_MACHINE = &H80000002
  • Const ERROR_SUCCESS = 0
  • Const REG_SZ = 1 ' Chaîne terminée par un caractère nul Unicode.
  • Const REG_DWORD = 4 ' Nombre 32 bits.
  • Const gREGKEYSYSINFOLOC = "SOFTWARE\Microsoft\Shared Tools Location"
  • Const gREGVALSYSINFOLOC = "MSINFO"
  • Const gREGKEYSYSINFO = "SOFTWARE\Microsoft\Shared Tools\MSINFO"
  • Const gREGVALSYSINFO = "PATH"
  • Private Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, ByRef phkResult As Long) As Long
  • Private Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByVal lpData As String, ByRef lpcbData As Long) As Long
  • Private Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long
  • Private Sub cmdSysInfo_Click()
  • Call StartSysInfo
  • End Sub
  • Private Sub cmdOK_Click()
  • Unload Me
  • End Sub
  • Private Sub Form_Load()
  • Me.Caption = "À propos de " & App.Title
  • lblVersion.Caption = "Version " & App.Major & "." & App.Minor & "." & App.Revision
  • Presse_Papiers.Caption = App.Title
  • End Sub
  • Public Sub StartSysInfo()
  • On Error GoTo SysInfoErr
  • Dim rc As Long
  • Dim SysInfoPath As String
  • ' Essaie d'obtenir le chemin et le nom du programme Infos système dans la base de registre...
  • If GetKeyValue(HKEY_LOCAL_MACHINE, gREGKEYSYSINFO, gREGVALSYSINFO, SysInfoPath) Then
  • ' Essaie d'obtenir uniquement le chemin du programme Infos système dans la base de registre...
  • ElseIf GetKeyValue(HKEY_LOCAL_MACHINE, gREGKEYSYSINFOLOC, gREGVALSYSINFOLOC, SysInfoPath) Then
  • ' Valide l'existence de la version du fichier 32 bits connu.
  • If (Dir(SysInfoPath & "\MSINFO32.EXE") <> "") Then
  • SysInfoPath = SysInfoPath & "\MSINFO32.EXE"
  • ' Erreur - Impossible de trouver le fichier...
  • Else
  • GoTo SysInfoErr
  • End If
  • ' Erreur - Impossible de trouver l'entrée de la base de registre...
  • Else
  • GoTo SysInfoErr
  • End If
  • Call Shell(SysInfoPath, vbNormalFocus)
  • Exit Sub
  • SysInfoErr:
  • MsgBox "Les informations système ne sont pas disponibles actuellement", vbOKOnly
  • End Sub
  • Public Function GetKeyValue(KeyRoot As Long, KeyName As String, SubKeyRef As String, ByRef KeyVal As String) As Boolean
  • Dim i As Long ' Compteur de boucle.
  • Dim rc As Long ' Code de retour.
  • Dim hKey As Long ' Descripteur d'une clé de base de registres ouverte.
  • Dim hDepth As Long '
  • Dim KeyValType As Long ' Type de données d'une clé de base de registres.
  • Dim tmpVal As String ' Stockage temporaire pour une valeur de clé de base de registres.
  • Dim KeyValSize As Long ' Taille de la variable de la clé de base de registres.
  • '------------------------------------------------------------
  • ' Ouvre la clé de base de registres sous la racine clé {HKEY_LOCAL_MACHINE...}.
  • '------------------------------------------------------------
  • rc = RegOpenKeyEx(KeyRoot, KeyName, 0, KEY_ALL_ACCESS, hKey) ' Ouvre la clé de base de registres.
  • If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError ' Gère l'erreur...
  • tmpVal = String$(1024, 0) ' Alloue de l'espace pour la variable.
  • KeyValSize = 1024 ' Définit la taille de la variable.
  • '------------------------------------------------------------
  • ' Extrait la valeur de la clé de base de registres...
  • '------------------------------------------------------------
  • rc = RegQueryValueEx(hKey, SubKeyRef, 0, _
  • KeyValType, tmpVal, KeyValSize) ' Obtient/Crée la valeur de la clé.
  • If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError ' Gère l'erreur.
  • If (Asc(Mid(tmpVal, KeyValSize, 1)) = 0) Then ' Win95 ajoute une chaîne terminée par un caractère nul...
  • tmpVal = Left(tmpVal, KeyValSize - 1) ' Caractère nul trouvé, extrait de la chaîne.
  • Else ' WinNT ne termine pas la chaîne par un caractère nul...
  • tmpVal = Left(tmpVal, KeyValSize) ' Caractère nul non trouvé, extrait la chaîne uniquement.
  • End If
  • '------------------------------------------------------------
  • ' Détermine le type de valeur de la clé pour la conversion...
  • '------------------------------------------------------------
  • Select Case KeyValType ' Recherche les types de données...
  • Case REG_SZ ' Type de données chaîne de la clé de la base de registres.
  • KeyVal = tmpVal ' Copie la valeur de la chaîne.
  • Case REG_DWORD ' Type de données double mot de la clé de base de registres.
  • For i = Len(tmpVal) To 1 Step -1 ' Convertit chaque bit.
  • KeyVal = KeyVal + Hex(Asc(Mid(tmpVal, i, 1))) ' Construit la valeur caractère par caractère.
  • Next
  • KeyVal = Format$("&h" + KeyVal) ' Convertit le mot double en chaîne.
  • End Select
  • GetKeyValue = True ' Retour avec succès.
  • rc = RegCloseKey(hKey) ' Ferme la clé de base de registres
  • Exit Function ' Quitte.
  • GetKeyError: ' Réinitialise après qu'une erreur s'est produite...
  • KeyVal = "" ' Affecte une chaîne vide à la valeur de retour.
  • GetKeyValue = False ' Retour avec échec.
  • rc = RegCloseKey(hKey) ' Ferme la clé de base de registres.
  • End Function
Private Sub AIDE_Click()
frmAbout.Show
End Sub

Private Sub Coller_Click()
Screen.ActiveControl = Clipboard.GetData()
End Sub

Private Sub Copier_Click()
Clipboard.Clear
Clipboard.SetData Screen.ActiveControl
End Sub

Private Sub Couper_Click()
Clipboard.Clear ' effacer presse papier
Clipboard.SetData Screen.ActiveControl 'contenue oicture vers presse papiers
Screen.ActiveControl = LoadPicture("") ' efface picture box
End Sub

Private Sub effacer_Click()
Screen.ActiveControl = LoadPicture("")
End Sub

Private Sub Picture1_MouseDown(button As Integer, shift As Integer, x As Single, y As Single)
If button = 2 Then
PopupMenu Edition
End If
End Sub

Private Sub Quitter_Click()
End
End Sub





Option Explicit

' Options de sécurité des clés de base de registres...
Const READ_CONTROL = &H20000
Const KEY_QUERY_VALUE = &H1
Const KEY_SET_VALUE = &H2
Const KEY_CREATE_SUB_KEY = &H4
Const KEY_ENUMERATE_SUB_KEYS = &H8
Const KEY_NOTIFY = &H10
Const KEY_CREATE_LINK = &H20
Const KEY_ALL_ACCESS = KEY_QUERY_VALUE + KEY_SET_VALUE + _
                       KEY_CREATE_SUB_KEY + KEY_ENUMERATE_SUB_KEYS + _
                       KEY_NOTIFY + KEY_CREATE_LINK + READ_CONTROL
                     
' Types racines des clés de base de registres...
Const HKEY_LOCAL_MACHINE = &H80000002
Const ERROR_SUCCESS = 0
Const REG_SZ = 1                         ' Chaîne terminée par un caractère nul Unicode.
Const REG_DWORD = 4                      ' Nombre 32 bits.

Const gREGKEYSYSINFOLOC = "SOFTWARE\Microsoft\Shared Tools Location"
Const gREGVALSYSINFOLOC = "MSINFO"
Const gREGKEYSYSINFO = "SOFTWARE\Microsoft\Shared Tools\MSINFO"
Const gREGVALSYSINFO = "PATH"

Private Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, ByRef phkResult As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByVal lpData As String, ByRef lpcbData As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long


Private Sub cmdSysInfo_Click()
  Call StartSysInfo
End Sub

Private Sub cmdOK_Click()
  Unload Me
End Sub

Private Sub Form_Load()
    Me.Caption = "À propos de " & App.Title
    lblVersion.Caption = "Version " & App.Major & "." & App.Minor & "." & App.Revision
    Presse_Papiers.Caption = App.Title
End Sub

Public Sub StartSysInfo()
    On Error GoTo SysInfoErr
  
    Dim rc As Long
    Dim SysInfoPath As String
    
    ' Essaie d'obtenir le chemin et le nom du programme Infos système dans la base de registre...
    If GetKeyValue(HKEY_LOCAL_MACHINE, gREGKEYSYSINFO, gREGVALSYSINFO, SysInfoPath) Then
    ' Essaie d'obtenir uniquement le chemin du programme Infos système dans la base de registre...
    ElseIf GetKeyValue(HKEY_LOCAL_MACHINE, gREGKEYSYSINFOLOC, gREGVALSYSINFOLOC, SysInfoPath) Then
        ' Valide l'existence de la version du fichier 32 bits connu.
        If (Dir(SysInfoPath & "\MSINFO32.EXE") <> "") Then
            SysInfoPath = SysInfoPath & "\MSINFO32.EXE"
            
        ' Erreur - Impossible de trouver le fichier...
        Else
            GoTo SysInfoErr
        End If
    ' Erreur - Impossible de trouver l'entrée de la base de registre...
    Else
        GoTo SysInfoErr
    End If
    
    Call Shell(SysInfoPath, vbNormalFocus)
    
    Exit Sub
SysInfoErr:
    MsgBox "Les informations système ne sont pas disponibles actuellement", vbOKOnly
End Sub

Public Function GetKeyValue(KeyRoot As Long, KeyName As String, SubKeyRef As String, ByRef KeyVal As String) As Boolean
    Dim i As Long                                           ' Compteur de boucle.
    Dim rc As Long                                          ' Code de retour.
    Dim hKey As Long                                        ' Descripteur d'une clé de base de registres ouverte.
    Dim hDepth As Long                                      '
    Dim KeyValType As Long                                  ' Type de données d'une clé de base de registres.
    Dim tmpVal As String                                    ' Stockage temporaire pour une valeur de clé de base de registres.
    Dim KeyValSize As Long                                  ' Taille de la variable de la clé de base de registres.
    '------------------------------------------------------------
    ' Ouvre la clé de base de registres sous la racine clé {HKEY_LOCAL_MACHINE...}.
    '------------------------------------------------------------
    rc = RegOpenKeyEx(KeyRoot, KeyName, 0, KEY_ALL_ACCESS, hKey) ' Ouvre la clé de base de registres.
    
    If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError          ' Gère l'erreur...
    
    tmpVal = String$(1024, 0)                             ' Alloue de l'espace pour la variable.
    KeyValSize = 1024                                       ' Définit la taille de la variable.
    
    '------------------------------------------------------------
    ' Extrait la valeur de la clé de base de registres...
    '------------------------------------------------------------
    rc = RegQueryValueEx(hKey, SubKeyRef, 0, _
                         KeyValType, tmpVal, KeyValSize)    ' Obtient/Crée la valeur de la clé.
                        
    If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError          ' Gère l'erreur.
    
    If (Asc(Mid(tmpVal, KeyValSize, 1)) = 0) Then           ' Win95 ajoute une chaîne terminée par un caractère nul...
        tmpVal = Left(tmpVal, KeyValSize - 1)               ' Caractère nul trouvé, extrait de la chaîne.
    Else                                                    ' WinNT ne termine pas la chaîne par un caractère nul...
        tmpVal = Left(tmpVal, KeyValSize)                   ' Caractère nul non trouvé, extrait la chaîne uniquement.
    End If
    '------------------------------------------------------------
    ' Détermine le type de valeur de la clé pour la conversion...
    '------------------------------------------------------------
    Select Case KeyValType                                  ' Recherche les types de données...
    Case REG_SZ                                             ' Type de données chaîne de la clé de la base de registres.
        KeyVal = tmpVal                                     ' Copie la valeur de la chaîne.
    Case REG_DWORD                                          ' Type de données double mot de la clé de base de registres.
        For i = Len(tmpVal) To 1 Step -1                    ' Convertit chaque bit.
            KeyVal = KeyVal + Hex(Asc(Mid(tmpVal, i, 1)))   ' Construit la valeur caractère par caractère.
        Next
        KeyVal = Format$("&h" + KeyVal)                     ' Convertit le mot double en chaîne.
    End Select
    
    GetKeyValue = True                                      ' Retour avec succès.
    rc = RegCloseKey(hKey)                                  ' Ferme la clé de base de registres
    Exit Function                                           ' Quitte.
    
GetKeyError:      ' Réinitialise après qu'une erreur s'est produite...
    KeyVal = ""                                             ' Affecte une chaîne vide à la valeur de retour.
    GetKeyValue = False                                     ' Retour avec échec.
    rc = RegCloseKey(hKey)                                  ' Ferme la clé de base de registres.
End Function

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de yannouss le 05/04/2004 16:37:55

thx a lot pr ce code !!

signaler à un administrateur
Commentaire de AFPA2003 le 22/04/2004 08:06:16

Bonjour,

Il est extra ton prog.

Pour ma part j'ai tenté en vain de l'adapter à mon besoin.
Enregistrer automatiquement dans un fichier chaque changement dans le presse-papier, avec un début et une fin d'activation, un préfixe du nom de fichier et une incrémentation automatique.
Là où je coince, c'est sur la récupération automatique.
As-tu une suggestion ??

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Le presse papier et Excel --> VBA [ par Patrick ] Je n'arrive pas trouver de fonction ou de propriété en VBA sous Excel avec laquelle je peux automatiquement (sans que l'utilisateur ait besoin de conf VB6 et le presse papier [ par Vstall ] Bonjour à tous,Je butte sur un probleme mineur par ignorance du fonctionnement de Windows : lors d'un copier-coller, Windows stocke les données issues copier dans le presse papier le contenu d'un controle d'une autre applicationn [ par dr.Fou² ] J'voulais savoir s'il y avait un moyen (utilisant les api biensur) de copier par exemple le texte contenu dans une zone de texte appartenante à une au VBA Excel: comment copier des données ds le presse-papier? [ par BOB ] Bonjour,je ne sais pas comment faire pour copier un graphique Excel dans le presse-papier. Je voulais utiliser SetData mais cette méthode n'appartient Problème avec Presse-papier [ par Alain ] Bonjour,Dans une application développée avec Vb5, je récupère le contenu du presse papier copié dans Excel dans une variable "Charge", j'affiche le no Presse-Papier [ par Margoulin ] Bonjour,Je cherche un peu d'aide pour gérer le presse papier.Avec la méthode gettext j'ai rencontre qq probleme.En fait je fait un menu contextuel (ap Mettre du texte dans le presse papier... [ par Pierre ] C'est une question toute simple pour vous mmessieurs ! J'en suis sûr... Mais pour moi c'est déja insurmontable !!Voila je souhaite créer un document w Copier/Coller un fichier binaire d'un ListView vers le presse-papier [ par Schum ] Le titre résume tout...Comment copier un(des) fichier vers le presse-papier, pour pouvoir les coller dans l'explorateur de Windows?????!!!HELP ME URGE Copier Fichier vers Clipboard (presse papier) [ par neosk8 ] Je cherche une facon de modifier le contenue du presse papier en y ajoutant le "path" d'un fichier !Pas seulement un fichier, mais plusieur fichier si presse-papier [ par SHIVA ] COMMENT FAIRE POUR COPIER QUELQUE CHOSE DANS LE PRESSE-PAPIER A PARTIR DE VISUAL BASIC ?


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.