Vielen Dank auch für die Idee mit Sleep() zu arbeiten. Ich habe es mit Sleep() mit Werten bis 5000 versucht. Leider ohne Erfolg.
Noch weitere Vorschläge?
LG., AutoItler
Vielen Dank auch für die Idee mit Sleep() zu arbeiten. Ich habe es mit Sleep() mit Werten bis 5000 versucht. Leider ohne Erfolg.
Noch weitere Vorschläge?
LG., AutoItler
Hallo Bitnugger, danke für die Erklärung. Das nächste Mal werde ich besser aufpassen. LG., Autoitler
Hallo liebe AutoIt-Gemeinde,
bei nachfolgendem Skript funktioniert nach dem Kompilieren die Funktion "WinMove(....)" nicht:
#NoTrayIcon#Region ;**** Directives created by AutoIt3Wrapper_GUI ****#AutoIt3Wrapper_Icon=..\..\..\Icons\ACDSee9pro.ico#AutoIt3Wrapper_Res_Description=Open SpeedCommander#AutoIt3Wrapper_Res_Fileversion=1.0.0.35#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y#AutoIt3Wrapper_Res_Language=1031#AutoIt3Wrapper_AU3Check_Stop_OnWarning=y#AutoIt3Wrapper_Run_Tidy=y#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****Opt('WinTitleMatchMode', 2)_SpeedCommander_Start()ExitFunc _SpeedCommander_Start() Local $_shellexec = ShellExecute('SpeedCommander.exe', ' /L:C:\x_Alter_PC\Eigene Dateien /R:C:\x_Alter_PC', 'C:\Program Files\SpeedProject\SpeedCommander 15', 'open') Local $_winwait = WinWait('SpeedCommander 15 Pro', '', 10) If $_shellexec <> 0 Then If @DesktopWidth > 1366 Then WinMove($_winwait, '', (@DesktopWidth / 2) - (1400 / 2), ((@DesktopHeight / 2) - (900 / 2) + 70), 1400, 900) EndIf Else MsgBox(64, '"SpeedCommander"', 'Sie haben nicht genug Rechte, um das Programm "SpeedCommander 15 Pro" zu starten' & @CRLF & @CRLF & _ 'oder' & @CRLF & @CRLF & _ 'das Programm "SpeedCommander 15 Pro" scheint' & @CRLF & _ 'auf diesem PC nicht installiert zu sein.') EndIf ReturnEndFunc ;==>_SpeedCommander_Start
Hat jemand einen Rat für mich, zumal das Skript im Editor enwandfrei funktioniert?
Außerdem hätte ich gern noch gewußt, wie man den Code korrekt in einen Spoiler einfügt, sodass es so wie im Editor aussieht?
LG., AutoItler
Ps.: Die .au3 habe ich wegen der besseren Übersicht angehängt.
Hallo Autoiter,
Dank für die prompte Antwort. Das Script für den IE ist fertig und läuft, da gab es keine Probleme. Ich arbeite aber nun mal viel lieber mit dem FF. Daher die Frage, ob man dort die Statusbar auslesen kann und wenn ja, wie. Bei der Verwendung von Webdriver UDF fehlen mir die Erfahrungen. Habe noch nie in dieser Richtung "geskriptet". Also kann man oder kann man nicht, auslesen die Staturbar vom FF?
Hallo, liebe AutoItgemeinde,
Da is unter win10 mit FF.au3 und Co. nicht mehr so richtig klappen will, rufe ich meine Standardbrowser Firefox per Run() oder ShellExecute() auf.
Die Scripts funktionieren auch alle. Nur leider muss immer wieder ein
Sleep(...) eingebaut werden, damit die die zu übermittelnden Befehle
auch an der richtigen Stelle zur richtigen Zeit ankommen. Um diese Pause
- im nachfolgendem Script 11 Sekunden zu umgehen, würde ich gerne die
Statusbar des FF kontrollieren, insoweit, die nachfolgenden Befehle erst
dann ausgeführt werden, wenn der $_string_Statusbar = "" ist
(While/WEnd).
#NoTrayIcon
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=..\..\..\Icons\FreeStyleLibre.ico
#AutoIt3Wrapper_AU3Check_Stop_OnWarning=y
#AutoIt3Wrapper_Run_Tidy=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <MiPsIsInetConn.au3>
#include <misc.au3>
#include <String.au3>
Opt('SendKeyDelay', 30)
Opt('WinTitleMatchMode', 2)
Opt('MustDeclareVars', 1)
_loadingFreeStyleLibreFFox()
Exit
Func _loadingFreeStyleLibreFFox()
Local $_width = ((@DesktopWidth * 80) / 100), $_hight = ((@DesktopHeight * 90) / 100)
Local $_x = (@DesktopWidth / 2) - ($_width / 2), $_y = 0
Local $_SiteName = 'Freestyle Libr' & Chr(233)
Local $_url = 'https://www.freestylelibre.de/libre/mein-konto.html'
Local $_urlName = 'Anmelden | FreeStyle Libre'
Local $_SplashText = 'Bitte warten' & @CRLF & @CRLF & '"' & $_SiteName & '" wird geladen ...'
If Not _Singleton(@ScriptName, 1) Then
MsgBox(48, $_SiteName, 'Der Prozess Aufruf "' & $_SiteName & '" ist bereits gestartet.' & @CRLF & _
'Der erneute Aufruf wird daher beendet.')
Exit
EndIf
_Test_Inet_Connection()
Local $_FFPath = RegRead('HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\firefox.exe', '')
If $_FFPath = '' Then
MsgBox(48, $_SiteName, 'Es ist ein genereller Fehler aufgetreten.' & @CRLF & _
'Bitte prüfen Sie, ob "Mozila Firefox" installiert ist.')
Exit
EndIf
If ShellExecute($_FFPath, '-new-window ' & $_url, '', 'open') Then
WinWait($_urlName, '')
WinSetState($_urlName, '', @SW_HIDE)
SplashTextOn('', $_SplashText, 300, 100, -1, -1, 33, '', -1, 900)
Sleep(11000)
ControlSend($_urlName, '', '', '{Tab 13}', 0)
Sleep(100)
ControlSend($_urlName, '', '', '[Benutzername]{TAB}', 0)
Sleep(100)
ControlSend($_urlName, '', '', [Passwort]', 1)
Sleep(100)
ControlSend($_urlName, '', '', '{Tab 2}{ENTER}', 0)
WinMove($_urlName, '', $_x, $_y, $_width, $_hight)
SplashOff()
WinSetState($_urlName, '', @SW_RESTORE)
WinActivate($_urlName, '')
Else
MsgBox(48 + 262144, $_SiteName, 'Es ist ein genereller Fehler aufgetreten.' & @CRLF & _
'Das Konto bei "' & $_SiteName & '"' & _
'kann nicht automatisch geladen werden.' & @CRLF & _
'Bitte rufen Sie "' & $_SiteName & '" manuell auf.')
WinClose($_urlName, '')
EndIf
EndFunc ;==>_loadingFreeStyleLibreFFox
Func _Test_Inet_Connection()
Local $_dlgText
$_dlgText = 'Es besteht zur Zeit keine Internetverbindung.' & @LF & @LF & 'Bitte stellen Sie erst eine Internetverbindung her' & @LF & _
'und starten Sie das Programm dann erneut.'
If Not _CheckInet() Then
MsgBox(16, 'FreeStyle Libr' & Chr(233), $_dlgText)
Exit
EndIf
EndFunc ;==>_Test_Inet_Connection
Vielleicht hat ja jemand 'ne clever (vielleicht auch koplett andere, Idee.
Vielen Dank ...
AutoItler
Hallo, liebe AutoItgemeinde,
Da is unter win10 mit FF.au3 und Co. nicht mehr so richtig klappen will, rufe ich meine Standardbrowser Firefox per Run() oder ShellExecute() auf.
Die Scripts funktionieren auch alle. Nur leider muss immer wieder ein Sleep(...) eingebaut werden, damit die die zu übermittelnden Befehle auch an der richtigen Stelle zur richtigen Zeit ankommen. Um diese Pause - im nachfolgendem Script 11 Sekunden zu umgehen, würde ich gerne die Statusbar des FF kontrollieren, insoweit, die nachfolgenden Befehle erst dann ausgeführt werden, wenn der $_string_Statusbar = "" ist (While/WEnd).
#NoTrayIcon
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=..\..\..\Icons\FreeStyleLibre.ico
#AutoIt3Wrapper_AU3Check_Stop_OnWarning=y
#AutoIt3Wrapper_Run_Tidy=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <MiPsIsInetConn.au3>
#include <misc.au3>
#include <String.au3>
Opt('SendKeyDelay', 30)
Opt('WinTitleMatchMode', 2)
Opt('MustDeclareVars', 1)
_loadingFreeStyleLibreFFox()
Exit
Func _loadingFreeStyleLibreFFox()
Local $_width = ((@DesktopWidth * 80) / 100), $_hight = ((@DesktopHeight * 90) / 100)
Local $_x = (@DesktopWidth / 2) - ($_width / 2), $_y = 0
Local $_SiteName = 'Freestyle Libr' & Chr(233)
Local $_url = 'https://www.freestylelibre.de/libre/mein-konto.html'
Local $_urlName = 'Anmelden | FreeStyle Libre'
Local $_SplashText = 'Bitte warten' & @CRLF & @CRLF & '"' & $_SiteName & '" wird geladen ...'
If Not _Singleton(@ScriptName, 1) Then
MsgBox(48, $_SiteName, 'Der Prozess Aufruf "' & $_SiteName & '" ist bereits gestartet.' & @CRLF & _
'Der erneute Aufruf wird daher beendet.')
Exit
EndIf
_Test_Inet_Connection()
Local $_FFPath = RegRead('HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\firefox.exe', '')
If $_FFPath = '' Then
MsgBox(48, $_SiteName, 'Es ist ein genereller Fehler aufgetreten.' & @CRLF & _
'Bitte prüfen Sie, ob "Mozila Firefox" installiert ist.')
Exit
EndIf
If ShellExecute($_FFPath, '-new-window ' & $_url, '', 'open') Then
WinWait($_urlName, '')
WinSetState($_urlName, '', @SW_HIDE)
SplashTextOn('', $_SplashText, 300, 100, -1, -1, 33, '', -1, 900)
Sleep(11000)
ControlSend($_urlName, '', '', '{Tab 13}', 0)
Sleep(100)
ControlSend($_urlName, '', '', '[Benutzername]', 0)
Sleep(100)
ControlSend($_urlName, '', '', '[Passwort]', 1)
Sleep(100)
ControlSend($_urlName, '', '', '{Tab 2}{ENTER}', 0)
WinMove($_urlName, '', $_x, $_y, $_width, $_hight)
SplashOff()
WinSetState($_urlName, '', @SW_RESTORE)
WinActivate($_urlName, '')
Else
MsgBox(48 + 262144, $_SiteName, 'Es ist ein genereller Fehler aufgetreten.' & @CRLF & _
'Das Konto bei "' & $_SiteName & '"' & _
'kann nicht automatisch geladen werden.' & @CRLF & _
'Bitte rufen Sie "' & $_SiteName & '" manuell auf.')
WinClose($_urlName, '')
EndIf
EndFunc ;==>_loadingFreeStyleLibreFFox
Func _Test_Inet_Connection()
Local $_dlgText
$_dlgText = 'Es besteht zur Zeit keine Internetverbindung.' & @LF & @LF & 'Bitte stellen Sie erst eine Internetverbindung her' & @LF & _
'und starten Sie das Programm dann erneut.'
If Not _CheckInet() Then
MsgBox(16, 'FreeStyle Libr' & Chr(233), $_dlgText)
Exit
EndIf
EndFunc ;==>_Test_Inet_Connection
Vielleicht hat ja jemand 'ne clever (vielleicht auch koplett andere, Idee).
Vielen Dank ...
AutoItler
Hallo Bitnugger,
vielen Dank für Deine Anregungen und Hilfe. Entschuldige, dass ich mich erst heute wieder dem "AutoITen" widmen kann.
Ich habe noch ein wenig hin und her probiert und bin zu einem Ergebnis gekommen, dass momentan meine Wünsche erfüllt.
Happy weekend
AutoITler
Hallo liebe Autoitler,
habe folgendes Problem:
Möchte den TaskMgr mit folgenden Optionen starten:
1. öffnen mit "Mehr Details"
wie kann ich prüfen, ob der TaskMgr im "Mehr Details"-Modus anliegt und wie erhalte ich die ID dieses controls für die Funktion
ControlSend() bzw. ControlClick() ?
2. Tab "Details" soll ausgewählt sein.
Kann ich die Funktion ControlSend() hier effektiv einsetzen?
Hier mein bisheriger Code
#NoTrayIcon
Opt('MustDeclareVars', 1)
;Opt('MouseCoordMode', 2)
If Not _CallTaskMgrDetails() Then
MsgBox(64, 'Taskmanager - Details', 'Es ist ein Problem aufgetreten.' & @CRLF & _
'Der Taskmanager konnte nicht' & @CRLF & _
'im TAB "Details" gestartet werden.')
EndIf
Exit
Func _CallTaskMgrDetails()
Local $_status = 1
Local $_run = Run(@SystemDir & '\taskmgr.exe')
If $_run = 0 Then
$_status = False
Else
Local $_handle = WinWait('[CLASS:TaskManagerWindow]', '')
WinActivate($_handle, '')
WinMove($_handle, '', (@DesktopWidth / 2) - 600, (@DesktopHeight / 2) - 400, 1200, 800)
ControlClick($_handle,'',ControlID) ; Hier liegt das Problem
ControlSend($_handle, '', '', '{TAB 3}')
Sleep(250)
ControlSend($_handle, '', '', '{RIGHT 5}')
$_status = True
EndIf
Return $_status
EndFunc ;==>_CallTaskMgrDetails
Alles anzeigen
Vielleicht gibt es auch einen komplett anderen Ansatz. Ich bin für alles offen.
VG., AutoItler
Hallo und vielen Dank für die Infos. Es ist wirklich nicht so umständlich zum Schließen eines Tabs [Strg+w] oder [Strg+F4] zu bemühen.
LG. an alle, Autoitler
Hallo liebe Autoitgemeinde,
ich hätte gerne gewewußt, ob man irgendwo eine Einstellung vornehmen kann, um die Tabs im SciTE-Editor mit einem "Schließen-Button" (ähnlich Firefox) zu versehen.
Ich nutze den Editor zwar regelmäßig, habe mich aber bislang nicht um die Vielzahl der Einstelloptionen gekümmert, weil das Outfit nach der Installation bislang für mich ausreichend war.
Vielen Dank schon mal im Voraus.
LG., Autoitler
Hallo und vielen Dank an alle, die sich meines Problems angenommen haben.
Ich habe selber auch noch mal alles erfolglos ausgetestet.
Dabei ist der Entschluss gereift: Ich finde mich mit dem Standard look ab.
Die Funktionalität des Scripts leidet ja nicht darunter.
MfG., AutiItler
Hallo,
scheinbar ist es eine so einfache Angelegenheit:
.....(Befehle)....
Local $_hFile = GUICtrlCreateMenu("Datei")
GUICtrlSetFont(-1,0,800)
.....(Befehle)....
Und schon sollte aus "Datei" "Datei" (also in fett) werden. Wird's aber nicht. Ist wahrscheinlich ein ganz einfaches Ding. Ich bekomme es aber nicht hin.
Selbst mit der Funktion "GUISetFont(...)" kann ich die GUI nicht dazu überreden, die Standard-Schriftart "fett" für alle verwendeten controls festzulegen.
Wo liegt der Fehler?
#include <GUIConstantsEx.au3>
wurde nicht vergessen.
MfG., AutoItler
Hallo AspirinJunkie, danke für's Interesse. Eigentlich ist das Thema geschlossen, möchte Dir aber dennoch antworten. Deine Idee funktioniert nur, solange das Script im Interpreter ausgeführt wird. In dem Moment, indem das Script compiliert und dann die Exe ausgeführt wird, ergibt
WinGetTitel('[ACTIVE]')
grundsätzlich den Fensternamen der Exe. Also muss ein anderer Weg gegangen werden.
Wie schon gesagt, habe ich das Thema als erledigt markiert.
Hallo nochmals, da ich von den sichtbaren Fenstern für mein script eigentlich nur das augenblicklich aktive zur weiteren Verwendung brauche, habe ich nochmals mit WinList() experimentiert.
Dabei habe ich durch reinen Zufall - ich hab's vorher zumindest nicht gewusst - festgestellt, dass in der Array-Variable das Element[1][0] immer den Fensternamen des momentan aktiven Fensters enthält. In der Erläuterung zu WinList() ist es leider eben auch nicht erwähnt.
Ich habe meine Erkenntnis mehrfach, auch mit verschiedenen Fenstern, überprüft: Immer enthielt Element[1][0] den Fenstertitel des momentan aktiven Fensters.
Mit anderen Worten, Problem für mich gelöst, Thema ist geschlossen.
Vielen dank noch einmal für's Interesse.
Dank an alle.
Hallo Autoiter, wie auch bei meinem letzten Problem ... na gut, lassen wir das. Hast Du Dein vorgeschlagenes Script mal selber ausgeführt? Wenn ja, dann wäre Dir sicher aufgefallen, dass auch Fenster aufgelistet weden, die nicht auf dem Desktop sichtbar sind, auch nicht in der Taskleiste angezeigt werden. Soweit wie Du bin ich nämlich auch. Ich möchte aber nur die tatsächlich sichtbaren Fenster in einem Array erfassen. Und genau das gelingt mir nicht. Vielleicht findet sich ja jetzt nach meiner Präzisierung doch noch eine Lösung. Würde mich freuen.
Hallo Blinz,
über WinList() erhalte ich zu jedem Array-Eintrag (1. Dimension), auch zu denen, die einen Fensternamen enthalten, ein Handle (2. Dimension),dem eindeutig ein Prozess zugeordnet ist. Also kann ich schon aus dem Fensternamen - dem Taskmanager sei Dank - auf die dazugehörige "xyz.exe" schließen. Außerdem ist eine Manipulation mit ProcessList() in meinem geplanten Script nicht vorgesehen. Dein Beitrag betrifft also mein Problem nicht. Aber trotzdem nochmals danke für das Interesse.
Hallo,
leider scheitere ich wieder einmal an einer sicherlich ganz einfachen Hürde.
Ich möchte gerne alle auf dem Desktop sichtbaren Fenster - aktive und inaktive - in einem Array zur weiteren Verwendung auflisten.
Ich habe es mit WinList() versucht, bin aber leider gescheitert, da diese Funktion neben den sichtbaren offenen Fenster auf dem Desktop auch noch weitere unsichtbare Fenster (woher auch immer die kommen) auflistet.
Bei mir zu Beispiel:
-- "AMD:CCC-AEMCapturingWindow"
-- "Host für die Windows Shell-Oberfläche"
-- "Rechner" (gleich 2x und für mich völlig unverständlich, da Calc.exe nicht von mir gestartet wurde).
sowie
-- "Einstellungen" (ebenfalls 2x und nicht von mir gestartet)
Nun wäre es möglich mit: "BitAnd()" und "WinGetState()" sowie mit: "If Not $array[$i][0] = "[Fenstername]" Then ..." (in einer For ... Next Schleife) zu filtern, dies würde aber die Allgemeingültigkeit, da nicht immer die gleichen "unsichtbaren Fenster" existieren, in Frage stellen und unter Umständen zu falschen Ergnissen führen.
Wie also könnte ich's machen, dass tatsächlich nur die wirklich sichtbaren Fenster auf dem Desktop im Array gespeichert werden?
Bin für jede Idee dankbar
MfG., AutoItler
Die letzten, nun sagen wir mal, am eigentlichen Thema: Autoit und "ScreenUpdating", vorbeigehende Kommentare habe ich zur Kenntnis genommen. Mehr aber auch nicht! Im Übrigen habe ich das Thema bereits geschlossen. Also erübrigen sich weitere Auslassungen dazu. 100% Energie um mich zu kritisieren - 0% fürs Problem .... naja ...
Lasst es nun gut sein, ok?
Letztmalig in sowie zu diesem Thema
und
trotzdem mit freundlichen Grüßen
AutoItler
Hallo autoiter,
ich habe mal nach weiteren Beiträgen im Forum von Dir gesucht und habe feststellen müssen, dass die meisten davon genauso "gewinnbringend" waren wie Deine Kommentare zu meinem Thema.
Es gibt genug Beiträge im Internet zu diesem Problem mit dem unerklärlichen Icon. Ich leide doch nicht unter Halluzinationen!
Sei ganz einfach still, wenn du keine Lösungen anbieten kannst bzw. keine Idee dazu hast.
Solltest Du mal wieder eine Anfrage von mir finden, ignoriere sie einfach und verkneife Dir bitte einen Kommentar. Denn: Eine Hilfe warst bzw. bist Du nicht.
MfG., AutoItler
Ps.: .... und das Problem gibt es doch!
Da, außer mir, scheinbar niemand mit dem Problem "ScreenUpdating" unter AutoIT zu tun hat/hatte, schließe ich hiermit dieses Thema und lasse es halt "flackern".
MfG., AutoItler
Leider ist das Löschen des Icons keine Option. Weder mit Markieren und Entfernen noch mit rechte Maustaste -> Löschen (wird gar nicht angeboten) noch auf eine andere mir bekannte Weise. Weiterhin kann man auch nicht feststellen, woher dieses Icon eigentlich kommt, wer oder was es auf dem Desktop verebigt. Denn, wenn man das wüßte, könnte man auf die ganzen Pseudolösungen aus dem Internet zu diesem Thema verzichten. Noch dazu, weil dieses Problem ja scheinbar schon unter Windows 7 existiert.
Ist nur schade, dass niemand anderes hier im Forum eine Idee dazu hat. Mir geht's im Prinzip hauptsächlich darum, die Bildschirmaktualisierung - und damit meine ich nicht systemeigene Frequenz (Bildschirmwiederholungsrate, 60Hz, 75 Hz etc.) - aus einem Script heraus zu manipulieren.
MfG., AutoItler