vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 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
Text unter der Maus auslesen: Controls in Fremd-Anwendungen 
Autor: Manfred X
Datum: 21.04.16 06:27

Hallo!

Wie so etwas funktioniert, steht z.B. in den VBARCHIV-Tipps.
Dieser VB6-Code muß geringfügig für VB.Net angepaßt werden
(näheres zu API-Deklarationen: www.pinvoke.net).
Vielleicht so ....
Imports System.Runtime.InteropServices
 
Public Class frmMausText
 
    Dim lblWindowText As New Label _
        With {.Parent = Me, .Width = 512}
 
    Dim WithEvents tim As New Timer _
        With {.Interval = 300}
 
 
    <DllImport("user32.dll", ExactSpelling:=True, SetLastError:=True)> _
    Public Shared Function GetCursorPos(ByRef lpPoint As POINTAPI) As _
    <MarshalAs(UnmanagedType.Bool)> Boolean
    End Function
 
 
    <StructLayout(Runtime.InteropServices.LayoutKind.Sequential)> _
    Public Structure POINTAPI
        Public X As Integer
        Public Y As Integer
 
        Public Sub New(ByVal X As Integer, ByVal Y As Integer)
            Me.X = X
            Me.Y = Y
        End Sub
    End Structure
 
 
    <DllImport("user32.dll")> _
    Public Shared Function WindowFromPoint( _
      ByVal xPoint As Integer, _
      ByVal yPoint As Integer) As System.IntPtr
    End Function
 
 
    <DllImport("user32.dll", EntryPoint:="SendMessage")> _
    Public Shared Function SendMessage(hWnd As IntPtr, _
               Msg As UInt32, wParam As Integer, _
               <Out()> lParam As System.Text.StringBuilder) As Integer
    End Function
 
 
    Private Const WM_GETTEXT As UInt32 = &HD
 
 
    Private Sub frmMausText_Load(sender As System.Object, _
                    e As System.EventArgs) Handles MyBase.Load
        Me.Width = 520
        tim.Enabled = True
    End Sub
 
 
    Private Sub tim_Timer() Handles tim.Tick
        Dim oPoint As POINTAPI
        Dim hWnd As System.IntPtr
        Dim TextLength As Integer
        Dim sWindowText As New System.Text.StringBuilder(512)
 
        lblWindowText.Text = String.Empty
 
        ' Mausposition ermitteln
        If GetCursorPos(oPoint) Then
 
            ' Fensterhandle des Controls 
            ' über dem sich der Mauszeiger befindet
            hWnd = WindowFromPoint(oPoint.X, oPoint.Y)
 
            If Not hWnd = IntPtr.Zero Then
                ' Fenstertext des Controls ermitteln
                TextLength = SendMessage(hWnd, WM_GETTEXT, 512, sWindowText)
 
                If TextLength > 0 Then
                    ' Control-Text in das Label schreiben
                    ' falls kein aktives Control --> 
                    ' Fenstertext wird geliefert
                    lblWindowText.Text = sWindowText.ToString
                End If
            End If
        End If
    End Sub
End Class
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Text unter Mouse Cursor von anderen Anwendung auslesen?2.235hasexxl198821.04.16 01:58
Text unter der Maus auslesen: Controls in Fremd-Anwendungen1.516Manfred X21.04.16 06:27
Re: Text unter Mouse Cursor von anderen Anwendung auslesen?1.540GPM21.04.16 11:25

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