Beiträge von Schnuffel
-
-
Opt("WinTitleMatchMode", 2)
WinActivate("Excel") -
sorry,
hier nochmal ein Ansatz mit Beschreibung:
[autoit]Opt("WinTitleMatchMode", 2)
[/autoit][autoit][/autoit][autoit]
HotKeySet("{F8}","email_drucken"); setzt die Taste F8 als HotKey zum Ausführen deiner Funktion
HotKeySet("^{F8}","exitprog"); beendet das Prog mit Strg + F8Func email_drucken()
[/autoit][autoit][/autoit][autoit]
ControlSend("Nachricht","","MsoCommandBar3","^p"); sendet an das aktive Fenster (sollte das Email-Fenster sein den Befehl STRG + P zum Anzeigen der Drucker auswahl
WinWait("Drucken","Drucker auswählen",10); wartet auf das Druckerfenster
If WinExists("Drucken","Drucker auswählen") Then
ControlClick("Drucken","Drucker auswählen","[CLASS:Button; INSTANCE:4]"); klickt im Druckerfenster auf Einstellungen
EndIf
EndFuncFunc exitprog()
[/autoit][autoit][/autoit][autoit]
HotKeySet("{F8}"); löscht den HotKey
HotKeySet("^{F8}"); löscht den HotKey
Exit
EndFunc#include <GUIConstants.au3>
[/autoit][autoit][/autoit][autoit]
While 1WEnd
[/autoit]
Die Daten für den ControlSend und ControlClick erhälst Du mit dem AutoIt Info Window.
Damit ersparst Du Dir das mit dem Sleep usw.Aber das Vorgehen liegt ja ganz bei Dir
-
- öffne die AutoIt-Hilfe
- klicke links den Reiter "Index" an
- gebe den Begriff "ie" ein
- arbeite Dich durch die angezeigten Funktionen und übe an den Beispielen
- erstelle ein Script auf Basis der IE.au3
- poste dein Script bei ProblemenFertig
-
hier mal ein Ansatz zum ausbauen...
Spoiler anzeigen
[autoit]Opt("WinTitleMatchMode", 2)
[/autoit] [autoit][/autoit] [autoit]
HotKeySet("{F8}","email_drucken")#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
GUICreate('')
GUISetState()
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
;Case $msg =
;Case $msg =
;Case $msg =
;Case $msg =
EndSwitch
WEndFunc email_drucken()
[/autoit]
;ControlSend("Nachricht","","MsoCommandBar3","!d")
ControlSend("Nachricht","","MsoCommandBar3","^p")
WinWait("Drucken","Drucker auswählen",10)
If WinExists("Drucken","Drucker auswählen") Then
ControlClick("Drucken","Drucker auswählen","[CLASS:Button; INSTANCE:4]")
EndIf
EndFunc -
siehe Hilfe...
_GUICtrlAVI_Create -
also Alt-Tab ist Send("!{TAB}")
ich bin mir im Moment nur nicht ganz im Klaren,
wo die Automatisierung deines Scriptes einsetzen sollSoll Dein Script erkennen, ob eine neue Email angekommen ist, oder machst Du das noch von Hand...
Soll "nur" das Fenster der geöffneten Email gesteuert werden oder schon vorher in Outlook direkt ... -
Hab Dir mal eine einface Addition eingebaut ohne Variablen.
Das kann man natürlich ausbauen und verbessern...
z.B. Hinter das Ergebnis ein leeres Label setzen, in das dann n"nur" das Ergebnis gesetzt wird,
oder eine Funktion schreiben, der dann nur die Werte und der RechenOperand übergeben werden ... und und undSpoiler anzeigen
[autoit]#include <ButtonConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Rechner", 633, 447, 192, 124)
$Ergebnis = GUICtrlCreateLabel("Ergebnis=", 344, 24, 204, 36)
$Addition = GUICtrlCreateButton("Addieren (+)", 48, 144, 161, 73, $WS_GROUP)
$Multiplikation = GUICtrlCreateButton("Multiplizieren (*)", 48, 240, 161, 73, $WS_GROUP)
$Subtraktion = GUICtrlCreateButton("Subtrahieren (-)", 248, 144, 161, 73, $WS_GROUP)
$Division = GUICtrlCreateButton("Dividieren (/)", 248, 240, 161, 73, $WS_GROUP)
$Zahl1 = GUICtrlCreateInput("1. Zahl", 32, 16, 97, 21)
$Zahl2 = GUICtrlCreateInput("2. Zahl", 32, 56, 97, 21)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###While 1
[/autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Addition
GuiCtrlSetData($Ergebnis,"Ergebnis= " & GuiCtrlRead($Zahl1) + GUICtrlRead($Zahl2))
Case $Multiplikation
Case $Subtraktion
Case $Division
EndSwitch
WEnd -
um Dir Dein Problem zu veranscheulichen ist es vorteilhaft, wenn Du Deinen bisherigen Code hier postest.
Dann können wir diesen korrigieren und damit das Verständnis herstellen.So kann ich nur sagen Input in Variable auslesen mit GuiCtrlRead,
Rechenoperation ausführen danach Variablenwert mit GuiCtrlSetData in das InputFeld schreiben -
Hallo Gunni,
der Send-Befehl simuliert einfach nur Tasten die gedrückt werden.
Diese werden i.d.R. an das zu dem Zeitpunkt aktive Fenster gesendet.
So als ob Du eben selbst mit der Tastatur schreiben würdest.Zur Steuerung von Fenstern usw. empfiehlt sich dagegen eher ControlSend.
Damit kannst Du gezielt einzelne Controls eines bestimmten Fensters ansprechen.
Um das Control herauszubekommen hast Du ja schon das AutoIt-Info Window entdeckt.Scripte starten in Scite kannst Du mit F5 wenn die Datei auch die Endung .au3 hat. Ansonsten weiß Scite mit der Datei nichts anzufangen ...
Ich hoffe, dass hat schon mal etwas geholfen...
Bei FragenEdit: Ach ja, das mit dem Recorder ist so eine Sache. Der kann nur mit Send umgehen.
D.h. um das wie Du sagst "mühselige eingeben" wirst Du wohl nicht herumkommen, wenn es vernünftig funktionieren soll. -
Pfade mit Leerzeichen müssen in Anführungszeichen übergeben werden.
Wenn Du für den ÜbergabeString schon die " " " verwendest, dann nimm für den Pfad die einfachen " ' " -
Hmmm ich hab keinen Account für Lokalisten.de
Ich denke aber, dass man das durchaus mit
Spoiler anzeigen
[autoit][/autoit] [autoit][/autoit] [autoit]#include <IE.au3>
[/autoit] [autoit][/autoit] [autoit]$ie = _IECreate("www.lokalisten.de")
[/autoit]
$oie = _IEFormGetCollection($ie, 0)
$Username = _IEGetObjByName($oie, "j_username")
_IEFormElementSetValue($Username, "++++++")
$Passwort = _IEGetObjByName($oie, "j_password")
_IEFormElementSetValue($Passwort, "++++++")
_IEFormSubmit ($oie)
sleep(5000)
$sHTML = _IEDocReadHTML ($ie)
If StringInStr($sHTML,"mail.gif") Then MsgBox(0, '', "Eine neue Mail ist da")lösen kann.
Kannst ja den Denkansatz noch umschreiben ... -
Hallo subzero007,
möchtest Du den Ordnerinhalt nach einer bestimmten Datei durchsuchen,
oder in einer bestimmten Datei in dem Ordner nach einer Zeile suchen,
oder in einem Ordner in vielen Dateien nach jeweils einer Zeile suchen??? -
ich kann Dir nicht sagen warum das nicht klappt, aber so klappt es:
Spoiler anzeigen
[autoit]#include <IE.au3>
[/autoit] [autoit][/autoit] [autoit]$ie = _IECreate("www.lokalisten.de")
[/autoit]
$oie = _IEFormGetCollection($ie, 0)
$Username = _IEGetObjByName($oie, "j_username")
_IEFormElementSetValue($Username, "++++++")
$Passwort = _IEGetObjByName($oie, "j_password")
_IEFormElementSetValue($Passwort, "++++++")
_IEFormSubmit ($oie) -
Oscar's Weg ist die perfekte Optimierung
-
einen versuch ich noch
das Script schließt sich, wenn das betreffende Fenster nicht mehr vorhanden ist.
Kann man ja alles anpassen ...Spoiler anzeigen
[autoit]Opt("WinTitleMatchMode",2)
[/autoit] [autoit][/autoit] [autoit]
#Include <Date.au3>
#Include<Misc.au3>
_Singleton("fjrcikszrubcrzknsrcxiks")$title="Mein Spiel" ; Name Deines Spieles oder ein Teil daraus, der sich nicht ändert
[/autoit] [autoit][/autoit] [autoit]$timestart = _NowTime()
[/autoit] [autoit][/autoit] [autoit]
AdlibEnable("_SetTimeInTitle",1000)
While 1WEnd
[/autoit]
Func _SetTimeInTitle()
Local $hour, $min, $sec
$stit_title = WinGetTitle($title)
If $stit_title = "0" Then
Exit
Else
$stit_split = StringSplit($stit_title," |=- ",1)
$timeset = _DateDiff('s',"1970/01/01 "&$timestart, "1970/01/01 "&_NowTime())
_TicksToTime($timeset*1000,$hour,$min,$sec)
If $hour < 10 Then $hour = "0" & $hour
If $min < 10 Then $min = "0" & $min
If $sec < 10 Then $sec = "0" & $sec
WinSetTitle($title,"",$stit_split[1] & " |=- " & $hour&":"&$min&":"&$sec)
EndIf
EndFunc -
so sollte es gehen ...
Spoiler anzeigen
[autoit]Opt("WinTitleMatchMode",2)
[/autoit] [autoit][/autoit] [autoit]
#Include <Date.au3>
$title=WinGetTitle("Mein Spiel")
$timestart = _NowTime()
AdlibEnable("_SetTimeInTitle",1000)#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
GUICreate('')
GUISetState()
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEndFunc _SetTimeInTitle()
[/autoit]
$timeset = _DateDiff('s',"1970/01/01 "&$timestart, "1970/01/01 "&_NowTime())
$hour = Round($timeset/3600,0)
$min = Round(($timeset-($hour*3600))/60,0)
$sec = $timeset-($hour*3600)-($min*60)/60
If $hour < 10 Then $hour = "0" & $hour
If $min <10 Then $min = "0" & $min
If $sec < 10 Then $sec = "0" & $sec
WinSetTitle($title,"",$title& " ----- " & $hour&":"&$min&":"&$sec)
EndFunc -
-
was für einen Tab?
Für Deinen Fall schau Dir mal die Funktion IniRead und IniWrite näher an. -
wenn Du das so machst, was passiert dann... ?
[autoit]
[/autoit]
local $data = GUICtrlRead($Input1)
local $data = GUICtrlRead($Input2)
local $data = GUICtrlRead($Input3)
local $data = GUICtrlRead($Input4)Die Variable $data wird nacheinander 4x deklariert und mit Daten befüllt.
Logischerweise ist am Schluß dieser Anweisung der Inhalt von Deiner Variable der letzte gelesene Wert ...