vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Alle Klassennamen gleich - SendMessage? 
Autor: mm78pr
Datum: 09.12.06 23:22

Hier mal ein sehr einfaches Beispiel

Erstelle ein neues Projekt und füge diesen Code ein , packe einen Button und eine ListBox auf die Form , in den Debug Ordner kopiere die Datei dshandle.dll

Dann starte den Windows Taschenrechner mit Wissenschaftlicher Ansicht

Wenn du nun dein Programm ausführst und auf den Button klickst sollten in der Listbox alle Buttons des Rechners aufgelistet werden samt Handle und Text

Public Class Form1
 
    Private Declare Function GetHandle Lib "dshandle" (ByVal Class1 As String, _
      ByVal Class2 As String, _
                ByVal Text1 As String, ByVal Text2 As String, Optional ByVal _
                Prop As Integer = 0, _
                Optional ByVal MatchClass As Integer = 0, Optional ByVal _
                MatchText As Integer = 0, _
                Optional ByVal hParent As Integer = 0, Optional ByVal _
                OnlyChildren As Integer = 0, _
                Optional ByVal IsChild As Integer = 0, Optional ByVal IsVisible _
                As Integer = 0, _
                Optional ByVal IsEnabled As Integer = 0, Optional ByVal Number _
                As Integer = 0, _
                Optional ByVal ThreadID As Integer = 0, Optional ByVal NotThrd _
                As Integer = 0, _
                Optional ByVal ProcID As Integer = 0, Optional ByVal NotProc As _
                Integer = 0) As Integer
 
    Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _
                                        (ByVal parentHandle As IntPtr, _
                                         ByVal childAfter As IntPtr, _
                                         ByVal lclassName As String, _
                                         ByVal windowTitle As String) As IntPtr
 
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
                                        (ByVal hwnd As Integer, _
                                         ByVal wMsg As Integer, _
                                         ByVal wParam As Integer, _
                                         ByVal lParam As Integer) As Integer
 
    Private Declare Function SendMessageBystring Lib "user32" Alias _
      "SendMessageA" ( _
                                            ByVal hwnd As Integer, _
                                            ByVal wMsg As Integer, _
                                            ByVal wParam As Integer, _
                                            ByVal lParam As String) As Integer
 
    Private Const WM_GETTEXT As Integer = &HD
    Private Const WM_GETTEXTLENGTH As Integer = &HE
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Button1.Click
 
        Dim hwnd_calc As Integer = FindWindowEx(0, 0, "scicalc", vbNullString)
 
        If hwnd_calc > 0 Then
 
            For index As Int16 = 1 To 70
 
                Dim hwnd_button As Integer = 0
                hwnd_button = GetHandle("button", "", "*", "*", 0, 1, 1, _
                  hwnd_calc, 0, 0, 0, 0, index)
 
                Dim txtlen As Integer = 0
                txtlen = SendMessage(hwnd_button, WM_GETTEXTLENGTH, 0, 0) + 1
 
                Dim buttontext As String = ""
                buttontext = Space(txtlen)
 
                SendMessageBystring(hwnd_button, WM_GETTEXT, txtlen, buttontext)
 
                ListBox1.Items.Add("Button No. " + index.ToString + " Handle :" & _
                  "" + hwnd_button.ToString + " Text : " + buttontext)
 
            Next
 
        End If
 
    End Sub
 
End Class
Die Parameter der Funktion GetHandle sind nicht so leicht zu verstehn, da hilft am besten einfach selber ausprobieren.

Auf die selbe Weise kannst du auch Textboxen auslesen oder Text einsetzen oder auch fremde Buttons drücken oder deren Status abfragen usw

Gruss mm78pr

http://msdn.microsoft.com/de-de/default.aspx

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Alle Klassennamen gleich - SendMessage?1.210MacPri03.12.06 15:02
Re: Alle Klassennamen gleich - SendMessage?742Moderatorralf_oop03.12.06 22:16
Re: Alle Klassennamen gleich - SendMessage?794mm78pr03.12.06 22:33
Re: Alle Klassennamen gleich - SendMessage?713MacPri09.12.06 17:32
Re: Alle Klassennamen gleich - SendMessage?904mm78pr09.12.06 18:51
Re: Alle Klassennamen gleich - SendMessage?773MacPri09.12.06 20:04
Re: Alle Klassennamen gleich - SendMessage?840mm78pr09.12.06 23:22

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel