Hatten wir schon mal -> [ gelöst ] Kompal. Script als Dienst starten
Beiträge von bernd670
-
-
Es ist z.B. möglich durch Gruppenrichtlinien/Registryeinträge die Ordner für Profilverzeichnisse auf ein anderes Laufwerk und/oder Verzeichnis zu verschieben. In @UserProfileDir und den anderen Makros steht immer der richtige Pfad und Du bist auf der sicheren Seite.
-
Das Quellverzeichnis solltest Du besser so angeben:
[autoit]FileCopy(@UserProfileDir & "\Lokale Einstellungen\Anwendungsdaten\Identities\" & $ident & "\Microsoft\Outlook Express\*.dbx", "C:\Sicherungen\" & $datum, 1)
[/autoit] -
Hallo,
DirCopy kopiert nur ganze Verzeichnisse es ist nich möglich Dateien anzugeben, ersetzte mal DirCopy durch FileCopy dann sollte es gehen!
-
Bitte!
Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
GUICreate("test",700,400)
$tab = GUICtrlCreateTab ( 10, 10, 680, 350)
$tabitem = GUICtrlCreateTabItem ("TestTabItem")
$button1 = GUICtrlCreateButton ("Notizen",640,370)
$checkbox1 = GUICtrlCreateCheckbox ( "Checkbox1", 100,50)
$checkbox2 = GUICtrlCreateCheckbox ("Checkbox2",300,50)
GUISetState(@SW_SHOW)While 1
[/autoit] [autoit][/autoit] [autoit]
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $button1
If ProcessExists("notepad.exe") Then
WinClose("[CLASS:Notepad]", "")
Else
Run("notepad.exe")
EndIf
EndSwitchIf BitAnd(GUICtrlRead($checkbox1),$GUI_CHECKED) = $GUI_CHECKED Then
[/autoit] [autoit][/autoit] [autoit][/autoit]
;~ WinActivate("[Class:Notepad]")
ControlSend("[Class:Notepad]", "", "Edit1", "1")
EndIf
If BitAnd(GUICtrlRead($checkbox2),$GUI_CHECKED) = $GUI_CHECKED Then
;~ WinActivate("[Class:Notepad]")
ControlSend("[Class:Notepad]", "", "Edit1", "2")
EndIf
WEnd -
Ersetzte mal
[autoit]If Not $URL = "about:blank" Then
[/autoit]durch
[autoit]If $URL <> "about:blank" Then
[/autoit] -
In der URL sind Zeichen die in einem Dateinamen nicht enthalten sein dürfen !
Spoiler anzeigen
[autoit]#include <FF.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <File.au3>
#Include <String.au3>HotKeySet("{ESC}", "_EXIT")
[/autoit] [autoit][/autoit] [autoit]Dim $Hilf = False
[/autoit] [autoit][/autoit] [autoit]
Dim $FileContent$FilePath = @DesktopDir & "\Homepages.txt"
[/autoit] [autoit][/autoit] [autoit]$Socket = _FFStart("about:blank")
[/autoit] [autoit][/autoit] [autoit]
FileWrite($FilePath, "about:blank" & @CRLF)While 1
[/autoit] [autoit][/autoit] [autoit]
If $Hilf = False Then _FileReadToArray($FilePath, $FileContent)
$URL = _FFSetGet($Socket, "content.document.location.href")
$Hilf = 0
For $i = 1 To $FileContent[0]
If $URL = $FileContent[$i] Then
$Hilf = True
ExitLoop
EndIf
Next
If $Hilf = False Then
FileWrite($FilePath, $URL & @CRLF)
$HTML = _FFReadHtml($Socket)
If Not $URL = "about:blank" Then
$aszBetween = _StringBetween($URL, "//", "/")
FileWrite(@DesktopDir & "\" & $aszBetween[0] & ".html", $HTML)
EndIf
EndIf
Sleep(500)
WEndFunc _EXIT()
[/autoit]
Exit
EndFunc -
Probiers mal so, ohne FileOpen, FileWrite mit Dateiname arbeitet immer im Append-Modus:
Spoiler anzeigen
[autoit]#include <FF.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <File.au3>HotKeySet("{ESC}", "_EXIT")
[/autoit] [autoit][/autoit] [autoit]Dim $Hilf = False
[/autoit] [autoit][/autoit] [autoit]
Dim $FileContent$FilePath = @DesktopDir & "\Homepages.txt"
[/autoit] [autoit][/autoit] [autoit]$Socket = _FFStart("about:blank")
[/autoit] [autoit][/autoit] [autoit]
FileWrite($FilePath, "about:blank" & @CRLF)While 1
[/autoit] [autoit][/autoit] [autoit]
If $Hilf = False Then _FileReadToArray($FilePath, $FileContent)
$URL = _FFSetGet($Socket, "content.document.location.href")
$Hilf = 0
For $i = 1 To $FileContent[0]
If $URL = $FileContent[$i] Then
$Hilf = True
ExitLoop
EndIf
Next
If $Hilf = False Then
FileWrite($FilePath, $URL & @CRLF)
EndIf
Sleep(500)
WEndFunc _EXIT()
[/autoit]
Exit
EndFuncEdit: Sleep hinzugefügt!
-
Hallo,
Du mußt $Hilf vor der For-Schleife auf 0 setzten!
-
Hallo,
ich hab dir mal mit Scriptomatic ein Beispiel zum Auslesen von Win32_Battery erzeugt.
Spoiler anzeigen
[autoit]; Erstellt von AutoIt Scriptomatic
[/autoit] [autoit][/autoit] [autoit]
$wbemFlagReturnImmediately=0x10
$wbemFlagForwardOnly=0x20
$colItems=""
$strComputer="localhost"
$Output=""
$Output&="Computer: " &$strComputer & @CRLF
$Output&="==========================================" & @CRLF
$objWMIService=ObjGet("winmgmts:\\" &$strComputer &"\root\CIMV2")
$colItems=$objWMIService.ExecQuery("SELECT * FROM Win32_Battery", "WQL", _
$wbemFlagReturnImmediately + $wbemFlagForwardOnly)
If IsObj($colItems) Then
For $objItem In $colItems
$Output&="Availability: " &$objItem.Availability & @CRLF
$Output&="BatteryRechargeTime: " &$objItem.BatteryRechargeTime & @CRLF
$Output&="BatteryStatus: " &$objItem.BatteryStatus & @CRLF
$Output&="Caption: " &$objItem.Caption & @CRLF
$Output&="Chemistry: " &$objItem.Chemistry & @CRLF
$Output&="ConfigManagerErrorCode: " &$objItem.ConfigManagerErrorCode & @CRLF
$Output&="ConfigManagerUserConfig: " &$objItem.ConfigManagerUserConfig & @CRLF
$Output&="CreationClassName: " &$objItem.CreationClassName & @CRLF
$Output&="Description: " &$objItem.Description & @CRLF
$Output&="DesignCapacity: " &$objItem.DesignCapacity & @CRLF
$Output&="DesignVoltage: " &$objItem.DesignVoltage & @CRLF
$Output&="DeviceID: " &$objItem.DeviceID & @CRLF
$Output&="ErrorCleared: " &$objItem.ErrorCleared & @CRLF
$Output&="ErrorDescription: " &$objItem.ErrorDescription & @CRLF
$Output&="EstimatedChargeRemaining: " &$objItem.EstimatedChargeRemaining & @CRLF
$Output&="EstimatedRunTime: " &$objItem.EstimatedRunTime & @CRLF
$Output&="ExpectedBatteryLife: " &$objItem.ExpectedBatteryLife & @CRLF
$Output&="ExpectedLife: " &$objItem.ExpectedLife & @CRLF
$Output&="FullChargeCapacity: " &$objItem.FullChargeCapacity & @CRLF
$Output&="InstallDate: " & WMIDateStringToDate($objItem.InstallDate) & @CRLF
$Output&="LastErrorCode: " &$objItem.LastErrorCode & @CRLF
$Output&="MaxRechargeTime: " &$objItem.MaxRechargeTime & @CRLF
$Output&="Name: " &$objItem.Name & @CRLF
$Output&="PNPDeviceID: " &$objItem.PNPDeviceID & @CRLF
$strPowerManagementCapabilities=$objItem.PowerManagementCapabilities(0)
$Output&="PowerManagementCapabilities: " &$strPowerManagementCapabilities & @CRLF
$Output&="PowerManagementSupported: " &$objItem.PowerManagementSupported & @CRLF
$Output&="SmartBatteryVersion: " &$objItem.SmartBatteryVersion & @CRLF
$Output&="Status: " &$objItem.Status & @CRLF
$Output&="StatusInfo: " &$objItem.StatusInfo & @CRLF
$Output&="SystemCreationClassName: " &$objItem.SystemCreationClassName & @CRLF
$Output&="SystemName: " &$objItem.SystemName & @CRLF
$Output&="TimeOnBattery: " &$objItem.TimeOnBattery & @CRLF
$Output&="TimeToFullCharge: " &$objItem.TimeToFullCharge & @CRLF
If Msgbox(1, "WMI-Ausgabe", $Output)=2 then ExitLoop
$Output=""
Next
Else
Msgbox(0, "WMI-Ausgabe","Keine WMI-Objekte gefunden für Klasse: " & "Win32_Battery")
EndifFunc WMIDateStringToDate($dtmDate)
[/autoit]
Return (StringMid($dtmDate, 5, 2) &"/" &StringMid($dtmDate, 7, 2) &"/" &StringLeft($dtmDate, 4) & " " &StringMid($dtmDate, 9, 2) &":" &StringMid($dtmDate, 11, 2) &":" &StringMid($dtmDate,13, 2))
EndFunc -
Hallo,
warum machst Du nicht einfach ein StringTrimLeft wenn das 1. Zeichen ein Punkt ist?
Noch ein kleiner Hinweis:
Solche Anweisungen
[autoit]FileRead(FileOpen(@ScriptDir & '\file.txt', 0))
[/autoit]sind nicht nur überflüssig sondern können auch noch zu Fehlern führen, da die Datei mit FileOpen geöffnet wurde aber nicht mehr mit FileClose geschlossen wird.
[autoit]
Die Anweisung kann man auch einfach so schreiben:FileRead(@ScriptDir & '\file.txt')
[/autoit] -
Hallo,
ob man es direkt auslesen kann weiß ich jetzt nicht aber es gibt die WMI-Klasse Win32_Battery und Win32_PortableBattery damit kann man den Status des Akku abfragen und den gibt es ja in der Regel nur bei Notebooks!
-
Hallo,
so wird ein Screenshot vom gerade aktiven Fenster gemacht!
[autoit]#include <ScreenCapture.au3>
[/autoit][autoit][/autoit][autoit]
Opt('WinTitleMatchMode', 2)ShellExecute('www.google.de')
[/autoit][autoit][/autoit][autoit]
WinWait('Mozilla Firefox')
Sleep(1000)_ScreenCapture_CaptureWnd('test.jpg', WinGetHandle("[ACTIVE]"))
[/autoit]Edit:
Kann ich das auch so machen, ohne das man das Fenster im Vordergrund haben muss?

Sorry hab wohl das "ohne" überlesen!Ich glaube nicht das es so einfach mit den ScreenCapture-Funktionen geht!
-
Hallo,
was macht es für einen Sinn die Tasten der Bildschirmtastatur zu steuern wenn man die Tastencodes direkt mit AutoIt senden kann?

-
Hallo,
kann es sein das das Add-On Mozlab fehlt!
-
Wenn Du die Ini-Datei unter Anwendungsdaten im Benutzer-Verzeichnis anlegst hat das den Vorteil das jeder Benutzer seine eingene Einstellungen machen kann.
-
So:
Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]$myGUI = GUICreate("My GUI Button") ; will create a dialog box that when displayed is centered
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_CLOSE, "CloseEvent")
GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, "PrimaryDownEvent")Opt("GUICoordMode",2)
[/autoit] [autoit][/autoit] [autoit]
$Button_1 = GUICtrlCreateButton ("Run Notepad", 10, 30, 100)
$Button_2 = GUICtrlCreateButton ( "Button Test", 0, -1)GUISetState () ; will display an dialog box with 2 button
[/autoit] [autoit][/autoit] [autoit]; Run the GUI until the dialog is closed
[/autoit] [autoit][/autoit] [autoit]
While 1
Sleep(100)
WendFunc PrimaryDownEvent()
[/autoit] [autoit][/autoit] [autoit]
$ctrlMsg = GUIGetCursorInfo()
$ctrlMsg = $ctrlMsg[4]
Select
Case $ctrlMsg = $Button_1
Run('Notepad.exe') ; Will Run/Open Notepad
Case $ctrlMsg = $Button_2
MsgBox(0, 'Testing', 'Button 2 was pressed') ; Will demonstrate Button 2 being pressed
EndSelect
EndFuncFunc CloseEvent()
[/autoit]
Exit
EndFunc -
Hallo,
ich habe es gerade mal getestet, es liegt wohl daran das der normale Benuter nur lesende Rechte auf das neue Verzeichnis hat!
-
Hallo,
ich versteh zwar den Sinn noch nicht ganz aber so gehts:
Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]$myGUI = GUICreate("My GUI Button") ; will create a dialog box that when displayed is centered
[/autoit] [autoit][/autoit] [autoit]Opt("GUICoordMode",2)
[/autoit] [autoit][/autoit] [autoit]
$Button_1 = GUICtrlCreateButton ("Run Notepad", 10, 30, 100)
$Button_2 = GUICtrlCreateButton ( "Button Test", 0, -1)GUISetState () ; will display an dialog box with 2 button
[/autoit] [autoit][/autoit] [autoit]; Run the GUI until the dialog is closed
[/autoit]
While 1
$msg = GUIGetMsg(1)
Select
Case $msg[0] = $GUI_EVENT_CLOSE
ExitLoop
Case $msg[0] = $GUI_EVENT_PRIMARYDOWN
$aCGP = ControlGetPos($myGUI, "" ,$Button_1)
If $msg[3] > $aCGP[0] And $msg[3] < $aCGP[0] + $aCGP[2] And $msg[4] > $aCGP[1] And $msg[4] < $aCGP[1] + $aCGP[3] Then Run('Notepad.exe') ; Will Run/Open Notepad
$aCGP = ControlGetPos($myGUI, "" ,$Button_2)
If $msg[3] > $aCGP[0] And $msg[3] < $aCGP[0] + $aCGP[2] And $msg[4] > $aCGP[1] And $msg[4] < $aCGP[1] + $aCGP[3] Then MsgBox(0, 'Testing', 'Button 2 was pressed') ; Will demonstrate Button 2 being pressed
;~ Case $msg[0] = $Button_1
;~ Run('Notepad.exe') ; Will Run/Open Notepad
;~ Case $msg[0] = $Button_2
;~ MsgBox(0, 'Testing', 'Button 2 was pressed') ; Will demonstrate Button 2 being pressed
EndSelect
Wend -
Hallo,
die Zählvariable in der For-Schleife wird immer automatisch als LOCAL definiert!
Zitat von Aus der HilfeThe Variable will be created automatically with a LOCAL scope, even when MustDeclareVars is on.