Hallo Forum!
Erstmal muss ich sagen, dass ich es super finde, dass es dieses Forum noch gibt.
War eine gefühlte Ewigkeit nicht mehr hier.
Ich benötige eure Hilfe beim Zählen von offenen RDP-Sessions.
Aufgabe/Ziel des Programms ist es mir alle Wintitles offener RDP-Sessions zu geben.
Ich hole mir dazu die Prozessliste und gehe dann alle Namen durch.
Wenn "mstsc.exe" in der Prozessliste gefunden wurde, dann wird die PID
an eine Funktion übergeben und diese gibt das Windowhandle zurück.
Mit dem WindowHandle hole ich mir dann den Title.
#include <array.au3>
#include <file.au3>
global $processlist, $i, $stats, $winhandle,$hWnd
$processlist=ProcessList()
for $i = 0 to UBound($processlist) - 1 step 1
if StringInStr($processlist[$i][0],"mstsc.exe") = true Then
ConsoleWrite("################"&@CRLF)
ConsoleWrite("Mstsc found! Name: "&$processlist[$i][0]&" - PID: "&$processlist[$i][1]&" - ArrayID: "&$i&@CRLF)
$stats=ProcessGetStats($processlist[$i][1],1)
ConsoleWrite(_GetHwndFromPID($processlist[$i][1])&@CRLF)
$winhandle=_GetHwndFromPID($processlist[$i][1])
ConsoleWrite("Window title: "&WinGetTitle($winhandle)&@CRLF)
ConsoleWrite("Window text: "&WinGetText($winhandle)&@CRLF)
;~ MsgBox(0,"",WinGetText($winhandle))
ConsoleWrite("################"&@CRLF)
EndIf
Next
;~ for $i = 0 to UBound($processlist)-1 step 1
;~ $winhandle=_GetHwndFromPID($processlist[$i][1])
;~ if WinGetTitle($winhandle) <> "" Then
;~ ConsoleWrite("############"&@CRLF)
;~ ConsoleWrite("Handle: "&$winhandle&@CRLF)
;~ ConsoleWrite("Window title: "&WinGetTitle($winhandle)&@CRLF)
;~ ConsoleWrite("############"&@CRLF)
;~ EndIf
;~ Next
;Function for getting HWND from PID
Func _GetHwndFromPID($PID)
local $failcount
$failcount=0
ConsoleWrite("PID: "&$PID&@CRLF)
if StringLen($PID) < 4 Then
return 0
EndIf
$hWnd = 0
$winlist = WinList()
Do
For $i = 1 To $winlist[0][0]
If $winlist[$i][0] <> "" Then
$iPID2 = WinGetProcess($winlist[$i][1])
If $iPID2 = $PID Then
$hWnd = $winlist[$i][1]
ExitLoop
EndIf
EndIf
Next
if $failcount >= 50 Then
Return
EndIf
$failcount=$failcount+1
Until $hWnd <> 0
Return $hWnd
EndFunc;==>_GetHwndFromPID
Alles anzeigen
Sorry für den komischen Codeabschnitt, aber ich raffe einfach nicht, wo ich hier den Codetyp auf Autoit umstellen kann.
Die "Syntax-Hervorhebung" hat kein Autoit?!
Mein Problem:
Die RDP-Sessions werden erfolgreich erkannt, aber bei einigen wirft mir das System nicht wie gewollt den Title aus, sondern den Inhalt der Menüleiste der RDP (Blaues Menü am Rand in der RDP).
Ich bekomme dann nicht die Adresse und den echten Titel der RDP sondern nur "BBar"....
Kann mir einer erklären wie das zustande kommt?
Ich habe bereits geprüft ob es die korrekte PID übergeben wird. Ja es ist die korrekte - > 13116=mstsc.exe
_________________________________________________
Fehlerhafte Ausgabe:
Mstsc found! Name: mstsc.exe - PID: 13116 - ArrayID: 181
PID: 13116
0x000B0BA2
PID: 13116
Window title: BBar
Window text:
_________________________________________________
Erfolgreiche Ausgabe:
Mstsc found! Name: mstsc.exe - PID: 13448 - ArrayID: 186
PID: 13448
0x00170CD4
PID: 13448
Window title: Technik-pc - 192.168.100.52 - Remotedesktopverbindung
Window text:
Technik-pc 192.168.100.52 - Remotedesktopverbindung
Input Capture Window
Output Painter Window
Output Painter DX Child Window
_________________________________________________