Gjakmarrja Skrevet 16. april 2006 Del Skrevet 16. april 2006 Jeg fant denne guiden men den er for 6.0. Noen som vet hvordan jeg kan få dette til å funke i vb.net 2005 har problemer med adressof.. ? Lenke til kommentar
wolf5 Skrevet 17. april 2006 Del Skrevet 17. april 2006 'EnumWindows funksjonen Private Declare Auto Function EnumWindows Lib "user32" (ByVal myproc As EnumWindowProc, ByVal lParam As Integer) As Integer 'Delegat for å kunne sende med referanse til callback funksjon Private Delegate Function EnumWindowProc(ByVal Hwnd As IntPtr, ByVal lParam As Integer) As Integer Public Sub Main() EnumWindows(AddressOf MyWindowProcCallbackHandler, 0) End Sub Private Function MyWindowProcCallbackHandler(ByVal Hwnd As IntPtr, ByVal lParam As Integer) As Integer System.Diagnostics.Debug.WriteLine("Vindu: " & Hwnd.ToString()) Return 1 End Function Lenke til kommentar
Gjakmarrja Skrevet 17. april 2006 Forfatter Del Skrevet 17. april 2006 (endret) Tusen takk... dette funket perfekt. Du vet vel ikke hvordan jeg kan anvende den over til å benytte denne funksjonen: Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" _ (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long Windows API er vanskelig, hjelp. Endret 18. april 2006 av chills Lenke til kommentar
wolf5 Skrevet 18. april 2006 Del Skrevet 18. april 2006 Noe i denne duren Private Declare Auto Function GetWindowTextA Lib "user32" (ByVal hwnd As IntPtr, ByVal lParam As System.Text.StringBuilder, ByVal stringlen As Integer) As Integer Dim Buffer As System.Text.StringBuilder = New System.Text.StringBuilder(256, 256) GetWindowTextA(Hwnd, Buffer, Buffer.Capacity) System.Diagnostics.Debug.WriteLine("VinduNavn: " & Buffer.ToString()) Testet det kjapt selv men får bare ut noen kinesiske tegn. Mener tilsvarende kode for c# fungerer. Konverterte nemlig fra tidligere kode jeg har i c#. Lenke til kommentar
Gjakmarrja Skrevet 18. april 2006 Forfatter Del Skrevet 18. april 2006 (endret) Når jeg kjører denne biten får jeg opp en feilmelding. GetWindowTextA(Hwnd, Buffer, Buffer.Capacity) Feilmeldingen: A call to PInvoke function 'Vinduer!Vinduer.Form1::GetWindowText' has unbalanced the stack. This is likely because the managed PInvoke signature does not match the unmanaged target signature. Check that the calling convention and parameters of the PInvoke signature match the target unmanaged signature. Endret 18. april 2006 av chills Lenke til kommentar
wolf5 Skrevet 18. april 2006 Del Skrevet 18. april 2006 (endret) Kjørte hos meg, men jeg tror ikke den helt virker som den skal. Mulig noen andre ser en brist i koden der? Tilsvarende kode i C# virker: [DllImport("user32")] private static extern int GetWindowTextA(int hwnd, StringBuilder lpString, int stringlen); [DllImport("user32")] private static extern int EnumWindows(EnumWindowProc myproc, int lParam); private delegate int EnumWindowProc(int hwnd, int lParam); /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { EnumWindows(new EnumWindowProc(EnumProcWinsCaption), 0); } private static int EnumProcWinsCaption(int hwnd, int lParam) { StringBuilder buffer = new StringBuilder(256, 256); GetWindowTextA(hwnd, buffer, buffer.Capacity); Debug.WriteLine(buffer.ToString()); return 1; } Endret 18. april 2006 av wolf5 Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå