Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst VB.Net Systemweit aktuelles Steuerelement wie TextBox abfragen

Mitglied: Aicher1998

Aicher1998 (Level 1) - Jetzt verbinden

03.04.2014, aktualisiert 05.04.2014, 2062 Aufrufe, 12 Kommentare, 1 Danke

Hallo

ich müsste in VB wissen, welches das aktuell focusierte Steuerelement ist und müsste dann deren Eigenschaften lesen bzw. schreiben können.
Wie mach ich das?

Auf eure Antworten würd ich mich freuen.

Aicher
Mitglied: colinardo
LÖSUNG 03.04.2014, aktualisiert 05.04.2014
Hallo Aicher,
kannst du folgendermaßen machen:
Für den Beispiel-Code erstellst du dir eine Form, dann fügst du noch einen Label mit dem Namen lblHwnd und einen Timer mit dem Namen Timer1 hinzu. Der Form sollte das Attribut TopMost gegeben werden damit du das Fenster immer sehen kannst. Dann startest du das Programm und setzt den Focus der Maus auf ein Textfeld in einer anderen Applikation - der Label sollte nun den Text des aktuell im Fokus liegenden Controls haben.
(Wenn du das Visual Studio Projekt-File brauchst sag bescheid.)
01.
Imports System.Runtime.InteropServices 
02.
Imports System.Text 
03.
Public Class Form1 
04.
    <DllImport("user32.dll")> _ 
05.
    Public Shared Function GetForegroundWindow() As IntPtr 
06.
    End Function 
07.
    <DllImport("user32.dll")> _ 
08.
    Public Shared Function GetWindowThreadProcessId(hWnd As IntPtr, ProcessId As IntPtr) As IntPtr 
09.
    End Function 
10.
    <DllImport("user32.dll")> _ 
11.
    Public Shared Sub AttachThreadInput(idAttach As IntPtr, idAttachTo As IntPtr, fAttach As Boolean) 
12.
    End Sub 
13.
    <DllImport("user32.dll")> _ 
14.
    Public Shared Function GetFocus() As IntPtr 
15.
    End Function 
16.
    <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _ 
17.
    Public Shared Function GetWindowText(ByVal hwnd As IntPtr, ByVal lpString As StringBuilder, ByVal cch As Integer) As Integer 
18.
    End Function 
19.
    <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _ 
20.
    Public Shared Function GetWindowTextLength(ByVal hwnd As IntPtr) As Integer 
21.
    End Function 
22.
    <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _ 
23.
    Public Shared Function SendMessage(hWnd As IntPtr, Msg As UInt32, wParam As IntPtr, lParam As StringBuilder) As IntPtr 
24.
    End Function 
25.
 
26.
    Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick 
27.
        lblHwnd.Text = GetTextRaw(ControlInFocusedWindow()) 
28.
    End Sub 
29.
 
30.
    Private Function ControlInFocusedWindow() As IntPtr 
31.
        Dim activeWindowHandle As IntPtr = GetForegroundWindow() 
32.
        Dim activeWindowThread As IntPtr = GetWindowThreadProcessId(activeWindowHandle, IntPtr.Zero) 
33.
        Dim thisWindowThread As IntPtr = GetWindowThreadProcessId(Me.Handle, IntPtr.Zero) 
34.
        AttachThreadInput(activeWindowThread, thisWindowThread, True) 
35.
        Dim focusedControlHandle As IntPtr = GetFocus() 
36.
        AttachThreadInput(activeWindowThread, thisWindowThread, False) 
37.
        Return focusedControlHandle 
38.
    End Function 
39.
 
40.
    Public Function GetTextRaw(hWnd As IntPtr) As String 
41.
        Const WM_GETTEXTLENGTH = &HE 
42.
        Const WM_GETTEXT = &HD 
43.
        Dim length As Integer = SendMessage(hWnd, WM_GETTEXTLENGTH, IntPtr.Zero, New StringBuilder) 
44.
        Dim sb As StringBuilder = New StringBuilder(length + 1) 
45.
        SendMessage(hWnd, WM_GETTEXT, sb.Capacity, sb) 
46.
        Return sb.ToString() 
47.
    End Function 
48.
 
49.
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 
50.
        Timer1.Start() 
51.
    End Sub 
52.
End Class
Viel Erfolg

Grüße Uwe
Bitte warten ..
Mitglied: Aicher1998
03.04.2014 um 13:26 Uhr
Danke, muss ich nachher testen.
Könnte es sein, dass das Programm von Virenscannern als potenziell gefährlich eingestuft werden kann?
Hast du das ergoogelt oder selber zusammengeschrieben?

Aicher
Bitte warten ..
Mitglied: Aicher1998
03.04.2014, aktualisiert um 13:29 Uhr
Zitat von colinardo:
Public Shared Function GetFocus() As IntPtr
End Function
Wieso ist da nix drin?

Gruß Aicher
Bitte warten ..
Mitglied: colinardo
03.04.2014, aktualisiert um 13:30 Uhr
Zitat von Aicher1998:
Danke, muss ich nachher testen.
Könnte es sein, dass das Programm von Virenscannern als potenziell gefährlich eingestuft werden kann?
hä ? nein...
Hast du das ergoogelt oder selber zusammengeschrieben?
das mach ich schon selber ...
Bitte warten ..
Mitglied: colinardo
03.04.2014, aktualisiert um 13:32 Uhr
Zitat von Aicher1998:
Wieso ist da nix drin?
das ist ja auch ein Windows API-Call in user32.dll ...
http://msdn.microsoft.com/en-us/library/windows/desktop/ms646294%28v=vs ...
Bitte warten ..
Mitglied: Aicher1998
03.04.2014, aktualisiert um 13:32 Uhr
Zitat von colinardo:

> Zitat von Aicher1998:
> Wieso ist da nix drin?
das ist ja auch ein API-Call in user32.dll ...

Häh aber da steht ja kein Code drin?
Bitte warten ..
Mitglied: colinardo
03.04.2014, aktualisiert um 13:35 Uhr
Zitat von Aicher1998:
Häh aber da steht ja kein Code drin?
nochmal ....http://msdn.microsoft.com/en-us/library/windows/desktop/ms646294%28v=vs ...

Wieso steht da wohl das davor hmmm?:
<DllImport("user32.dll")> _ 
Bitte warten ..
Mitglied: Aicher1998
03.04.2014 um 13:36 Uhr
Zitat von colinardo:
das mach ich schon selber ...

Alles selber geschrieben? Krass, wenn ich mich so gut auskennen würde... Naja ich hab da meine snippets und setzt mir dann was zusammen
Bitte warten ..
Mitglied: Aicher1998
03.04.2014 um 14:00 Uhr
Zitat von colinardo:

> Zitat von Aicher1998:
> Häh aber da steht ja kein Code drin?
nochmal ....http://msdn.microsoft.com/en-us/library/windows/desktop/ms646294%28v=vs ...

Wieso steht da wohl das davor hmmm?:
> <DllImport("user32.dll")> _  
> 
Ja das hab ich ned gemerkt
Bitte warten ..
Mitglied: Aicher1998
04.04.2014 um 17:36 Uhr
Gibts auch ne Möglichkeit das in live anzuzeigen und nicht erst wenn man klickt? Und das man erhält, was man gerade für ein Steuerelement vor sich hat?
Bitte warten ..
Mitglied: colinardo
04.04.2014, aktualisiert 05.04.2014
Zitat von Aicher1998:

Gibts auch ne Möglichkeit das in live anzuzeigen und nicht erst wenn man klickt? Und das man erhält, was man gerade
für ein Steuerelement vor sich hat?
dann ist das vielleicht was für dich:
http://msdn.microsoft.com/en-us/magazine/cc163617.aspx
Bitte warten ..
Mitglied: Aicher1998
05.04.2014 um 09:21 Uhr
Zitat von colinardo:

> Zitat von Aicher1998:
>
> Gibts auch ne Möglichkeit das in live anzuzeigen und nicht erst wenn man klickt? Und das man erhält, was man
gerade
> für ein Steuerelement vor sich hat?
dann ist vielleicht was für dich:
http://msdn.microsoft.com/en-us/magazine/cc163617.aspx

Is zu hoch für mich, aber danke
Bitte warten ..
Ähnliche Inhalte
VB for Applications

VB.NET - Variable aus Textbox in Progressbar ausgeben

gelöst Frage von TermimanVB for Applications2 Kommentare

Hallo liebe Programmier, mich plagt seit gestern ein kleines Problem : Ich habe mir eine kleine Prozedur geschrieben mit ...

Visual Studio

Srv records aus dem dns abfragen unter vb.net

Frage von Herbrich19Visual Studio14 Kommentare

Hallo, Ich würde gerne unter vb.net srv dns einträge für mein eigenes Netzwerk Protokoll abfragen. Ich bin gerade dabei ...

Visual Studio

Abfrage ob Word-Dokument passwortgeschützt ist (vb.net, VB2010Express)

gelöst Frage von ahstaxVisual Studio3 Kommentare

Hallo, gibt es in vb.net eine Möglichkeit zu prüfen, ob ein zu öffnendes Word-Dokument passwortgeschützt ist? Neugierige Grüße, Andreas

Visual Studio

VB.Net - DirectoryEntry - Unterschiede bei Abfragen über objectGUID und distinguishedName

gelöst Frage von emeriksVisual Studio8 Kommentare

Hi, wenn ich zwei System.DirectoryServices.DirectoryEntries für ein und das selbe Benutzerobjekt einmal über die objectGUID und einmal über einmal ...

Neue Wissensbeiträge
Sicherheit
Sicherheitsrisiko: Die Krux mit 7-Zip
Information von kgborn vor 9 StundenSicherheit

Bei vielen Anwendern ist das Tool 7-Zip zum Entpacken von Archivdateien im Einsatz. Die Software ist kostenlos und steht ...

Internet

Datendealing im WWW Tracking Methoden immer brutaler

Information von sabines vor 18 StundenInternet

Interessanter Artikel zum Thema Tracking im WWW und die immer "besseren" Methoden des Trackings. Professor Arvind Narayanan (Princeton-Universität) betreibt ...

Erkennung und -Abwehr

Ups: Einfaches Nullzeichen hebelte den Anti-Malware-Schutzt in Windows 10 aus

Information von kgborn vor 1 TagErkennung und -Abwehr

Windows 10 ist das sicherste Windows aller Zeiten, wie Microsoft betont. Insidern ist aber klar, das es da Lücken, ...

Windows 10

Windows 10 on ARM: von Microsoft entfernte Info - Klartext, was nicht geht

Information von kgborn vor 1 TagWindows 10

Windows 10 on ARM ist ja eine neue Variante, die Microsoft im Verbund mit Geräteherstellern am Markt etablieren will. ...

Heiß diskutierte Inhalte
Server
Route-Befehl Unterstützung (unter CMD)
gelöst Frage von FKRR56Server36 Kommentare

Guten Tag , i.M. habe ich Probleme über den CMD-Route-Befehl ein Routing auf einen entfernten Server zuzulassen. Der Server ...

Windows 10
Windows 10 (1709) Tastur und Maus wieder einschalten?
Frage von LochkartenstanzerWindows 1028 Kommentare

Moin, Ich habe von einem Kunden einen Win10-Rechner bekommen, bei dem weder Tastatur noch Maus geht. Die Hardware funktioniert ...

Microsoft
TV-Tipp: Das Microsoft-Dilemma
Information von kgbornMicrosoft17 Kommentare

Aktuell gibt es in Behörden und in Firmen eine fatale Abhängigkeit von Microsoft und dessen Produkten. Planlos agieren die ...

Webbrowser
Welcher Browser ist der Beste?
Frage von justtinWebbrowser15 Kommentare

Hallo Leute Ich habe eine interessante Frage. Mich wurde mal interessieren welcher Browser ist eure meinung nach der beste? ...