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

Suche Funktion "ControlGetFocus"

Mitglied: SaschaRD

SaschaRD (Level 1) - Jetzt verbinden

27.10.2014 um 14:08 Uhr, 1325 Aufrufe, 3 Kommentare

Hallo zusammen,

ich bin auf der Suche nach der Funktion "ControlGetFocus", welche aus AutoIT stammt, für powershell.

Derzeit mache ich eine Abfrage, ob das gewünschte Programm überhaupt aktiv ist:
01.
IF (!$syncHash.Cancel){ 
02.
$FindProg = Get-Process | Where-Object {$_.Name -eq 'notepad++'} 
03.
[Microsoft.VisualBasic.Interaction]::AppActivate($FindProg.ID)						 
04.
IF (!$?){ 
05.
[System.Windows.Forms.MessageBox]::Show('Programm nicht gefunden', 'Abbruch', 0) 
06.
$syncHash.Cancel = $true
Kann jedoch an Notepad keine Befehle senden, wenn es nicht aktiv ist.

Jemand eine Idee? (Uwe bestimmt =))

Gruß, Sascha
Mitglied: colinardo
27.10.2014, aktualisiert um 14:34 Uhr
Hallo Sascha,
für solche Sachen gibt es eine PS-Bibliothek die solche Aufgaben wesentlich erleichtert, wenn du nicht mit den Win32-API Funktionen rum hantieren willst:
http://uiautomation.codeplex.com/

Beispiele wie du damit umgehst findest du hier

Grüße Uwe
Bitte warten ..
Mitglied: SaschaRD
27.10.2014 um 15:00 Uhr
Hallo Uwe,

Danke für deinen Input.

Hatte es bereits mit Bibliothek von UIAutomation versucht, hatte jedoch dasselbe Ergebnis. Sobald ich woanders hingeklickt habe und der Fokus nicht mehr im Notepad war, wurde die durchgeführte Aktion / das durchgeführte Event im derzeit aktiven Fenster ausgeführt.

Bisher habe ich es nur mit AutoIT geschafft, einen Fokus auf ein gewünschtes Fenster zu legen:
01.
$Notepad = WinWaitActive("[CLASS:Notepad++]") 
02.
$NotepadFocus = ControlGetFocus($Notepad) 
03.
 
04.
While 1 
05.
ControlSend($Notepad, Default, $NotepadFocus,"Test ") 
06.
Sleep (2000) 
07.
WEnd
Mein Beispiel mit einer (sinnlosen) Endlos-Schleife.

Gruß, Sascha
Bitte warten ..
Mitglied: colinardo
27.10.2014, aktualisiert um 16:10 Uhr
Zitat von SaschaRD:
Hatte es bereits mit Bibliothek von UIAutomation versucht, hatte jedoch dasselbe Ergebnis. Sobald ich woanders hingeklickt habe und der Fokus nicht mehr im Notepad war, wurde die durchgeführte Aktion / das durchgeführte Event im derzeit aktiven Fenster ausgeführt.
dann hast du die Bibliothek nicht richtig verwendet, das geht mit der Bibliothek auch ohne das das Fenster im Vordergrund sein muss !

Alternativ schick es über die Win32 Funktionen direkt an das Control, dann ist es auch egal ob das Fenster den Fokus hat oder nicht .

Hier ein Beispiel das einen Text an ein parallel geöffnetes Notepad-Fenster schickt, egal ob es den Fokus hat oder nicht...
01.
function init() { 
02.
    [String]$SourceCode = @" 
03.
Imports System 
04.
Imports System.String 
05.
Namespace colinardo     
06.
    Public Class MyFunctions 
07.
        Private Declare Auto Function FindWindowEx Lib "user32.dll" (ByVal hwndParent As IntPtr,ByVal hwndChildAfter As IntPtr, ByVal lpszClass As String, ByVal lpszWindow As String) As IntPtr 
08.
        Private Declare Auto Function SendMessage Lib "user32.dll" (hWnd As IntPtr, Msg As UInt32, wParam As IntPtr, lParam As System.Text.StringBuilder) As IntPtr 
09.
         
10.
        Public Shared Function SetTextInControl(wHandle as System.IntPtr,control as String, strText as String) as boolean 
11.
            Dim sb As New System.Text.StringBuilder(strText) 
12.
            Dim controlHwnd As IntPtr = FindWindowEx(wHandle, System.IntPtr.Zero, control, Nothing) 
13.
            if not controlHwnd = System.IntPtr.Zero then 
14.
                SendMessage(controlHwnd, &HC, sb.Length, sb) 
15.
                return true 
16.
            end if 
17.
            return false 
18.
        End Function 
19.
         
20.
    End Class 
21.
End Namespace 
22.
"@ 
23.
 add-type -TypeDefinition $SourceCode -Language VisualBasic 
24.
25.
init 
26.
 
27.
$notepadHandle = (Get-Process -Name "notepad" -ErrorAction SilentlyContinue | select -First 1).MainWindowHandle 
28.
if ($notepadHandle){ 
29.
    [colinardo.MyFunctions]::SetTextInControl($notepadHandle,"Edit","Das ist ein Test") 
30.
}else{ 
31.
    write-host "Kein Notepad-Fenster gefunden, bitte erst eins öffnen..." -ForegroundColor Red 
32.
}
In das Thema musst du dich leider erst intensiver einlesen, AutoIT macht auch nichts anderes als diese Win32-Funktionen zu verwenden, um Nachrichten an Fenster und Controls zu schicken .

Grüße Uwe
Bitte warten ..
Ähnliche Inhalte
Router & Routing
Suche Router mit speziellen Funktionen
Frage von icepietRouter & Routing3 Kommentare

Hallo Zusammen, Ich bin auf der Suche nach einem neuen Router für Zuhause. Ich habe einen Unitymedia Anschluss mit ...

Exchange Server
Such-Funktion Exchange Server 2010
Frage von StemmlerExchange Server2 Kommentare

Hallo, bin neu hier und habe folgendes Problem. Einer unsere Kunden hat sich mitte April seine Exchange Datenbank zerschoßen. ...

Outlook & Mail

Verfeinerte Suche ist ausgegraut, die Funktionen sind dennoch verfügbar

Frage von fraggle666Outlook & Mail

Hallo zusammen, ich hänge momentan an einem mir unerklärlichen Problem. Innerhalb von Outlook 2010 (Exchange Postfach) sind die Buttons ...

Windows 10

Windows 10 Startmenü, Suche, Infocenter ohne Funktion

Frage von achkleinWindows 103 Kommentare

Hallo, ich habe mir einen gebrauchten PC gekauft, eine SSD eingebaut und Windows 10 64 Bit 1703 installiert. Dann ...

Neue Wissensbeiträge
Sicherheit

MikroTik-Router patchen, Schwachstelle wird ausgenutzt

Information von kgborn vor 1 StundeSicherheit

Am 23. April 2018 wurde von Mikrotik ein Security Advisory herausgegeben, welches auf eine Schwachstelle im RouterOS hinwies. Mikrotik ...

Windows 10

Microcode-Updates KB4090007, KB4091663, KB4091664, KB4091666 für Windows 10

Information von kgborn vor 7 StundenWindows 101 Kommentar

Kurze Information für Administratoren von Windows 10-Systemen, die mit neueren Intel CPUs laufen. Microsoft hat zum 23. April 2018 ...

iOS
Updates für Iphone und Co
Information von sabines vor 11 StundeniOS

Gestern abend ist iOS 11.3.1 erschienen, ein kleineres Update, dass einige Lücken schließt und "Lahmlegen" nach einem Display Tausch ...

Windows 7

Windows 7 - Server 2008 R2: Exploit für Total Meltdown verfügbar

Information von kgborn vor 1 TagWindows 7

Kleine Information für Administratoren, die für die Updates von Windows 7 SP1 und Windows Server 2008 R2 SP1 verantwortlich ...

Heiß diskutierte Inhalte
Batch & Shell
Powershell: Im AD nach Rechnern mit bestimmten IP-Adressen suchen
gelöst Frage von Raven42Batch & Shell36 Kommentare

Hallo zusammen, ich suche nach einer Möglichkeit nach Computern im AD zu suchen , deren IP-Adresse mit 10.11.12. beginnt. ...

C und C++
Frage1 C Programmierung-Makefile Frage2 PHP-Programmierung HTTP-Fehler 404
Frage von KatalinaC und C++34 Kommentare

Hallo, ich habe 2 Fragen, die nichts miteinander zu tun haben aber mit denen ich mich gerade beschäftige: 1. ...

LAN, WAN, Wireless
Watchguard T15 VPN Einrichtung
gelöst Frage von thomasjayLAN, WAN, Wireless25 Kommentare

Hallo zusammen, wir möchten gerne über unsere Watchguard T15 einen VPN-Tunnel (Mobile VPN with IPSec) einrichten! Als Client nutzen ...

Windows Server
Alten DC entfernen
Frage von smartinoWindows Server23 Kommentare

Hallo zusammen, ich habe hier eine Umgebung übernommen und erstmal einen DCDIAG gemacht. Dabei fällt auf, daß eine ganze ...