Änder mal die WinSetStat() zu WinSetState()
Ich bezweifel dass das sonst funktioniert
Beiträge von SEuBo
-
-
Also wenn ich das richtig verstehe ist der Ablauf so:
Deine Anwendung wird gestartet -> Deine Anwendung startet das Script mit dem Browser -> Benutzer macht seine Aktionen -> Nachdem der Browser geschlossen ist, ist die Anwendung am Anfang minimiert.
Du möchtest diese aber in den Vordergrund holen?Einfach vor Zeile 23, also dem Exit,
WinSetState("Titel deiner Applikation",0,@SW_RESTORE)
einfügen. (nicht getestet, kann also auch bullshit sein was ich dir erzähle)
edit: kann auch sein dass du es mit WinActivate("Titel deiner Applikation")
machen musst.. kp -
Das ist echt nur Copy & Paste... >.>
und ein bsischen graue Zellen anstrengenSpoiler anzeigen
[autoit]#include <WindowsConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <IE.au3>
#Include <Timers.au3>HotKeySet("{ESC}","Kill")
[/autoit] [autoit][/autoit] [autoit]
Global Const $WS_EX_COMPOSITED = 0x02000000
$gui = GUICreate("",300,300,0,0, BitOR($WS_SIZEBOX, $WS_POPUPWINDOW, $WS_CLIPCHILDREN), BitOR($WS_EX_TOOLWINDOW, $WS_EX_COMPOSITED));Erstellt ein GUI
GUISetState();Macht es sichtbar
GUISetState(@SW_MAXIMIZE);maximiert es, und...$GUISize = WinGetPos($gui)
[/autoit] [autoit][/autoit] [autoit]
$eIE = _IECreateEmbedded()
GUICtrlCreateObj($eIE, $GUISize[0], $GUISize[1], $GUISize[2], $GUISize[3])
_IENavigate($eIE,"www.google.de")$maxIdle_min = 3 ; <---- Hier deine Minutenzahl eintragen
[/autoit] [autoit][/autoit] [autoit]Do
[/autoit] [autoit][/autoit] [autoit]
sleep(200)
Until _Timer_GetIdleTime() > $maxIdle_min*60*1000Exit
[/autoit] [autoit][/autoit] [autoit]Func Kill()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFuncWhile 1
[/autoit]
sleep(200)
WEndDas schaffste das nächste mal aber auch alleine
-
Ich hab die Stelle mit dem IE mal ein bisschen abgeändert.
Spoiler anzeigen
[autoit]
[/autoit]
$IE = _IECreate()
_IENavigate($IE,$test2,0)So funktioniert es zumindest nach 20 versuchen noch bei mir...
EDIT:
und zack, direkt nach dem post klappts wieder nicht - Denn: Natürlich ohne _IELLoadWait() !Der Grund des Problems ist nämlich (wahrscheinlich) genau dieses... Ich nehme mal an, dass du genau wie ich ein ungeduldiger Mensch bist, der alles sofort wieder wegklickt.. durch _IELoadWait wartet autoIt darauf, dass der IE die Seite als fertig geladen abstempelt. da der IE aber schon vor diesem Zustand geschlossen wird, wartet AUtoit unendlich lange darauf dass die Seite fertig lädt.
-
Gerne doch Clipboard kannst du mit ClipPut(GUICtrlRead($1)) verwirklichen...
-
Spoiler anzeigen
[autoit]#include <ButtonConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt('GUICloseOnESC',1)
#Region ### START Koda GUI section ### Form=
$Zwischenspeicher = ""
$Zwischenspeicher2 = ""
$operator = ""
$Title = GUICreate("Taschenrechner", 210, 228, 200, 100)
$menu1 = GUICtrlCreateMenu("Main")
$menu11 = GUICtrlCreateMenuitem("About", $menu1)
$menu12 = GUICtrlCreateMenuitem("Exit", $menu1)
$1 = GUICtrlCreateInput("", 8, 10, 193, 21)
GUICtrlSetResizing(-1, $GUI_DOCKRIGHT+$GUI_DOCKHEIGHT)
$zahl1 = GUICtrlCreateButton("1", 8, 120, 33, 33, $WS_GROUP)
$zahl2 = GUICtrlCreateButton("2", 48, 120, 33, 33, $WS_GROUP)
$zahl3 = GUICtrlCreateButton("3", 88, 120, 33, 33, $WS_GROUP)
$zahl4 = GUICtrlCreateButton("4", 8, 80, 33, 33, $WS_GROUP)
$zahl5 = GUICtrlCreateButton("5", 48, 80, 33, 33, $WS_GROUP)
$zahl6 = GUICtrlCreateButton("6", 88, 80, 33, 33, $WS_GROUP)
$zahl7 = GUICtrlCreateButton("7", 8, 40, 33, 33, $WS_GROUP)
$zahl8 = GUICtrlCreateButton("8", 48, 40, 33, 33, $WS_GROUP)
$zahl9 = GUICtrlCreateButton("9", 88, 40, 33, 33, $WS_GROUP)
$Zahl0 = GUICtrlCreateButton("0", 8, 160, 73, 33, $WS_GROUP)
$komma = GUICtrlCreateButton(",", 88, 160, 33, 33, $WS_GROUP)
$plus = GUICtrlCreateButton("+", 128, 160, 33, 33, $WS_GROUP)
$minus = GUICtrlCreateButton("-", 128, 120, 33, 33, $WS_GROUP)
$mal = GUICtrlCreateButton("*", 128, 80, 33, 33, $WS_GROUP)
$durch = GUICtrlCreateButton("/", 128, 40, 33, 33, $WS_GROUP)
$gleich = GUICtrlCreateButton("=", 168, 120, 33, 73, $WS_GROUP)
$Pi = GUICtrlCreateButton("Pi", 168, 80, 33, 33, $WS_GROUP)
$clear = GUICtrlCreateButton("Clear", 168, 40, 33, 33, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###While 1
[/autoit] [autoit][/autoit] [autoit]$nMsg = GUIGetMsg()
[/autoit] [autoit][/autoit] [autoit]
Switch $nMsgCase $menu11
[/autoit] [autoit][/autoit] [autoit]
MSGBox(1, "About", "Scripter: Tim 'Schrubber' Lübbe")Case $menu12, $GUI_EVENT_CLOSE
[/autoit] [autoit][/autoit] [autoit]
MSGBox(1, "Exit", "Danke, dass sie den Taschenrechner benutzt haben.")
ExitCase $clear
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData ($1, "")Case $zahl0
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
if(GUICtrlRead($1) <> "") then
GUICtrlSetData ($1, GUICtrlRead ($1) & "0")
Else
MSGBox(1, "Error", "Du kannst eine 0 nicht als erste Stelle setzen!")
EndIfCase $zahl1
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData ($1, GUICtrlRead ($1) & "1")Case $zahl2
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData ($1, GUICtrlRead ($1) & "2")Case $zahl3
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData ($1, GUICtrlRead ($1) & "3")Case $zahl4
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData ($1, GUICtrlRead ($1) & "4")Case $zahl5
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData ($1, GUICtrlRead ($1) & "5")Case $zahl6
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData ($1, GUICtrlRead ($1) & "6")Case $zahl7
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData ($1, GUICtrlRead ($1) & "7")Case $zahl8
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData ($1, GUICtrlRead ($1) & "8")Case $zahl9
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData ($1, GUICtrlRead ($1) & "9")Case $plus
[/autoit] [autoit][/autoit] [autoit]
$operator = "+"
$Zwischenspeicher = GUICtrlRead($1)
GUICtrlSetData ($1, "")Case $minus
[/autoit] [autoit][/autoit] [autoit]
$operator = "-"Case $durch
[/autoit] [autoit][/autoit] [autoit]
$operator = "/"Case $mal
[/autoit] [autoit][/autoit] [autoit]
$operator = "*"Case $komma
[/autoit] [autoit][/autoit] [autoit]
MSGBox(1, "Fehler", "Diese Funktion gibt es noch nicht :)")Case $pi
[/autoit] [autoit][/autoit] [autoit]
$1 = "3,141592"Case $gleich
[/autoit] [autoit][/autoit] [autoit]
$Zwischenspeicher2 = GUICtrlRead($1)
if($operator = "+") Then
MSGBox(1, "Ergebnis", $Zwischenspeicher + $Zwischenspeicher2)ElseIf($operator = "-") Then
[/autoit] [autoit][/autoit] [autoit]
MSGBox(1, "Ergebnis", $Zwischenspeicher - $Zwischenspeicher2)ElseIf($operator = "*") Then
[/autoit] [autoit][/autoit] [autoit]
MSGBox(1, "Ergebnis", $Zwischenspeicher * $Zwischenspeicher2)ElseIf($operator = "/") Then
[/autoit] [autoit][/autoit] [autoit]
MSGBox(1, "Ergebnis", $Zwischenspeicher / $Zwischenspeicher2)Else
[/autoit] [autoit][/autoit] [autoit]
MSGBox(1, "Error", "Es ist ein Fehler aufgetreten. Bitte wenden sie sich an den Scripter!")EndIf
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]EndSwitch
[/autoit]
WENDHab nur Zeile 90 verändert in
[autoit]$Zwischenspeicher = GUICtrlRead($1)
[/autoit]
da $Zwischenspeicher ja keine GUIControl sondern ne variable ist.Und Zeile 109 zu
[autoit]
[/autoit]
$Zwischenspeicher2 = GUICtrlRead($1)
Da $1 eine GUIControl, und nicht nur ne variable ist.EDIT: außerdem Zeile 53 zu
[autoit]if(GUICtrlRead($1) <> "") then
[/autoit] -
Schau dir mal ControlSend() an. Vielleicht hilft dir das ja weiter.
-
Hier ist nur ein 5 mins ding aber ist ungefähr das was du haben möchtest.
[autoit]
Mit dem FF geht das glaub ich auch, dafür musst du dir aber die FF.au3 besorgen. und das ganze hat glaub ich ne andere syntax. benutz selbst aber nur IE.au3 deswegen kann ichs dir net genau sagen...#include <WindowsConstants.au3>
[/autoit][autoit][/autoit][autoit]
#include <GUIConstantsEx.au3>
#include <IE.au3>
HotKeySet("{ESC}","Kill")$gui = GUICreate("",300,300,0,0, $DS_SETFOREGROUND);Erstellt ein GUI
[/autoit][autoit][/autoit][autoit]
GUISetState();Macht es sichtbar
GUISetState(@SW_MAXIMIZE);maximiert es, und...$GUISize = WinGetPos($gui) ;fragt pos. und grösse deines Fensters ab
[/autoit][autoit][/autoit][autoit]
;~ $GUISize[0] wäre x-position
;~ $GUISize[1] wäre y-position
;~ $GUISize[2] wäre breite
;~ $GUISize[3] wäre höhe
$eIE = _IECreateEmbedded()
GUICtrlCreateObj($eIE, $GUISize[0], $GUISize[1], $GUISize[2], $GUISize[3])
_IENavigate($eIE,"www.google.de")
Func Kill()
Exit
EndFuncWhile 1
[/autoit]
sleep(200)
WEnd -
Benutz für GUICtrlCreateTab() den Style $TCS_MULTILINE
Also Zeile 6
[autoit]$Tab1 = GUICtrlCreateTab(144, 80, 289, 193,$TCS_MULTILINE)
[/autoit] -
Geht mir auch immer so... 2-3 Stunden arbeitet man ohne Lösungsansatz, dann braucht man nochmal 20 mins für sienen Forumpost, und 10 min nachdem man abgeschickt hat findet man irgendwie die Lösung...
PS: wegen dem Passwort - ich würde das Passwort noch mit _stringencrypt oder zumindest mit _stringReverse ein bisschen unkenntlicher machen.
-
Und einfacher gesagt: Es gibt Standard- und Nicht-Standard-Funktionen.
Standardfunktionen sind immer in deinem Script. (zb. GUICreate() )
Nichtstandardfunktionen müssen erst eingebunden werden. dies dient denke ich mal dazu, platz zu sparen (mehr standardfunktionn = größere scripte (?)), und eröffnet der Community die möglichkeit benutzerdefinierte Funtkionen zu erstellen.wenn du zb. einen Internet explorer fernsteuern willst, kannst du dafür funktinoen wie
_IENavigate() benutzen. und damit eben diese Funktionen klappen, musst die Datei, die die funktion definiert (IE.au3) erst eingebunden werden. Ansonsten weiß das Script ja nicht was mit dem Befehl _IENavigate zu tun ist. -
Ein bisschen Code zur veranschaulichung wäre nicht schlecht.
Was wird wann wo gespeichert und an welcher stelle soll er was überprüfen
Poste doch einfach mal dein script. -
Leg doch einfach eine .ini auf dem Server an mit
[Version]
Version = 1.0.0.1
UpdateDir = http://www.deinserver.de/verzeichniss/Datei.exedie datei hat einen festen platz auf dem Server. Beim klick auf den Update Button kannst du die Datei mit InetGet() holen, und mit IniRead dann überprüfen, ob die aktuelle Version anders ist als die auf dem Server.
[autoit]$AktuelleVersion = "1.0.0.0"
[/autoit]
InetGet("http://www.deinserver.de/version.ini","version.ini",1)
If IniRead("version.ini","Version","Version","") <> $AktuelleVersion Then
InetGet(IniRead("version.ini","Version","UpdateDir",""),@ScriptName,1)
EndIfIrgendwie sowas... nur ne Idee..
-
-
Schade da warste wohl doch noch schneller als ich. Wollte nämlich grade meine Version mit IniReadSection hier posten
-
Wegen der Tippfehler - Lass es doch einfach hiermit eintragen:
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <ComboConstants.au3>
#include <GUIComboBox.au3>
GUICreate("Eintragen...",160,130)
GUISetFont(12)
$DropDownListe = GUICtrlCreateCombo("", 20, 20, 120, 35)
$Abteilungsnummer = 1
While IniRead("Abteilung.ini","AbteilName","Abteilung"&$Abteilungsnummer,"") <> ""
$AbteilungsName = IniRead("Abteilung.ini","AbteilName","Abteilung"&$Abteilungsnummer,"")
GUICtrlSetData( $DropDownListe, $AbteilungsName,"" )
$Abteilungsnummer = $Abteilungsnummer + 1
WEnd
If IniRead("Abteilung.ini","AbteilName","Abteilung1","") <> "" Then
_GUICtrlComboBox_SetCurSel($DropDownListe, 0)
EndIf
$Input = GUICtrlCreateInput("",20,50,120,25)
$Speichern = GUICtrlCreateButton("Eintragen..", 20,80,120,25)GUISetState()
[/autoit]
;--
Func Speichern()
$Abteilungsnummer = 0
DO
$Abteilungsnummer = $Abteilungsnummer + 1
If IniRead("Abteilung.ini","AbteilName","Abteilung"&$Abteilungsnummer,"") = "" Then ExitLoop
Until IniRead("Abteilung.ini","AbteilName","Abteilung"&$Abteilungsnummer,"") = GUICtrlRead($DropDownListe)
IniWrite("Abteilung.ini","AbteilName","Abteilung"&$Abteilungsnummer,GUICtrlRead($DropDownListe))
IniWrite("Abteilung.ini","Abteilungen",GUICtrlRead($DropDownListe),GUICtrlRead($Input))
MsgBox(0,"","Speichern Erfolgreich",1)
ShellExecute(@ScriptName)
Exit
EndFunc
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_ClOSE
Exit
Case $Speichern
Speichern()
EndSwitch
WEndHabs nur auf die schnelle gemacht ist also weder schick, noch kann ich für 100% funktionalität garantieren...
-> Damit es auch funktioniert muss es vorher compiliert werden (!)
-
Hmm das macht das ganze ein bisschen komplizierter.
Ich hab mir hier was überlegt - da ich selbst noch anfägner bin gibts es mit sicherheit bessere LösungenDeine Abteilung.ini sieht dann so aus:
Spoiler anzeigen
[AbteilName]
Abteilung1=Aufträge
Abteilung2=Technisch[Abteilungen]
Aufträge=110
Technisch=220Und dein Script so:
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <ComboConstants.au3>
;--
GUICreate("")
;--> Hier gehts um die Wurst
$DropDownListe = GUICtrlCreateCombo("", 100, 100, 100, 30, $CBS_DROPDOWNLIST)
$Abteilungsnummer = 1
While IniRead("Abteilung.ini","AbteilName","Abteilung"&$Abteilungsnummer,"") <> ""
$AbteilungsName = IniRead("Abteilung.ini","AbteilName","Abteilung"&$Abteilungsnummer,"")
GUICtrlSetData( $DropDownListe, $AbteilungsName,"" )
$Abteilungsnummer = $Abteilungsnummer + 1
WEndGUISetState()
[/autoit]
;--
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_ClOSE
Exit
EndSwitch
WEndJetzt muss aber bei jedem eintrag der Name UND der wert eingetragen werden. Also 2 Werte.
Gruß SEuBo -
Probier es mal in etwa so:
[autoit]#include <GUIConstantsEx.au3>
[/autoit][autoit][/autoit][autoit]
#include <ComboConstants.au3>
;--
GUICreate("")
;--> Hier gehts um die Wurst
$DropDownListe = GUICtrlCreateCombo("", 100, 100, 100, 30, $CBS_DROPDOWNLIST)
$Abteilungsnummer = 1
While IniRead("Abteilung.ini","Abteilungen","Abteilung"&$Abteilungsnummer,"") <> ""
GUICtrlSetData( $DropDownListe, "Abteilung "&$Abteilungsnummer,"" )
$Abteilungsnummer = $Abteilungsnummer + 1
WEndGUISetState()
[/autoit]
;--
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_ClOSE
Exit
EndSwitch
WEndNicht perfekt aber sollte seinen Zweck erfüllen
Erklärung:
Am anfang erstellt er die Dropdownliste. Diese ist zunächst leer. Dann beginnt er eine Schleife
Wenn das Auslesen von "Abteilung"&$Abteilungsnummer (Was beim ersten Durchlauf "Abteilung1" entspricht) KEINEN leeren String ausgibt, dann trägt er "Abteilung 1" in die Dropdownliste ein.
Danach erhöht er die Variable $Abteilungsnummer um 1. Beim nächsten Schleifendurchlauf macht er also das gleiche wie grade, nur mit "Abteilung2". Wenn dies wieder keinen leeren String ergibt, geht das gleiche SPiel mit Abteilung3 von vorne los. Ansonsten hört er auf einzutragen.
(While IniRead("Abteilung.ini","Abteilungen","Abteilung"&$Abteilungsnummer,"") <> "") -
Im zweifelsfall poste doch einfach mal den Link. Dann können wir uns den wenigstens mal anschauen
-
Hallo liebes Forum,
Zur verschönerung meines GUI's habe ich vor in einige der Buttons Bilder einzubauen. Soweit ja kein Problem, denn mit GUICtrlSetImage() geht das ja leicht von der Hand.
Nun hab ich allerdings das Problem, dass ich bei bestimmten Buttons gerne das Icon HINTER und nicht VOR dem Text stehen sollen.Habe schon etliche Seiten im Netz durchsucht, und auch die Deutsche Hilfe zu Rate gezogen aber ich finde einfach nirgendwo eine solche Möglichkeit.
Non-Plus-Ultra des ganzen wäre natürlich, wenn ich das Icon innerhalb des Buttons positionieren könnte. Also bei einem Buttons Ganz links an den Rand, bei dem anderen erst nach 5 pixeln. Das ist aber nicht zwingend erforderlich, aber wäre so zu sagen das Sahnehäubchen.
Standartsituation ist ja diese hier:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
AutoItSetOption("GUIOnEventMode", 1)
;--
GUICreate("")
;--> Hier gehts um die Wurst
GUICtrlCreateButton("Buttontext", 50, 150, 200, 30)
GUICtrlSetImage(-1, "shell32.dll",-145)GUISetState()
[/autoit]
;--
GUISetOnEvent($GUI_EVENT_CLOSE, "Kill")
Func Kill()
Exit
EndFunc
;--
While 1
sleep(20)
WEndWäre über einen Gedankenblitz der zur Lösung beiträgt sehr erfreut
Gruß, SEuBo