Ik ben bezig met een kleine test applicatie aan het maken. Deze applicatie moet dmv van een hotkey het clipboard naar het de desktop applicatie dumpen. De hotkey trigger werkt zonder problemen en de correcte handle ophalen van de desktop applicatie ook.
Alleen het copieren van het clipboard naar de applicatie werkt niet.
Ik heb dus de volgende minimale code geschreven om te testen, maar ik kom er niet uit
WM_PASTE op MSDN
Ik krijg de inhoud van de title van Notepad correct terug. Aangezien ik die kan zien in de variable lpText. Dus hwnd heeft de correcte handle. Maar ik krijg het niet voor elkaar om de clipboard te kopieren naar Notepad.
De foutmelding die ik te zien krijg is
Iemand een idee wat ik fout doe?
Alleen het copieren van het clipboard naar de applicatie werkt niet.
Ik heb dus de volgende minimale code geschreven om te testen, maar ik kom er niet uit
Visual Basic:
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
| Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim hwnd As IntPtr = FindWindow("Notepad", vbNullString) Dim lpText As String lpText = New String(Chr(0), 100) If hwnd.Equals(IntPtr.Zero) Then System.Console.WriteLine("Zero: ") Dim intLength As Integer = GetWindowText(hwnd, lpText, _ lpText.Length) SendMessage(hwnd, WM_PASTE, 0, 0) ' ' Genereert foutmelding in System.Runtime.InteropServices.Marshal.GetLastWin32Error() ' displayError("button2") ' Laat een foutmelding zien System.Console.WriteLine("lptext: " + lpText.ToString) ' Werkt correct End Sub Public Declare Auto Function SendMessage Lib "user32" (ByVal HWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As Long Public Const WM_PASTE As Integer = &H302 Private Sub displayError(ByVal loc As String) Dim errorCode As Integer errorCode = System.Runtime.InteropServices.Marshal.GetLastWin32Error() If errorCode <> 0 Then Dim ex As System.ComponentModel.Win32Exception ex = New System.ComponentModel.Win32Exception(errorCode) System.Console.WriteLine( _ String.Format("Error: {0} - {1} - {2}", errorCode, ex.Message, loc)) End If End Sub |
WM_PASTE op MSDN
Ik krijg de inhoud van de title van Notepad correct terug. Aangezien ik die kan zien in de variable lpText. Dus hwnd heeft de correcte handle. Maar ik krijg het niet voor elkaar om de clipboard te kopieren naar Notepad.
De foutmelding die ik te zien krijg is
code:
1
| Error: 127 - The specified procedure could not be found - button2 |
Iemand een idee wat ik fout doe?
Programmer - an organism that turns coffee into software.