Danke für Eure Antworten
Beiträge von Anonym343
-
-
Also das finde ich nun schon merkwürdig. Warum kannst du die cmd (generell) nicht verwenden?
Ich kann Sie im allgemeinen schon verwenden aber nicht für dieses Projekt.
-
Wie wäre es mit dem folgenden Ansatz:
Du machst einmal einen Screenshot vom ungefüllten Feld und einen vom gefüllten Feld. Bei anderen Programmen sieht man Sternchen und ein Screenshot zeigt auch diese. So könntest Du die beiden Bilder vergleichen.
Danke für deine Antwort
Ich verstehe nicht wie mir ein Screenshot bei dem Problem helfen soll...Ich habe schon versucht mit GetPixel, Pixelsearch und Pixelgetcolor auszulesen, ob sich innerhalb des Feldes ein nicht weißer Pixel befindet.
Jedoch kamen bei mir sehr unzuverlässige Ergebnisse raus (Irgendwelche Farben die nicht im Feld zu sehen waren).
-
Warum kompliziert wenn es evtl. auch viel einfacher geht?
https://community.teamviewer.com/German/kb/arti…zeilenparameter
Demnach ist eine GUI Automatisierung völlig unnötig und man kann alle benötigten Verbindungsdaten per cmdline Aufruf an die teamviewer.exe übergeben.
Vielen Dank für deine Antwort!
Leider kann ich die cmd nicht verwenden.
Dankeschön trotzdem
-
Probier mal aus. Denn Abstand zwischen Rand Passwortfeld und eingetragenem Passwortzeichen habe ich händisch ausgemessen. Prüfe mal ob das bei dir identisch ist.
AutoIt
Alles anzeigen#include <ScreenCapture.au3> #include <GDIPlus.au3> #include <WinAPIHObj.au3> ; einmalig speichern zum Vergleich ohne PW Global $NonePW = _GetPixelOnPWChar() ; und dann immer wieder so If $NonePW = _GetPixelOnPWChar() Then ; PASSWORTEINGABE ERFORDERLICH EndIf Func _GetPixelOnPWChar() Local $hTV = WinGetHandle('TeamViewer Authentifizierung') Local $aW = WinGetPos($hTV) Local $aC = ControlGetPos($hTV, '', '[CLASS:Edit; INSTANCE:1]') Local $iX = $aW[0] + $aC[0] + 17 ; 794 + 206 +17 (17 - Abstand Editrand li. bis Mitte PW-Pixel) Local $iY = $aW[1] + $aC[1] + 40 ; 354 + 72 +40 (40 - Abstand Editrand ob. bis Mitte PW-Pixel) Local $hHBmp = _ScreenCapture_Capture("") ;create a GDI bitmap by capturing the desktop _GDIPlus_Startup() Local $hBmp = _GDIPlus_BitmapCreateFromHBITMAP($hHBmp) ;convert GDI to GDI+ bitmap _WinAPI_DeleteObject($hHBmp) ;release GDI bitmap resource because not needed anymore Local $px = _GDIPlus_BitmapGetPixel($hBmp, $iX, $iY ) _GDIPlus_BitmapDispose($hBmp) _GDIPlus_Shutdown() Return $px EndFunc
Ich habe es ausprobiert doch leider hat es nicht funktioniert.
Egal ob das Feld leer oder gefüllt ist, es wird immer überschrieben.
-
Ich habe den TeamViewer nicht mehr installiert, aber ich habe das seinerzeit so ausgelesen:
Local $hTeamViewer = WinGetHandle('TeamViewer')
Local $sID = ControlGetText($hTeamViewer, '', '[CLASS:Edit; INSTANCE:2]')
Local $sKennwort = ControlGetText($hTeamViewer, '', '[CLASS:Edit; INSTANCE:3]')
Damit konnte man zumindest sehen, ob was drin steht oder nicht.
Da fehlt natürlich das komplette Errorhandling, etc.
Vielen Dank BananaJoe für deine Antwort
Ich habe deinen Vorschlag ausprobiert.Für die ID hat es super Funktioniert.
Für das Kennwort leider nicht weil es immer zurückgibt dass es leer ist.
-
Datenschutzrelevante Dinge will niemand wissen.
Ich geb mal ein Bsp. für einen Ablauf (hat jetzt nichts mit TV zu tun):
- Öffnen der Anwendung XY- Warten auf Anmeldefenster
- Eintragen Nutzername
- Eintragen PW
- Bestätigen mit Button <OK>
Dann wissen wir das "Drumherum" - und nun kannst du ganz speziell auf einzelne Punkte dieses Ablaufs verweisen.
Denn ich weiß wirklich nicht, wann du dein PW im TV eintragen musst. Und somit kann ich dir nicht sagen, wie man dieses PW-Feld prüft-Teamviewer öffnen
-TeamViewer öffnen.
-Partner-ID eingeben.
-Verbinden.
-Kennwort Eingabe öffnet sich.
-Skript erkennt dass die Kennworteingabe geöffnet ist.
-Skript prüft, ob das Eingabefeld leer oder gefüllt ist.
-> Wenn das Feld gefüllt ist, dann wird einfach auf verbinden geklickt.
-> Wenn das Feld leer ist, dann wird ein Text in das Feld eingefügt und danach wird auf verbinden geklickt.
Ich hoffe es ist jetzt genug "Drumherum" bekannt.
-
Es gibt in meiner Situation keine bessere Lösung.
Das "Drumherum" möchte ich aus Datenschutzgründen nicht erklären.
Ich möchte nur wissen, ob es eine Möglichkeit gibt zu prüfen, ob ein Passwortfeld leer oder gefüllt ist.
-
??
Wenn du dich bei jemandem zur Hilfestellung aufschalten möchtest, brauchst du dessen Passwort.
Soll jemand dir helfen braucht er dein Passwort.
In welcher Konstellation musst du denn dein eigenes Passwort eingeben?
Wenn ich TV in der Serverinstallation nutze brauche ich ebenso das PW des Ziels. - Ist das dein Einsatz, z.B. von zu Hause auf PC in der Ferne (Firma) aufschalten? Da kannst du doch im Konto die Verbindung fix festlegen und wählst nur das Ziel an - fertig.
Tut mir leid aber ich möchte jetzt nicht über TeamViewer reden. Ich weiß wie TeamViewer funktioniert.
Ich möchte einfach nur wissen, ob man das Passwort nachprüfen kann.
Am Ende ist es relativ egal in welcher Anwendung geprüft werden soll.
Wenn jemand anderes auch ein Passwort Feld prüfen möchte, welches nicht TeamViewer beinhaltet, dann soll ihm ja auch geholfen werden.
-
Welchen Sinn soll das ergeben?
Weiterhin ist m. W. die Automatisierung des TV ohne die (verfügbare) API nicht zulässig.
Erstmals vielen Dank für deine schnelle Antwort.
Der Sinn dabei ist, dass ich nicht 50-mal am Tag mein Passwort eingeben muss.
Das ist keine Automatisierung. Es ist lediglich eine effektivere Nutzung meiner Zeit.
-
Hallo Leute,
ich möchte mit einem AutoIT Skript herausfinden, ob mein Passwort Feld Leer oder gefüllt ist.
Leider kann man mit ControlGetText("TeamViewer", "", "Edit1") das Passwort nicht auslesen (logischerweise).
Ich habe versucht mit Pixelsearch das Passwort Feld nach einem nicht Weißen Pixel abzusuchen. Dies war jedoch Erfolglos.
Das Gleiche habe ich auch schon mit Pixelgetcolor versucht (ohne Erfolg).
Hat jemand eine Idee wie ich herausfinden könnte, ob das Passwortfeld gefüllt ist oder nicht?
Spoiler anzeigen
C
Alles anzeigen#include <Process.au3> #include <String.au3> #include <WinAPI.au3> ;Metrics local $SM_CXCAPTION = _WinAPI_GetSystemMetrics(3) local $SM_CYCAPTION = _WinAPI_GetSystemMetrics(4) local $SM_CXBORDER = _WinAPI_GetSystemMetrics(5) local $SM_CYBORDER = _WinAPI_GetSystemMetrics(6) local $SM_CXFIXEDFRAME = _WinAPI_GetSystemMetrics(7) local $SM_CYFIXEDFRAME = _WinAPI_GetSystemMetrics(8) local $SM_CXEDGE = _WinAPI_GetSystemMetrics(45) local $SM_CYEDGE = _WinAPI_GetSystemMetrics(46) local $title = "TeamViewer" ;0=relative with borders, 1=absolute, 2=relative without window borders local $coordMode = 1 AutoItSetOption("PixelCoordMode",$coordMode) while true local $window = WinWaitActive($title) local $whnd = WinGetHandle($window) MsgBox(1024,"handle",$whnd,1.5) local $winPos = WinGetPos($whnd) local $xy = ControlGetPos($whnd, "", "Edit1") local $offsetx = 0 if $coordMode <> 2 then $offsetx = $SM_CXBORDER + $SM_CXFIXEDFRAME + $SM_CXEDGE; + $SM_CXCAPTION if $coordMode == 1 then $offsetx = $offsetx + $winPos[0] local $x = $xy[0] + $offsetx local $offsety = 0 if $coordMode <> 2 then $offsety = $SM_CYCAPTION + $SM_CYBORDER + $SM_CYFIXEDFRAME + $SM_CYEDGE if $coordMode == 1 then $offsety = $offsety + $winPos[1] local $y = $xy[1] + $offsety local $empty = true local $colors = "" for $j = 6 to 12 step 1 For $i = 2 to 20 step 1 $colors = $colors & "," & PixelGetColor($x + $i, $y + $j,$whnd) ;mousemove($x + $i, $y + $j,1) ;msgbox(1234,"test",pixelgetcolor($x + $i, $y + 9),0.5) if PixelGetColor($x + $i, $y + $j,$whnd) > 10000000 then $empty = false ;Break endif next next msgbox(4096,"test",$colors) ;TODO fix this local $px = PixelSearch($x + $searchOffset,$y + $searchOffset,$x + $xy[2] - $searchOffset,$y + $xy[3] - $searchOffset,0x000000,20,1,$whnd) if not @error then $empty = true MsgBox(4096,$px[0],$px[1],1) MouseMove($px[0] + $winpos[0]+$SM_CXBORDER + $SM_CXFIXEDFRAME + $SM_CXEDGE,$px[1] + $winpos[1]+$SM_CYCAPTION + $SM_CYBORDER + $SM_CYFIXEDFRAME + $SM_CYEDGE) EndIf ;TODO remove this ContinueLoop if $empty Then ControlSetText($whnd, "", "Edit1", "1234") EndIf WinWaitClose($whnd ,"") WEnd