Vielen Dank. Werde es ausprobieren.
Beiträge von Helveticus
-
-
Ich hab doch noch eine Frage. Und zwar wie kann man in einem Programm z.B. Notepad die Navigationsleiste benutzen? Also z.B. auf Format --> Zeilenumbruch klicken? Also mit MouseClick würde das sicher gehen, aber das geht doch sicher auch einfacher.
-
Ich danke dir.
-
Ich danke euch.
Ist folgendes eigentlich möglich?
[autoit]WinWaitActive("Notepad OR Explorer", "", 30)
[/autoit]Also das Skript soll warten bis eines der beiden Fenster Notepad oder Explorer offen ist. Oder kann man das anders machen?
-
Hallo
Wie kann man ein Fenster auf eine bestimmte grösse verkleinern oder vergrössern? Ich meine jetzt nicht maximieren, da weiss ich es wie das geht. Und wie kann man ein Fenster verschieben?
-
Es liegt am Programm. Kann man nichts machen.
-
Um mit @SW_SHOW anzeigen zu lassen, müsste ich ja extra ein Skript schreiben und jedes Mal dieses Skript ausführen. Ich erstelle ein Skript für Automatisierung und da soll eben ein Programm minimiert werden, was auch super klappt. Nach einer gewissen Zeit soll das Programm dann wieder maximiert und beendet werden. Das Programm soll minimiert werden damit die Sicht auf den Desktop frei ist.
-
Hallo
Angenommen man verstecke ein Fenster mit
[autoit]WinSetState("[Class:XX]", "", @SW_HIDE)
[/autoit]Wie kann man das Fenster dann wieder manuell hervorholen, also ohne AutoIt Code?
Ich habe zudem noch ein Problem mit @SW_MAXIMIZE. Das Fenster minimieren funktioniert super, wenn ich es aber dann mit @SW_MAXIMIZE wieder maximieren möchte, klappt es ungefähr jedes 3. Mal nicht und es passiert entweder gar nichts oder das Fenster öffnet sich zwar aber bleibt so grau. Warum?
-
Vielen Dank Mahagon. Werde es so probieren.
EDIT: Es hat super funktioniert. Du bist mein Held, Mahagon.

-
Ich habs mal probiert. Habe noch zwei Fragen.
Erste Frage. Bei
[autoit]$FileList = _FileListToArray("\\xx")
[/autoit]greife ich auf einen Netzwerkspeicher zu und da muss man ein Benutzernamen und Passwort eingeben. Wie kann ich das oben einflechten?
Zweite Frage. Ich habe bisher folgendes
[autoit]#Include <File.au3>
[/autoit][autoit][/autoit][autoit]$FileList = _FileListToArray("\\xx")
[/autoit][autoit][/autoit][autoit]$FileNumber = $FileList[0]
[/autoit][autoit][/autoit][autoit]
$Date[$FileList[0]]If $FileNumber > 3 Then
[/autoit]
For $i = $FileNumber to 1 Step -1
$Date[$i] = FileGetTime($FileList[$i], 1, 1)
NextAber jetzt hänge ich. Würde sicher auch noch einfacher gehen.
Ich weiss nicht mehr weiter.
-
Hallo
Ich habe einen Ordner auf einem Netzlaufwerk. In diesem Ordner sind Backups. Ich möchte nun jede Woche bevor automatisch ein Backup erstellt wird, mit einem AutoIt oder Batch Skript die ältesten Dateien löschen, so dass nur 3 Dateien vorhanden sind. Also idealerweise soll jede Woche das älteste Backup gelöscht werden, so dass noch 3 Backups vorhanden sind. Falls aber einmal kein Backup erstellt wird, soll nichts gelöscht werden oder wenn innerhalb einer Woche mehrere Backups erstellt werden, sollen einfach so viele gelöscht werden, so dass noch 3 Backups vorhanden sind.
Wie geht das?
-
VIelen Dank Bert.
Ich habe noch eine Frage. Bei z.B. RunAs steht beim Rückgabewert für Fehler "Gibt 0 zurück und setzt @error auf ungleich Null.". Heisst das, dass @error auf 1 gesetzt wird?
-
Ich danke dir. Was ist denn ein COM Error?
-
Aber wenn @error bei jedem Aufruf auf 0 gesetzt wird, wie kann dann Error auf 2 gesetzt werden? Und was ist ein COM Error?
-
Jupi jetzt läufts. Vielen Dank.
If @error Then... würde auch funktionieren, oder?
Ich habe noch eine kleine Frage und zwar zu folgendem
[autoit]If @error == 1 Then
[/autoit]
$Body = "Test2"
$rc = _INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl)
If @error Then
For $i = 5 to 1 Step -1
$rc = _INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl)
If Not @error Then
ExitLoop
EndIf
Sleep(30000)
Next
EndIf
EndIfWenn jetzt @error==1 ist dann wird ja noch einmal versucht zu senden. Wenn das senden dann klappt, wird dann @error=0 gesetzt? Ansonsten würde ja bei der inneren If Abfrage die For Schleife 5 Mal ausgeführt und auch nie verlassen da Not @error nie zutrifft und ich würde etwa 6 Mails bekommen, obwohl es beim zweiten oder dritten Versucht bereits geklappt hat.
Oder anderst gefragt, was ist der Rückgabewert der Funktion INetSmtpMailCom(...)? Bei Fehler @error=1 und bei keinem Fehler @error=0? Werde aus der SMTP Mailer.au3 nicht so schlau.
-
Hallo Freunde
Ich habe schon wieder ein Problem mit einem Skript. Die zwei Skripte Test.au3 und SMTP Mailer.au3 sind auch im Anhang. Hier einmal der Code.
Zuerst die Test.au3.
Spoiler anzeigen
[autoit]#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]AutoIt Version: 3.3.4.0
[/autoit] [autoit][/autoit] [autoit]
Author: myName
Version: 1.0.0
Date: theDateScript Function:
[/autoit] [autoit][/autoit] [autoit]
Template AutoIt script.#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]#include "C:\Programmieren\AutoIt\SMTP Mailer.au3"
[/autoit] [autoit][/autoit] [autoit]BlockInput(1)
[/autoit] [autoit][/autoit] [autoit]$SmtpServer = "asmtp.mail.xxx.ch" ; address for the smtp-server to use - REQUIRED
[/autoit] [autoit][/autoit] [autoit]
$FromName = "Test" ; name from who the email was sent
$FromAddress = "test@test.net" ; address from where the mail should come
$ToAddress = "test@test.net" ; destination address of the email - REQUIRED
$Subject = "Test" ; subject from the email - can be anything you want it to be
$Body = "" ; the messagebody from the mail - can be left blank but then you get a blank mail
$AttachFiles = "" ; the file you want to attach- leave blank if not needed
$CcAddress = "" ; address for cc - leave blank if not needed
$BccAddress = "" ; address for bcc - leave blank if not needed
$Importance = "Normal" ; Send message priority: "High", "Normal", "Low"
$Username = "test@test.net" ; username for the account used from where the mail gets sent - REQUIRED
$Password = "test" ; password for the account used from where the mail gets sent - REQUIRED
$IPPort = 25 ; port used for sending the mail
$ssl = 1 ; enables/disables secure socket layer sending - put to 1 if using httpS
;~ $IPPort=465 ; GMAIL port used for sending the mail
;~ $ssl=1 ; GMAILenables/disables secure socket layer sending - put to 1 if using httpS$Body = "Test1"
[/autoit] [autoit][/autoit] [autoit]
$rc = _INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl)
If @error = 1 Then
$Body = "Test2"
$rc = _INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl)
If @error Then
For $i = 5 to 1 Step -1
$rc = _INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl)
If Not @error Then
ExitLoop
EndIf
Sleep(30000)
Next
EndIf
EndIfBlockInput(0)
[/autoit] [autoit][/autoit] [autoit]Exit
[/autoit]Hier die SMTP Mailer.au3.
Spoiler anzeigen
[autoit]#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]AutoIt Version: 3.3.4.0
[/autoit] [autoit][/autoit] [autoit]
Author: Jos (http://www.autoitscript.com/forum/index.php?showtopic=23860)
Version: 1.0.0
Date: 24.02.2010Script Function:
[/autoit] [autoit][/autoit] [autoit]
Template AutoIt script.#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]#include-once
[/autoit] [autoit][/autoit] [autoit]
#Include<file.au3>Global $oMyRet[2]
[/autoit] [autoit][/autoit] [autoit]
Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Importance="Normal", $s_Username = "", $s_Password = "", $IPPort = 25, $ssl = 0)
[/autoit]
Local $objEmail = ObjCreate("CDO.Message")
$objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>'
$objEmail.To = $s_ToAddress
Local $i_Error = 0
Local $i_Error_desciption = ""
If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress
If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress
$objEmail.Subject = $s_Subject
If StringInStr($as_Body, "<") And StringInStr($as_Body, ">") Then
$objEmail.HTMLBody = $as_Body
Else
$objEmail.Textbody = $as_Body & @CRLF
EndIf
If $s_AttachFiles <> "" Then
Local $S_Files2Attach = StringSplit($s_AttachFiles, ";")
For $x = 1 To $S_Files2Attach[0]
$S_Files2Attach[$x] = _PathFull($S_Files2Attach[$x])
ConsoleWrite('@@ Debug(62) : $S_Files2Attach = ' & $S_Files2Attach & @LF & '>Error code: ' & @error & @LF) ;### Debug Console
If FileExists($S_Files2Attach[$x]) Then
$objEmail.AddAttachment ($S_Files2Attach[$x])
Else
ConsoleWrite('!> File not found to attach: ' & $S_Files2Attach[$x] & @LF)
SetError(1)
Return 0
EndIf
Next
EndIf
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer
If Number($IPPort) = 0 then $IPPort = 25
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort
;Authenticated SMTP
If $s_Username <> "" Then
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password
EndIf
If $ssl Then
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
EndIf
;Update settings
$objEmail.Configuration.Fields.Update
; Set Email Importance
Switch $s_Importance
Case "High"
$objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "High"
Case "Normal"
$objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Normal"
Case "Low"
$objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Low"
EndSwitch
$objEmail.Fields.Update
; Sent the Message
$objEmail.Send
If @error Then
SetError(2)
Return $oMyRet[1]
EndIf
$objEmail=""
EndFunc ;==>_INetSmtpMailCom
;
;
; Com Error Handler
Func MyErrFunc()
$HexNumber = Hex($oMyError.number,
$oMyRet[0] = $HexNumber
$oMyRet[1] = StringStripWS($oMyError.description, 3)
ConsoleWrite("### COM Error ! Number: " & $HexNumber & " ScriptLine: " & $oMyError.scriptline & " Description:" & $oMyRet[1] & @LF)
SetError(1); something to check for when this function returns
Return
EndFunc ;==>MyErrFuncIch habe bei der Test.au3 natürlich die richtigen Daten meines SMTP Servers eingetragen. Mein Problem liegt in der if @error Abfrage in der Test.au3. Wenn ich diese Abfrage weglasse, funktioniert es, ansonsten aber nicht. Wenn ich die If @error = 1 Then Abfrage im Skript habe, dann hängt sich das Skript auf, also es wird pausiert. Mit der If @error = 1 Then Abfrage wollte ich erreichen, dass das E-Mail 5x versucht wird zu senden, falls das erste Mal fehlschlägt.
Was habe ich falsch gemacht? @error wird ja von der SMTP Mailer.au3 auf 1 gesetzt, wenn ein Fehler auftritt, oder?
-
Ja ich komme an das Logon-Fenster ran. Mache Shutdown(16) und der Benutzer wird abgemeldet. Ich weiss nicht wie das Feld heisst, da ich es nicht raufinden kann, da ja kein Benutzer angemeldet ist und somit Au3info.exe nicht läuft. Da muss ich ja raten.
-
Input1, Input2, Edit1, Edit2, Button1 funktionieren nicht. Weiss nicht was ich noch ausprobieren könnte.
-
Ja ich habe die Modi 1 und 2 gestet, 3 und 4 machen ja keinen Sinn. Ich dachte zuerst, dass es vielleicht mit 2 geht, da ja dann das Profil vom Admin geladen wird, war aber nicht so.
EDIT: Mein Skript läuft jetzt als Dienst, also auch wenn niemand angemeldet ist. Mein Problem ist jetzt noch, dass beim Anmeldebildschirm ja Benutzername und Kennwort eingegeben werden müssen und dann auf Ok geklickt werden muss. Wie kann ich aber die Position der Textfelder bzw. des Buttons herausfinden? Au3info.exe läuft ja nicht, da niemand angemeldet ist.
-
Ich danke euch.
ZitatWenn ich das Admin PW weiss, dann kann ich ein Tool schreiben, das ein Autologin macht. (Alles Registry einträge)
Ich weiss nicht, ob das bei mir geblockt wird, kann es ja mal versuchen. Wie geht das denn?
Zitatkönntest du nicht eine *.reg datei erstellen und die mit RunAs ausführen.
ich glaube ich hatte mal sowas ähnliches und das hat geklappt
Das habe ich schon probiert und es klappt eben leider nicht.
Zitatdazu gibts einige threads, der könnte passen
[ gelöst ] Kompal. Script als Dienst starten
Vielen Dank für den Link. Wenn es aber mit der obigen Methode mit dem Tool klappen würde, wäre es eleganter.