Bonjour,

Je cherche à faire un programme qui va gérer le presse papier de Windows.

Pour cela j'ai trouvé un bout de code qui permet de récupérer le texte lorsqu'il y a un changement dans le presse papier.
Mais pour la suite, j'ai un problème...

Je précise que je ne connait pas très bien le VB.NET, je début quoi, donc j'ai pas forcément bien compris le code que j'ai copié.
Le code a un comportement étrange, il ne passe pas par ces deux lignes, qui sont dans la fonction WndProc.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
SauvegardePressePapier(0, 0) = Clipboard.GetText()
MsgBox(SauvegardePressePapier(0, 0))
Pouvez-vous me dire pourquoi ? Et comment je peux résoudre ce problème ?

Voici le code en entier :

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
Imports System.Runtime.InteropServices
Public Class Form1
    Private SauvegardeListBox(,) As String
    Private Const WM_DRAWCLIPBOARD As Integer = 776
    Private Const WM_CHANGECBCHAIN As Integer = 781
    Private fpChainedWindowHandle As IntPtr
 
    Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged
        Me.ListBox2.SelectedIndex = Me.ListBox1.SelectedIndex
    End Sub
 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        fpChainedWindowHandle = SetClipboardViewer(Me.Handle)
    End Sub
    <DllImport("User32.dll")>
    Public Shared Function SetClipboardViewer(ByVal hWndNewViewer As IntPtr) As IntPtr
    End Function
    <DllImport("User32.dll")>
    Public Shared Function SendMessage(ByVal Handle As IntPtr,
                                 ByVal msg As Integer,
                                 ByVal wParam As IntPtr,
                                 ByVal lParam As IntPtr) As IntPtr
    End Function
 
    Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
        MyBase.WndProc(m)
        If m.Msg = WM_DRAWCLIPBOARD Then
            If My.Computer.Clipboard.ContainsText = True Then
                Me.ListBox1.Items.Add(Clipboard.GetText())
                SauvegardeListBox(0, 0) = Clipboard.GetText()
                MsgBox(SauvegardeListBox(0, 0))
            End If
            SendMessage(fpChainedWindowHandle, m.Msg, m.LParam, m.WParam)
        End If
    End Sub
End Class
Merci pour votre aide !