Beiträge von tommii
-
-
Hi Bitnugger,
erst einmal vielen Dank für deine Hilfe. Wie folg reagiert dein Script.
Wenn ich es unberührt einfüge, bekomme ich nur "Systemtray not found"
dann habe ich deinen Code mal ein wenig durchforstet und folgendes gesehen
Code$g_hSysTray = ControlGetHandle('[CLASS:Shell_TrayWnd]', '', '[CLASS:ToolbarWindow32; INSTANCE:3]')
ändere ich dort INSTANCE:3 auf INSTANCE:1, bekomme ich "Icon was not found in systemtray"... ( bei früheren Versuchen habe ich herausgefunden, dass ich den Systemtray wie folgt mit der linken Maustaste "anklicke")
Code$hTaskBarHandle = WinGetHandle("[Class:Shell_TrayWnd]", "") ControlClick($hTaskBarHandle, "", "[CLASS:Button; INSTANCE:1]")
ABER: bei dieser Variante spuckt mir das "Consol write" auch was aus...
die Variable $sText gibt mir den "Namen" meines Netzwerkadapters an, waws bedeuten würde, dass wir ein Symbol in der Leiste zu weit rechts sind...
Hilft dir das, mir weiter zu helfen?
Nochmals vielen Dank
Lieben Gruß tommii
-
Hi Bitnugger,
habe ich gerade eben versucht, wenn ich den Code direkt per F5 ausführe, ist dieser ach ca 0,6 Sekunden fertig, es passiert aber leider nichts,sprich kein rechtsklick...
wie müsste die zweite zeile aussehen, um einen doppelklick mit links zu generieren?
Wäre das so richtig?
-
Guten Morgen,
ich weiß, dass das Thema schon bis zum Erbrechen durchthematisiert wurde, aber ich finde keine funktioniernde Lösung...
Ich habe ein Programm (UltraVNC), was als Systemdienst läuft, also man sieht nur ein Tray unten rechts in der Ecke.
Über dieses habe ich auch mittels eines Codesnippets viele Informationen herausgefunden.
index: 1 visible: True handle: 0x00030362 pid: 7404 proc: winvnc.exe title: WinVNC Tray Icon tooltip: WinVNC - 53.26.191.27 - M067L1039510 - application - vnchook Nichts desto trotz bekomme ich es nicht hin, auf dieses Symbol mit der rechten Maustaste zu klicken. Egal, welchen der vielen Codesnippets ich dafür versucht habe, es heißt immer "Trayicon was not found"
das Produktivsystem ist folgendes
Könnt ihr mir dabei bitte helfen?
Danke euch vielmals und schönes Wochenende.
-
Guten Tag,
Ich habe schon das halbe Internet durchwühlt aber bis dato nicjts passendes gefunden... zu meinem Problem:
Ich muss für die Arbeit eine Installationsrotine erstellen, bestehend aus mehreren setups und einigen Einstellungen am Win7 System.
Unter anderem muss ich dem Rechner und einer externen LAN Komponente (Eine Kamera eines Roboters) die Kommunikation verwirklichen. Dazu muss ich sowohl Ein- als auch Ausgehende Firewallregeln erstellen (Ports Und Programme). Eingehende Regeln bekomme ich hin. Im Internet kursiert eine WindowsFirewall.au3 die das ermöglicht. Bei den ausgehenden Regeln stehe ich auf dem Schlauch, bekomme sie weder für die Ports noch für die Apps erstellt...
Auch nicht , wenn ich eine Direction angebe...
Hat da jemand ein Codesnipped oder einen Ansatz für mich?
System ist Win7 mit Administratorrechten.
Danke im voraus
Tommii
-
nachtrag...das controlsettext findet die inputfelder nicht, obwohl ich sie 1:1 aus dem window info tool übernommen habe...
-
hi, nach kurzer Krankheit nun wieder Vorort. Nein, der Anmeldebuttontext ändert sich nicht...ich bin mir ziemlich sicher, dass das irgendwie mit den Win7 Gruppenrichtlinien zu tun hat...der Witz ist, dass es sporadisch hinhaut und sporadisch nicht...ich weiß nur leider nicht wo ich ansetzen soll....bei meinem Chef (lokaladmin) geht es immer....leider weiß auch er nicht, ob/was die globaladmins am gruppenrichtliniendienst rumspielen oder nicht...
-
dafür lacht ihr mich aus das ist ein zusammengewürfeltes Autoitgebilde....naja was solls
AutoIt
Alles anzeigen#include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <ColorConstantS.au3> #include <StaticConstants.au3> #include <EditConstants.au3> #include <WindowsConstants.au3> #include <Crypt.au3> #Region ### START Koda GUI section ### Form=P:\Bremen\Bremen-DFS\AKL\Instandhaltung\Vorarbeiter\Dierksen\AutoIT\Form1.kxf $Form1_1 = GUICreate("Hauptmenü", 646, 438, 187, 130) GUISetBkColor($Color_White) $Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 352, 360, 17, 17) GUICtrlSetState($Checkbox1, $GUI_DISABLE) $anfang1 = iniread("H:\AutoIT.ini", "login", "wert", "aktiv") If $anfang1="aktiv" Then GUICtrlSetState($Checkbox1, $GUI_CHECKED) GUICtrlSetState($Checkbox1, $GUI_ENABLE) Else GUICtrlSetState($Checkbox1, $GUI_UNCHECKED) GUICtrlSetState($Checkbox1, $GUI_DISABLE) EndIf $Label1 = GUICtrlCreateLabel("Anmeldung gespeichert", 376, 360, 106, 17) $Button3 = GUICtrlCreateButton("Einstellungen", 232, 344, 107, 41) $Button2 = GUICtrlCreateButton("Beenden", 368, 280, 113, 41) $Button1 = GUICtrlCreateButton("Start", 232, 280, 113, 41) $Button4 = GUICtrlCreateButton("UltraVNC", 504, 280, 115, 41) GUICtrlSetState($Button4, $GUI_DISABLE) $Button_admin = GUICtrlCreateButton("Administration", 504, 344, 113, 33) $Willkommen = GUICtrlCreateInput("Willkommen im Login. Unter Einstellungen kann optional", 256, 40, 321, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY)) $Input1 = GUICtrlCreateInput("eingestellt werden, welche Programme geöffnet werden sollen.", 256, 64, 321, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY)) $Input2 = GUICtrlCreateInput("Bei Fragen oder Anregungen einfach an Thomas wenden.", 256, 88, 321, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY,$WS_BORDER)) $Pic1 = GUICtrlCreatePic("P:\Bremen\Bremen-DFS\AKL\Instandhaltung\Vorarbeiter\Dierksen\Daimler\Layouts\GFX\bg.jpg", 0, 0, 225, 433) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### $hMenu_main = DllCall("user32.dll", "hwnd", "GetSystemMenu", "hwnd", $Form1_1, "int", 0) DllCall("user32.dll", "hwnd", "EnableMenuItem", "hwnd", $hMenu_main[0], "int", 0xF060, "int", 0x1) Func _IsChecked($control) Return BitAND(GUICtrlRead($control), $GUI_CHECKED) = $GUI_CHECKED EndFunc #Region ### START Koda GUI section ### Form=P:\Bremen\Bremen-DFS\AKL\Instandhaltung\Vorarbeiter\Dierksen\AutoIT\login.kxf $Form2 = GUICreate("Login", 405, 292, 318, 225) GUISetBkColor($Color_White) $Value = Ini_Read("Password","H:\passwd.ini","Section","Key") $user = Ini_Read("User","H:\passwd.ini","User","Key") $Benutzername = GUICtrlCreateInput($user, 24, 120, 161, 21) $Passwort = GUICtrlCreateInput($value, 24, 152, 161, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_PASSWORD)) $Input1_2 = GUICtrlCreateInput("Bitte Citrix Anmeldedaten eingeben. Die Daten werden nur", 24, 32, 321, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY)) $Input2_2 = GUICtrlCreateInput("temorär verschlüsselt gespeichert! Wenn diese gespeichert", 24, 56, 321, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY)) $Input3_3 = GUICtrlCreateInput("werden sollen, bleiben Sie verschlüsselt. Absolut sicher!", 24, 80, 321, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY)) $Checkbox_login = GUICtrlCreateCheckbox("Checkbox1", 24, 184, 17, 17) $Input4_2 = GUICtrlCreateInput("Anmeldung speichern", 48, 184, 121, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY)) $Attacke = GUICtrlCreateButton("Attacke", 16, 232, 113, 33) $Abbruch = GUICtrlCreateButton("Abbruch", 168, 232, 105, 33) GUISetState(@SW_HIDE) #EndRegion ### END Koda GUI section ### $hMenu_login = DllCall("user32.dll", "hwnd", "GetSystemMenu", "hwnd", $Form2, "int", 0) DllCall("user32.dll", "hwnd", "EnableMenuItem", "hwnd", $hMenu_login[0], "int", 0xF060, "int", 0x1) #Region ### START Koda GUI section ### Form=P:\Bremen\Bremen-DFS\AKL\Instandhaltung\Vorarbeiter\Dierksen\AutoIT\einstellungen.kxf $Form3 = GUICreate("Einstellungen", 630, 434, 186, 126) GUISetBkColor($Color_White) $CheckboxSAP = GUICtrlCreateCheckbox("CheckboxSAP", 48, 72, 17, 17) $Checkbox_Integra = GUICtrlCreateCheckbox("Checkbox_Integra", 48, 104, 17, 17) $Checkbox_Visu = GUICtrlCreateCheckbox("Checkbox_Visu", 48, 136, 17, 17) $Checkbox_Monitor = GUICtrlCreateCheckbox("Checkbox_Monitor", 48, 168, 17, 17) $Checkbox_Lotus = GUICtrlCreateCheckbox("Checkbox_Lotus", 48, 200, 17, 17) $SAP = GUICtrlCreateInput("SAP", 72, 72, 105, 21) $Integraview = GUICtrlCreateInput("IntegraView", 72, 104, 105, 21) $Visu = GUICtrlCreateInput("ExtraVisu", 72, 136, 105, 21) $Monitor = GUICtrlCreateInput("All in One Monitor", 72, 168, 105, 21) $Input1_3 = GUICtrlCreateInput("Lotus Notes", 72, 200, 105, 21) $Button_Save = GUICtrlCreateButton("Speichern", 48, 288, 121, 33) $Button_clear = GUICtrlCreateButton("Verwerfen", 200, 288, 123, 33) $Input2 = GUICtrlCreateInput("Bitte hier auswählen, was geöffnet werden soll.", 288, 40, 273, 21) $Checkbox_Citrix = GUICtrlCreateCheckbox("Checkbox_Citrix", 48, 40, 17, 17) $Input3_3 = GUICtrlCreateInput("Citirx Domäne", 72, 37, 105, 21) $Checkbox_SB = GUICtrlCreateCheckbox("Checkbox_SB", 48, 232, 17, 17) $Input4_3 = GUICtrlCreateInput("Schichtbuch", 72, 232, 105, 21) $Input2_3 = GUICtrlCreateInput("Bitte hier auswählen, was geöffnet werden soll.", 288, 40, 273, 21) GUISetState(@SW_HIDE) #EndRegion ### END Koda GUI section ### $hMenu_einstellungen = DllCall("user32.dll", "hwnd", "GetSystemMenu", "hwnd", $Form3, "int", 0) DllCall("user32.dll", "hwnd", "EnableMenuItem", "hwnd", $hMenu_einstellungen[0], "int", 0xF060, "int", 0x1) #Region ### START Koda GUI section ### Form=P:\Bremen\Bremen-DFS\AKL\Instandhaltung\Vorarbeiter\Dierksen\AutoIT\administration.kxf $Form_admin = GUICreate("Administration", 755, 521, 265, 242) GUISetBkColor($Color_White) $ini_read_ini=iniread("H:\pfad.ini", "ini", "wert", "") $ini_read_lotus=iniread("H:\pfad.ini", "lotus", "wert", "") $ini_read_visu=iniread("H:\pfad.ini", "visu", "wert", "") $ini_read_monitor=iniread("H:\pfad.ini", "monitor", "wert", "") $ini_read_integra=iniread("H:\pfad.ini", "integra", "wert", "") $ini_read_citrix=iniread("H:\pfad.ini", "citrix", "wert", "") $ini_read_SB=iniread("H:\pfad.ini", "SB", "wert", "") $ini_read_sap=iniread("H:\pfad.ini", "sap", "wert", "") $ini_pfad = GUICtrlCreateInput($ini_read_ini, 48, 64, 153, 21) $Input_ini = GUICtrlCreateInput("Pfad der Ini Dateien", 48, 32, 153, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY)) $Input_lotus = GUICtrlCreateInput("Pfad von Lotus", 48, 96, 153, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY)) $Lotus_pfad = GUICtrlCreateInput($ini_read_lotus, 48, 128, 153, 21) $Input_monitor = GUICtrlCreateInput("Pfad vom All-in-One", 45, 160, 153, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY)) $monitor_pfad = GUICtrlCreateInput($ini_read_monitor, 45, 192, 153, 21) $Input_visu = GUICtrlCreateInput("Pfad der ExtraVisu", 45, 224, 153, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY)) $visu_pfad = GUICtrlCreateInput($ini_read_visu, 45, 256, 153, 21) $citrix_pfad = GUICtrlCreateInput($ini_read_citrix, 293, 64, 153, 21) $Input_receiver = GUICtrlCreateInput("Pfad vom Citrix Receiver", 293, 32, 153, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY)) $Input_SB = GUICtrlCreateInput("Pfad vom Schichtbuch", 293, 160, 153, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY)) $pfad_SB = GUICtrlCreateInput($ini_read_SB, 293, 192, 153, 21) $Input_SAP = GUICtrlCreateInput("Pfad von SAP", 293, 96, 153, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY)) $sap_pfad = GUICtrlCreateInput($ini_read_sap, 293, 128, 153, 21) $pfad_integra = GUICtrlCreateInput($ini_read_integra, 293, 256, 153, 21) $Input_Integra = GUICtrlCreateInput("Pfad von Integraview", 293, 224, 153, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY)) $Admin_speichern = GUICtrlCreateButton("Speichern", 48, 336, 129, 41) $Admin_abbruch = GUICtrlCreateButton("Verwerfen", 208, 336, 129, 41) $Button_ini_pfad = GUICtrlCreateButton("...", 216, 64, 25, 25) $Button_pfad_lotus = GUICtrlCreateButton("...", 216, 128, 25, 25) $Button_pfad_visu = GUICtrlCreateButton("...", 216, 256, 25, 25) $Button_pfad_monitor = GUICtrlCreateButton("...", 216, 192, 25, 25) $Button_pfad_citrix = GUICtrlCreateButton("...", 461, 64, 25, 25) $Button_pfad_sap = GUICtrlCreateButton("...", 461, 128, 25, 25) $Button_pfad_integra = GUICtrlCreateButton("...", 461, 256, 25, 25) $Button_pfad_SB = GUICtrlCreateButton("...", 461, 192, 25, 25) GUISetState(@SW_HIDE) #EndRegion ### END Koda GUI section ### $hMenu_Admin = DllCall("user32.dll", "hwnd", "GetSystemMenu", "hwnd", $Form_admin, "int", 0) DllCall("user32.dll", "hwnd", "EnableMenuItem", "hwnd", $hMenu_Admin[0], "int", 0xF060, "int", 0x1) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE IniWrite("H:\AutoIT.ini", "Start", "wert", "inaktiv") Exit Case $Button1 ;GUISetState(@SW_SHOW,$Form2) If _IsChecked($Checkbox1) Then IniWrite("H:\AutoIT.ini", "login", "wert", "aktiv") _start() Else IniWrite("H:\AutoIT.ini", "login", "wert", "Inaktiv") GUISetState(@SW_SHOW,$Form2) EndIf _check_login() case $Button2 IniWrite("H:\AutoIT.ini", "Start", "wert", "inaktiv") Exit case $Button3 GUISetState(@SW_SHOW,$Form3) _check_ini() _disable_checkbox() case $checkbox1 if ControlCommand("Form1_1", "", "Checkbox1", "IsChecked", "") = 0 then GUICtrlSetState($Checkbox1, $GUI_DISABLE) Else endif Case $Button_clear GUISetState(@SW_HIDE,$Form3) Case $Abbruch GUISetState(@SW_HIDE,$Form2) case $Button_Save _Save_ini() GUISetState(@SW_HIDE,$Form3) case $Attacke _save_login() _Start() IniWrite("H:\AutoIT.ini", "Start", "wert", "aktiv") anfang() ultravnc_button() GUISetState(@SW_HIDE,$Form2) case $Checkbox_Citrix _enable_checkbox() case $Button_admin Password_Administration() Case $Button_ini_pfad $Path_ini = FileSelectFolder("Lümmeltüte",@ScriptDir,3,@ScriptDir) If Not @error Then GUICtrlSetData($ini_pfad,$Path_ini) Case $Button_pfad_lotus $Path_lotus = FileOpenDialog("Lümmeltüte",@ScriptDir, "All (*.*)") If Not @error Then GUICtrlSetData($lotus_pfad,$path_lotus) Case $Button_pfad_citrix $Path_citrix = FileOpenDialog("Lümmeltüte",@ScriptDir, "All (*.*)") If Not @error Then GUICtrlSetData($citrix_pfad,$path_citrix) Case $Button_pfad_SB $Path_SB = FileOpenDialog("Lümmeltüte",@ScriptDir, "All (*.*)") If Not @error Then GUICtrlSetData($pfad_SB,$path_SB) Case $Button_pfad_visu MsgBox(0x10,"Info","UNC Pfade bitte manuell eintragen.") Case $Button_pfad_monitor MsgBox(0x10,"Info","UNC Pfade bitte manuell eintragen.") Case $Button_pfad_integra MsgBox(0x10,"Info","UNC Pfade bitte manuell eintragen.") Case $Button_pfad_sap MsgBox(0x10,"Info","UNC Pfade bitte manuell eintragen.") Case $Admin_abbruch GUISetState(@SW_HIDE,$Form_admin) case $Admin_speichern $Path_visu = GUICtrlRead($visu_pfad) IniWrite("H:\pfad.ini", "visu", "wert", $Path_visu) $Path_monitor = GUICtrlRead($monitor_pfad) IniWrite("H:\pfad.ini", "monitor", "wert", $Path_monitor) $Path_integra = GUICtrlRead($pfad_integra) IniWrite("H:\pfad.ini", "integra", "wert", $Path_integra) $Path_citrix = GUICtrlRead($citrix_pfad) IniWrite("H:\pfad.ini", "citrix", "wert", $path_citrix) $Path_ini = GUICtrlRead($ini_pfad) IniWrite("H:\pfad.ini", "ini", "wert", $Path_ini) $Path_SB = GUICtrlRead($pfad_SB) IniWrite("H:\pfad.ini", "SB", "wert", $Path_SB) $Path_lotus = GUICtrlRead($lotus_pfad) IniWrite("H:\pfad.ini", "lotus", "wert", $Path_lotus) $Path_sap = GUICtrlRead($sap_pfad) IniWrite("H:\pfad.ini", "sap", "wert", $Path_sap) GUISetState(@SW_HIDE,$Form_admin) EndSwitch WEnd func anfang() $login_check = iniread("H:\AutoIT.ini", "login", "wert", "aktiv") If $login_check="aktiv" Then GUICtrlSetState($Checkbox1, $GUI_CHECKED) Else GUICtrlSetState($Checkbox1, $GUI_UNCHECKED) EndIf EndFunc Func ultravnc_button() $start_check = iniread("H:\AutoIT.ini", "Start", "wert", "aktiv") $citrix_check = iniread("H:\AutoIT.ini", "Citrix", "wert", "aktiv") If $start_check="aktiv" And $citrix_check="aktiv" Then GUICtrlSetState($Button4, $GUI_ENABLE) Else GUICtrlSetState($Button4, $GUI_DISABLE) EndIf EndFunc Func Password_Administration() local $pwd $pwd = InputBox( "Password", "Please type in the", "Password","*", 230 , 120) ;GUISetState() ;If $pwd = "daspasswort" Then If @error = 1 Then ;Exit GUISetState(@SW_HIDE,$Form_admin) Else If $pwd = "" Then GUISetState(@SW_SHOW,$Form_admin) Else GUISetState(@SW_HIDE,$Form_admin) Msgbox(0,"","Falsches Passwort") EndIf EndIf EndFunc Func _Save_ini() if BitAnd(GUICtrlRead($CheckboxSAP),$GUI_CHECKED) = $GUI_CHECKED then IniWrite("H:\AutoIT.ini", "SAP", "wert", "aktiv") else IniWrite("H:\AutoIT.ini", "SAP", "wert", "Inaktiv") EndIf if BitAnd(GUICtrlRead($Checkbox_Integra),$GUI_CHECKED) = $GUI_CHECKED then IniWrite("H:\AutoIT.ini", "Integra", "wert", "aktiv") else IniWrite("H:\AutoIT.ini", "Integra", "wert", "Inaktiv") EndIf if BitAnd(GUICtrlRead($Checkbox_Lotus),$GUI_CHECKED) = $GUI_CHECKED then IniWrite("H:\AutoIT.ini", "Lotus", "wert", "aktiv") else IniWrite("H:\AutoIT.ini", "Lotus", "wert", "Inaktiv") EndIf if BitAnd(GUICtrlRead($Checkbox_Visu),$GUI_CHECKED) = $GUI_CHECKED then IniWrite("H:\AutoIT.ini", "Visu", "wert", "aktiv") else IniWrite("H:\AutoIT.ini", "Visu", "wert", "Inaktiv") EndIf if BitAnd(GUICtrlRead($Checkbox_Monitor),$GUI_CHECKED) = $GUI_CHECKED then IniWrite("H:\AutoIT.ini", "Monitor", "wert", "aktiv") else IniWrite("H:\AutoIT.ini", "Monitor", "wert", "Inaktiv") EndIf if BitAnd(GUICtrlRead($Checkbox_Citrix),$GUI_CHECKED) = $GUI_CHECKED then IniWrite("H:\AutoIT.ini", "Citrix", "wert", "aktiv") else IniWrite("H:\AutoIT.ini", "Citrix", "wert", "Inaktiv") EndIf if BitAnd(GUICtrlRead($Checkbox_SB),$GUI_CHECKED) = $GUI_CHECKED then IniWrite("H:\AutoIT.ini", "Schichtbuch", "wert", "aktiv") else IniWrite("H:\AutoIT.ini", "Schichtbuch", "wert", "Inaktiv") EndIf FileSetAttrib("H:\AutoIT.ini", "+S") EndFunc Func _check_ini() $SAP=iniread("H:\AutoIT.ini", "SAP", "wert", "aktiv") $integra=iniread("H:\AutoIT.ini", "Integra", "wert", "aktiv") $Lotus=iniread("H:\AutoIT.ini", "Lotus", "wert", "aktiv") $Visu=iniread("H:\AutoIT.ini", "Visu", "wert", "aktiv") $Monitor=iniread("H:\AutoIT.ini", "Monitor", "wert", "aktiv") $Citrix=iniread("H:\AutoIT.ini", "Citrix", "wert", "aktiv") $Schichtbuch=iniread("H:\AutoIT.ini", "Schichtbuch", "wert", "aktiv") If $SAP="aktiv" Then GUICtrlSetState($CheckboxSAP, $GUI_CHECKED) Else GUICtrlSetState($CheckboxSAP, $GUI_UNCHECKED) EndIf If $integra="aktiv" Then GUICtrlSetState($Checkbox_Integra, $GUI_CHECKED) Else GUICtrlSetState($Checkbox_Integra, $GUI_UNCHECKED) EndIf If $Lotus="aktiv" Then GUICtrlSetState($Checkbox_Lotus, $GUI_CHECKED) Else GUICtrlSetState($Checkbox_Lotus, $GUI_UNCHECKED) EndIf If $Visu="aktiv" Then GUICtrlSetState($Checkbox_Visu, $GUI_CHECKED) Else GUICtrlSetState($Checkbox_Visu, $GUI_UNCHECKED) EndIf If $Monitor="aktiv" Then GUICtrlSetState($Checkbox_Monitor, $GUI_CHECKED) Else GUICtrlSetState($Checkbox_Monitor, $GUI_UNCHECKED) EndIf If $Citrix="aktiv" Then GUICtrlSetState($Checkbox_Citrix, $GUI_CHECKED) Else GUICtrlSetState($Checkbox_Citrix, $GUI_UNCHECKED) EndIf If $Schichtbuch="aktiv" Then GUICtrlSetState($Checkbox_SB, $GUI_CHECKED) Else GUICtrlSetState($Checkbox_SB, $GUI_UNCHECKED) EndIf EndFunc Func _save_login() if BitAnd(GUICtrlRead($Checkbox_login),$GUI_CHECKED) = $GUI_CHECKED then IniWrite("H:\AutoIT.ini", "login", "wert", "aktiv") GUICtrlSetState($Checkbox1, $GUI_ENABLE) else IniWrite("H:\AutoIT.ini", "login", "wert", "Inaktiv") GUICtrlSetState($Checkbox1, $GUI_DISABLE) EndIf EndFunc Func _check_login() $login=iniread("H:\AutoIT.ini", "login", "wert", "aktiv") If $login="aktiv" Then GUICtrlSetState($Checkbox_login, $GUI_CHECKED) GUICtrlSetState($Checkbox1, $GUI_CHECKED) Else GUICtrlSetState($Checkbox_login, $GUI_UNCHECKED) GUICtrlSetState($Checkbox1, $GUI_UNCHECKED) EndIf EndFunc Func _disable_checkbox() if BitAnd(GUICtrlRead($Checkbox_Citrix),$GUI_CHECKED) = $GUI_CHECKED then Else GUICtrlSetState($CheckboxSAP, $GUI_DISABLE) GUICtrlSetState($Checkbox_Integra, $GUI_DISABLE) GUICtrlSetState($Checkbox_Visu, $GUI_DISABLE) GUICtrlSetState($Checkbox_Monitor, $GUI_DISABLE) GUICtrlSetState($CheckboxSAP, $GUI_UNCHECKED) GUICtrlSetState($Checkbox_Integra, $GUI_UNCHECKED) GUICtrlSetState($Checkbox_Visu, $GUI_UNCHECKED) GUICtrlSetState($Checkbox_Monitor, $GUI_UNCHECKED) EndIf EndFunc Func _enable_checkbox() if BitAnd(GUICtrlRead($Checkbox_Citrix),$GUI_CHECKED) = $GUI_CHECKED then GUICtrlSetState($CheckboxSAP, $GUI_ENABLE) GUICtrlSetState($Checkbox_Integra, $GUI_ENABLE) GUICtrlSetState($Checkbox_Visu, $GUI_ENABLE) GUICtrlSetState($Checkbox_Monitor, $GUI_ENABLE) Else GUICtrlSetState($CheckboxSAP, $GUI_UNCHECKED) GUICtrlSetState($Checkbox_Integra, $GUI_UNCHECKED) GUICtrlSetState($Checkbox_Visu, $GUI_UNCHECKED) GUICtrlSetState($Checkbox_Monitor, $GUI_UNCHECKED) GUICtrlSetState($CheckboxSAP, $GUI_DISABLE) GUICtrlSetState($Checkbox_Integra, $GUI_DISABLE) GUICtrlSetState($Checkbox_Visu, $GUI_DISABLE) GUICtrlSetState($Checkbox_Monitor, $GUI_DISABLE) EndIf EndFunc func _start() Ini_Write("Password","H:\passwd.ini","Section","Key", guictrlread($passwort)) Ini_Write("User","H:\passwd.ini","User","Key", guictrlread($Benutzername)) $Value = Ini_Read("Password","H:\passwd.ini","Section","Key") $user = Ini_Read("User","H:\passwd.ini","User","Key") Local $hwndCitrix, $timer Local $sClass_btnOK = '[NAME:buttonOK]', $sClass_inpUser = '[NAME:textBoxUser]', $sClass_inpPW = '[NAME:textBoxPass]' Local $sText_btnOK = '&Anmelden' Run("C:\Program Files (x86)\Citrix\SelfServicePlugin\SelfService.exe -logon") $hwndCitrix = WinWait("Citrix Receiver") msgbox(0,"", $user) $timer = TimerInit() while ControlGetText($hwndCitrix, '', $sClass_btnOK) == $sText_btnOK sleep(100) $ret1 = ControlSetText($hwndCitrix, '', $sClass_inpUser, 'emea\' & $user) $ret2 = ControlSetText($hwndCitrix, '', $sClass_inpPW, $Value) ;~ if ($ret1 = 0) or ($ret2 = 0) then ContinueLoop if ($ret1 == '') or ($ret2 == '') then ContinueLoop ControlClick($hwndCitrix, '', $sClass_btnOK) sleep(1000) Run("C:\Program Files (x86)\Citrix\SelfServicePlugin\SelfService.exe") if TimerDiff($timer) > 5000 then _warten($hwndCitrix, $sClass_btnOK, $sText_btnOK) Sleep(500) wend EndFunc func _warten($hwndCitrix, $sClass_btnOK, $sText_btnOK) MsgBox(0x10,"Fehler","Uuuups...da ist etwas schiefgelaufen. "& @CRLF & @CRLF & "Bitte beim Chef Melden und Daimlerdaten manuell eintragen.") while ControlGetText($hwndCitrix, '', $sClass_btnOK) == $sText_btnOK sleep(100) wend endfunc Func Ini_Write($Password,$Filename,$Section,$Key,$Value) _Crypt_Startup() if @error Then Return SetError(1,@error,False) $hKey =_Crypt_DeriveKey($Password,$CALG_RC4) if @error Then Return SetError(2,@error,False) $ByteStruct = DllStructCreate("BYTE[" & StringLen($Value) & "]") DllStructSetData($ByteStruct,1,$Value) $StrByte = String(DllStructGetData($ByteStruct,1)) $EncryptedValue = _Crypt_EncryptData($StrByte,$hKey,$CALG_USERKEY) if @error Then Return SetError(3,@error,False) IniWrite($Filename,$Section,$Key,$EncryptedValue) if @error Then Return SetError(4,@error,False) _Crypt_DestroyKey($hKey) _Crypt_Shutdown() Return SetError(0,0,True) FileSetAttrib("H:\passwd.ini", "+S") EndFunc Func Ini_Read($Password,$Filename,$Section,$Key,$Default = "Benutzername") $EncryptedValue = IniRead($Filename,$Section,$Key,$Default) if $EncryptedValue == $Default Then Return SetError(1,0,$Default) _Crypt_Startup() if @error Then Return SetError(2,@error,$Default) $hKey =_Crypt_DeriveKey($Password,$CALG_RC4) if @error Then Return SetError(3,@error,$Default) $Binary = _Crypt_DecryptData($EncryptedValue,$hKey,$CALG_USERKEY) if @error Then Return SetError(4,@error,$Default) $StrByte = BinaryToString($Binary) if @error Then Return SetError(5,@error,$Default) $ByteStruct = DllStructCreate("BYTE[" & BinaryLen($StrByte) & "]") DllStructSetData($ByteStruct,1,$StrByte) $CharStruct = _ DllStructCreate("CHAR[" & DllStructGetSize($ByteStruct) & "]",DllStructGetPtr($ByteStruct)) _Crypt_DestroyKey($hKey) _Crypt_Shutdown() Return SetError(0,0,DllStructGetData($CharStruct,1)) EndFunc Func _citrix_run() Run ( "C:\Program Files (x86)\Citrix\SelfServicePlugin\SelfService.exe") EndFunc Func _monitor_run() EndFunc Func _admin_save() IniWrite("H:\pfad.ini", "ini", "wert", "aktiv") EndFunc
ab zeile 392 ist der Login teil...
und naja, dass da funktionslose zeilen drin sind ist mir bewusst....habe an mehreren seiten angefangen und das sind meine ersten versuche "ohne" hilfe (außer vom bitnugger hier aus dem forum mit dem controlsettext)
habe zuviel vba geschrieben
danke trotzdem
-
hmmm, ich glaube ich bin gerade zur traurigen Erkenntnis gekommen, dass unsere IT doof ist...denn sie wussten nicht, was sie tun...
wenn die controlsettext Aktion nicht hinhaut, soll das Script nach 5 Sekunden ja in die Warteschleife gehen. Das wird ja über eine IF Abfrage mit Controlgettext abgefragt. Die Warteschleife habe ich um eine MSGbox erweitert. Sollte also die Warteschleife gestartet werden, sollte die MSGBox erscheinen....tut sie aber nicht...
AutoItfunc _warten($hwndCitrix, $sClass_btnOK, $sText_btnOK) MsgBox(0x10,"Fehler","Uuuups...da ist etwas schiefgelaufen. "& @CRLF & @CRLF & "Bitte beim Chef melden und die Daten manuell eintragen.") while ControlGetText($hwndCitrix, '', $sClass_btnOK) == $sText_btnOK sleep(100) wend endfunc
über die abfrage des Inputs hat es bis dato hingehauen....bin also gerade am grübeln, weil dieses ja auch control befehl ist, was ich für eine alternative habe -
ich ochse....habe es gerade selber bemerkt, dass man die in der ersten Funktion quasi losschicken muss und in der zweiten annehmen
danke fürs erste...nun geht's ans testen
-
ich schäme mich zu fragen, doch wie bekomme ich mehrere variablen übergeben? denn jetzt meckert er logischerweise beim $sClass_btnOK das sich nicht deklariert ist...mit
func _warten($hwndCitrix, $sClass_btnOK)
geht es leider nicht...
-
teste ich gleich. DAAANKE
Lieben Gruß tommii
-
hi
so sollte es funktionieren...
AutoIt
Alles anzeigenLocal $hwndCitrix, $timer Local $sClass_btnOK = '[NAME:buttonOK]', $sClass_inpUser = '[NAME:textBoxUser]', $sClass_inpPW = '[NAME:textBoxPass]' Local $sText_btnOK = '&Anmelden' Run("C:\Program Files (x86)\Citrix\SelfServicePlugin\SelfService.exe -logon") $hwndCitrix = WinWait("Citrix Receiver") $timer = TimerInit() while ControlGetText($hwndCitrix, '', $sClass_btnOK) == $sText_btnOK sleep(100) $ret1 = ControlSetText($hwndCitrix, '', $sClass_inpUser, 'emea\' & $user) $ret2 = ControlSetText($hwndCitrix, '', $sClass_inpPW, $Value) if ($ret1 = 0) or ($ret2 = 0) then ContinueLoop ControlClick($hwndCitrix, '', $sClass_btnOK) if TimerDiff($timer) > 5000 then _warten() Sleep(500) wend func _warten() while ControlGetText($hwndCitrix, '', $sClass_btnOK) == $sText_btnOK sleep(100) wend endfunc
hi 4ern...ich stehe gerade etwas auf dem schlauch, das einzubetten, da ich das ganze ja schon in einer Funktion starte ....also meine ausgangssituation ist folgende:
AutoIt
Alles anzeigenfunc _start() Ini_Write("Password","H:\passwd.ini","Section","Key", guictrlread($passwort)) Ini_Write("User","H:\passwd.ini","User","Key", guictrlread($Benutzername)) $Value = Ini_Read("Password","H:\passwd.ini","Section","Key") $user = Ini_Read("User","H:\passwd.ini","User","Key") Run("C:\Program Files (x86)\Citrix\SelfServicePlugin\SelfService.exe -logon") sleep(500) WinWaitActive("Citrix Receiver") sleep (500) ControlSetText("Citrix Receiver", "", "[NAME:textBoxUser]", "emea\" & $user) ControlSetText("Citrix Receiver", "", "[NAME:textBoxPass]", $Value) sleep(500) $check_input = ControlGetText("Citrix Receiver", "", "[NAME:textBoxUser]") If $check_input == '' Then MsgBox(0x10,"Fehler","Uuuups...da ist etwas schiefgelaufen. "& @CRLF & @CRLF & "Bitte beim Chef Melden und Daimlerdaten manuell eintragen.") call ("warten") Else ControlClick("Citrix Receiver", "", "[NAME:buttonOK]") EndIf sleep(5000) Run("C:\Program Files (x86)\Citrix\SelfServicePlugin\SelfService.exe") EndFunc Func warten() While ControlCommand("Citrix Receiver", "", "[NAME:buttonOK]", "IsChecked") ;~ solange der Anmeldebutton nicht gedrückt wurde ---> warten Sleep(10) WEnd MsgBox(0,"","Angemeldet") EndFunc
wenn ich meinen teil jetzt durch deinen teil ersetze, bekomme ich einen fehler: also erstmal hier der code mit deinem entwurf:
AutoIt
Alles anzeigenfunc _start() Ini_Write("Password","H:\passwd.ini","Section","Key", guictrlread($passwort)) Ini_Write("User","H:\passwd.ini","User","Key", guictrlread($Benutzername)) $Value = Ini_Read("Password","H:\passwd.ini","Section","Key") $user = Ini_Read("User","H:\passwd.ini","User","Key") Local $hwndCitrix, $timer Local $sClass_btnOK = '[NAME:buttonOK]', $sClass_inpUser = '[NAME:textBoxUser]', $sClass_inpPW = '[NAME:textBoxPass]' Local $sText_btnOK = '&Anmelden' Run("C:\Program Files (x86)\Citrix\SelfServicePlugin\SelfService.exe -logon") $hwndCitrix = WinWait("Citrix Receiver") $timer = TimerInit() while ControlGetText($hwndCitrix, '', $sClass_btnOK) == $sText_btnOK sleep(100) $ret1 = ControlSetText($hwndCitrix, '', $sClass_inpUser, 'emea\' & $user) $ret2 = ControlSetText($hwndCitrix, '', $sClass_inpPW, $Value) if ($ret1 = 0) or ($ret2 = 0) then ContinueLoop ControlClick($hwndCitrix, '', $sClass_btnOK) if TimerDiff($timer) > 5000 then _warten() Sleep(500) wend EndFunc func _warten() while ControlGetText($hwndCitrix, '', $sClass_btnOK) == $sText_btnOK sleep(100) wend endfunc
der fehler:
in Zeile 27: "P:\Bremen\[...]\abc.au3"(420,34) : warning: $hwndCitrix: possibly used before declaration.
liegt das an der "lokalen" Deklaration der variabeln, da ich sie in einer Funktion danach wieder anspreche? Wenn ja, wie mache ich sie global?...danke im voraus
-
Klasse danke, ich Check das auf der Arbeit nachher fix und melde mich dann. Vielen dank
Lieben Gruß tommii
-
-
sodele ja die if abfrage funktioniert und den call befehl habe ich entfernt...leider bin ich mit der schleife noch nicht weiter...
also wenn kein control gefunden wurde, möchte ich in eine schleife, bis der okay button gedrückt wurde
Spoiler anzeigen
Title: Citrix Receiver Class: WindowsForms10.Window.8.app.0.17ad52b Position: 746, 366 Size: 428, 307 Style: 0x16C80000 ExStyle: 0x00050101 Handle: 0x00000000000A06EA >>>> Control <<<< Class: WindowsForms10.BUTTON.app.0.17ad52b Instance: 1 ClassnameNN: WindowsForms10.BUTTON.app.0.17ad52b1 Name: buttonOK Advanced (Class): [NAME:buttonOK] ID: 2034324 Text: &Anmelden Position: 140, 191 Size: 85, 23 ControlClick Coords: 49, 14 Style: 0x56012F01 ExStyle: 0x00000000 Handle: 0x00000000001F0A94 >>>> Mouse <<<< Position: 938, 596 Cursor ID: 0 Color: 0x569BDA >>>> StatusBar <<<< >>>> ToolsBar <<<< >>>> Visible Text <<<< &Anmelden Abbrechen Melden Sie sich an 'wiportal-e067' an. &Domäne\Benutzer: &Kennwort: -
Meine programmierkenntnisse kommen aus visual basic....Deswegen call
Naja aber wenn der error sagt nichts übertragen muss ich ja in die warte schleife weil sonst wird das Script ja weiter ausgeführt.....Und da hart es bei mir...Ich versuche es nachher auf der Arbeit mal aber falls jemand da noch nen Ansatz hat wäre ich dankbar
Lieben Gruß tommii
-
Ahoi Matrosen. Nachdem mir hier schon mal so gut geholfen wurde, wende ich mich nochmals an euch, da ich ein wenig auf dem Schlauch stehe. Also
In der Firma arbeiten wir mit dem Citrix XenApp Protal...in dieses logge ich mich automatisch mit folgendem Code ein
CodeRun("C:\Program Files (x86)\Citrix\SelfServicePlugin\SelfService.exe -logon") sleep(500) WinWaitActive("Citrix Receiver") sleep (500) ControlSetText("Citrix Receiver", "", "[NAME:textBoxUser]", "emea\" & $user) ControlSetText("Citrix Receiver", "", "[NAME:textBoxPass]", $Value) sleep(500)
wobei in Zeile 5 $user mein username ist und in Zeile 6 $value das Passwort
so zu meinem Problem...ab und zu spinnen unsere IT Admins und die Gruppenrichtlinien hauen nicht richtig hin. Dann kommt es vor, dass der Befehl ControlSetText einfach keine Daten überträgt. Für den Fall möchte ich eine Abfrage der Inputfelder. Das klappt auch, doch die Warteschleife, bis der Logonbutton manuell gedrückt wird, hängt sich ewig aus...hier mal der komplette codeabschnitt
Code
Alles anzeigenRun("C:\Program Files (x86)\Citrix\SelfServicePlugin\SelfService.exe -logon") sleep(500) WinWaitActive("Citrix Receiver") sleep (500) ControlSetText("Citrix Receiver", "", "[NAME:textBoxUser]", "emea\" & $user) ControlSetText("Citrix Receiver", "", "[NAME:textBoxPass]", $Value) sleep(500) $check_input = ControlGetText("Citrix Receiver", "", "[NAME:textBoxUser]") If $check_input == '' Then MsgBox(0x10,"Fehler","Uuuups...da ist etwas schiefgelaufen. "& @CRLF & @CRLF & "Bitte beim Chef Melden und Daimlerdaten manuell eintragen.") call ("warten") Else ControlClick("Citrix Receiver", "", "[NAME:buttonOK]") EndIf sleep(5000) Func warten() While ControlCommand("Citrix Receiver", "", "[NAME:buttonOK]", "IsChecked") ;~ solange der Anmeldebutton nicht gedrückt wurde ---> warten Sleep(10) WEnd MsgBox(0,"","Angemeldet") EndFunc
haut nicht hin...hier nochmal die Window Infos vom Okaybutton
Spoiler anzeigen
dankt vielmals im Voraus für eure Hilfe...
der tommii
-
eine letzte "Frage" zu speziell diesem Thema. Bei uns auf der Arbeit haben wir zwei Rechner Systeme (Ich bin bei Firma A und über Citrix greifen wir auf die Rechner von Firma B zu, wobei wir für beide Firmen Accounts + rechner zur Verfügung haben)...Bei Firma B klappen die Programme (als Beispiel das von Bitnugger mit dem Selbsterstellen controlfenster + controlsettext)...bei Firma a wird der Befehl "ControlSetText" gekonnt ignoriert, alles andere wird ausgeführt...
ist das IT Technisch möglich bzw. kann sich das jemand erklären=?
danke im voraus
tommii
-
asche auf meinen kopf...ich hätte schwören können, dass wir es gestern schon so probiert haben...vllt. war es einfach nur die 1 Sekunden Verzögerung, die nun zum erfolg führt. fakt ist eh geht jetzt
vielen dank