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

Frage Entwicklung Batch & Shell

Suche Funktion "ControlGetFocus"

Mitglied: SaschaRD

SaschaRD (Level 1) - Jetzt verbinden

27.10.2014 um 14:08 Uhr, 1303 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
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 1 TagLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 2 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 2 TagenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 2 TagenSicherheit10 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Batch & Shell
Meltdown Microsoft Prüf Script - .zip Datei leider leer
gelöst Frage von MasterBlaster88Batch & Shell13 Kommentare

Hallo zusammen, ich patche gerade unsere Windows Server bzgl. der Meltdown Lücke. Patch vorhanden, Reg Keys gesetzt Um das ...

Batch & Shell
Shell-Skript - Syntax error: Unterminated quoted string
Frage von newit1Batch & Shell13 Kommentare

Hallo Ich schreibe ein Skript das eine CSV-Datei in eine mySQL Datenbank schieben soll. Bekomme nach start des Skrips ...

E-Mail
Erfahrungen mit hMailServer gesucht
Frage von it-fraggleE-Mail10 Kommentare

Hallo, meine neue Stelle möchte einen eigenen Mailserver. Ich als Linuxkind war direkt geistig mit Postfix dabei. Leider wollen ...

Entwicklung
VBS: alle PDF-Dateien in einem Ordner gleichzeitig öffnen
gelöst Frage von JuweeeEntwicklung9 Kommentare

Hallo, ich habe in deiner Ordnerstruktur (.\Tagesberichte\xx.18\) mehrere dynamische PDF-Formulare (mit LCD erstellt). Die Berichtsformulare sind im Layout alle ...