Beiträge von Micha_he
-
-
Ich tippe sein Problem ist folgendes:
In die Registry wird im Script 1 der Registrywert Hex geschrieben. Dort kommt er auch einwandfrei an.
Im Script 2 liest er ihn in Zeile 13 aber dezimal ein (geht ja wahrscheinlich auch nicht anders) und verwendet die Dezimalzahl in _GDIPlus_BrushCreateSolid($itxtcolor) in Zeile 24 als Parameter, wo er aber in Hex angegeben werden muss.
Nur ich komm zur Zeit nicht drauf, wie man aus "4278255360" wieder "0xFF00FF00" bekommt

-
-
-
Ich kann Dir zwar auch nicht versprechen ob in dem von mir genutzten Script alle Registry-Schlüssel beachtet sind, aber folgendes habe ich schon seit mehr wie 2 Jahren im 'portablen' Einsatz:
Spoiler anzeigen
[autoit]#cs
[/autoit] [autoit][/autoit] [autoit]
****************************************************************************
Titel: AutoIt3Portable.au3
Autor: [email='micha_he@autoit.de'][/email]
Datum: 05.11.2012
Info: Erzeugt ein Tray-Symbol mit Kontextmenues für ein portables
AutoIt. Es werden mögliche alte Registryeinträge (Standard-
aktionen für den AU3-Dateityp und Kontextmenüs) gesichert,
vorrübergehend auf die portable Version umkonfiguriert und
am Programmende wieder hergestellt.
AutoIt-Version: 3.3.8.1
History: 1.00 - Erstrelease
1.01 - Pfad RJTextEd angepasst
****************************************************************************
#ce#Include <Constants.au3>
[/autoit] [autoit][/autoit] [autoit]
Opt("MustDeclareVars",1)
Opt("TrayMenuMode",1)Dim $KodaItem, $aboutitem, $helpau3item, $RJItem
[/autoit] [autoit][/autoit] [autoit]
Dim $exititem, $CompilerItem, $time1, $msg$time1 = TimerInit()
[/autoit] [autoit][/autoit] [autoit]
If FileExists(@ScriptDir & "\AutoIT3Portable.jpg") Then SplashImageOn("Splash Screen",@ScriptDir & "\Autoit3Portable.jpg",416,249,-1,-1,17)
If RegRead("HKEY_CURRENT_USER\Software\Classes\Applications\AutoIt3.exe","CurrentStartTyp") = "Portable" Then
SplashOff()
MsgBox(64, "Start wird abgebrochen !", "Portables Autoit läuft schon !!")
Exit
EndIf$aboutitem = TrayCreateItem("About")
[/autoit] [autoit][/autoit] [autoit]
TrayCreateItem("")
$helpau3item = TrayCreateItem("AutoIt 3 Hilfe")
TrayCreateItem("")
If FileExists(StringLeft(@ScriptDir, 2) & "\Tools\Editor & Viewer\RJ TextEd\TextEd.exe") Then
$RJItem = TrayCreateItem("RJ TextEd")
TrayCreateItem("")
EndIf
If FileExists(@ScriptDir & "\Koda\FD.exe") Then
$KodaItem = TrayCreateItem("KODA GUI Designer")
TrayCreateItem("")
EndIf
If FileExists(@ScriptDir & "\Aut2Exe\Aut2Exe.exe") Then
$CompilerItem = TrayCreateItem("AutoIT Compiler")
TrayCreateItem("")
EndIf
$exititem = TrayCreateItem("Exit")
TraySetState()_BackupRegistry()
[/autoit] [autoit][/autoit] [autoit]
_Setup_Registry()While TimerDiff($time1) < 2000
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Sleep(100)
Wend
SplashOff()
While 1
$msg = TrayGetMsg()
Select
Case $msg = 0
ContinueLoop
Case $msg = $aboutitem
TrayItemSetState($aboutitem, $TRAY_UNCHECKED)
MsgBox(0, "about:", @CRLF & "AutotITPortable V1.2" & @CRLF)
Case $msg = $RJItem
TrayItemSetState($RJItem, $TRAY_UNCHECKED)
Run(StringLeft(@ScriptDir, 2) & "\Tools\Editor & Viewer\RJ TextEd\TextEd.exe", @TempDir)
Case $msg = $KodaItem
TrayItemSetState($KodaItem, $TRAY_UNCHECKED)
Run(@ScriptDir & "\Koda\FD.exe", @TempDir)
Case $msg = $CompilerItem
TrayItemSetState($CompilerItem, $TRAY_UNCHECKED)
Run(@ScriptDir & "\Aut2Exe\Aut2Exe.exe", @TempDir)
Case $msg = $helpau3item
TrayItemSetState($helpau3item, $TRAY_UNCHECKED)
ShellExecute(@ScriptDir & "\AutoIt.chm","",@TempDir)
Case $msg = $exititem
$time1 = TimerInit()
If FileExists(@ScriptDir & "\AutoIT3Portable.jpg") Then SplashImageOn("Splash Screen",@ScriptDir & "\Autoit3Portable.jpg",416,249,-1,-1,17)
RegDelete("HKEY_CURRENT_USER\Software\Classes\Applications\AutoIt3.exe","CurrentStartTyp")
_RestoreRegistry()
While TimerDiff($time1) < 2000
Sleep(100)
Wend
SplashOff()
Exit
EndSelect
WEndFunc _BackupRegistry()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
If Not FileExists(@ScriptDir & '\RegBackup') Then DirCreate(@ScriptDir & '\RegBackup')
RunWait('RegEdit.exe /E ' & @ScriptDir & '\RegBackup\userclass.reg "HKEY_CURRENT_USER\Software\Classes"',"", @SW_HIDE)
RunWait('RegEdit.exe /E ' & @ScriptDir & '\RegBackup\autoit.reg "HKEY_CURRENT_USER\Software\AutoIt v3"',"", @SW_HIDE)
If IsAdmin() Then
RunWait('RegEdit.exe /E ' & @ScriptDir & '\RegBackup\au3.reg "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.au3"',"", @SW_HIDE)
RunWait('RegEdit.exe /E ' & @ScriptDir & '\RegBackup\autoitscript.reg "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoIt3Script"',"", @SW_HIDE)
EndIf
EndFunc ;==>backupRegistryFunc _RestoreRegistry()
[/autoit] [autoit][/autoit] [autoit]
RegDelete("HKEY_CURRENT_USER\Software\Classes\.au3")
RegDelete("HKEY_CURRENT_USER\Software\Classes\Applications\AutoIt3.exe")
RegDelete("HKEY_CURRENT_USER\Software\Classes\au3_auto_file")
If FileExists(@ScriptDir & '\RegBackup\userclass.reg') Then RunWait('RegEdit.exe /S userclass.reg', @ScriptDir & '\RegBackup', @SW_HIDE)
If FileExists(@ScriptDir & '\RegBackup\autoit.reg') Then RunWait('RegEdit.exe /S autoit.reg', @ScriptDir & '\RegBackup', @SW_HIDE)
If IsAdmin() Then
If FileExists(@ScriptDir & '\RegBackup\au3.reg') Then RunWait('RegEdit.exe /S au3.reg', @ScriptDir & '\RegBackup', @SW_HIDE)
If FileExists(@ScriptDir & '\RegBackup\autoitscript.reg') Then RunWait('RegEdit.exe /S autoitscript.reg', @ScriptDir & '\RegBackup', @SW_HIDE)
EndIf
DirRemove(@ScriptDir & '\RegBackup',1)
EndFunc ;==>RestoreRegistryFunc _Setup_Registry()
[/autoit]
RegWrite("HKEY_CURRENT_USER\Software\Classes\.au3","","REG_SZ","au3_auto_file")
RegWrite("HKEY_CURRENT_USER\Software\Classes\Applications\AutoIt3.exe","CurrentStartTyp","REG_SZ","Portable")
RegWrite("HKEY_CURRENT_USER\Software\Classes\Applications\AutoIt3.exe\shell\open\command","","REG_SZ",'"' & @ScriptDir & '\AutoIt3.exe" "%1"')
RegWrite("HKEY_CURRENT_USER\Software\Classes\au3_auto_file\shell","","REG_SZ","1_Run")
RegWrite("HKEY_CURRENT_USER\Software\Classes\au3_auto_file\shell\1_Run","","REG_SZ","AutoIT Script ausführen")
RegWrite("HKEY_CURRENT_USER\Software\Classes\au3_auto_file\shell\1_Run\command","","REG_SZ",'"' & @ScriptDir & '\AutoIt3.exe" "%1" %*')
If $RJItem <> 0 Then
RegWrite("HKEY_CURRENT_USER\Software\Classes\au3_auto_file\shell\2_Edit","","REG_SZ","AutoIT Script editieren")
RegWrite("HKEY_CURRENT_USER\Software\Classes\au3_auto_file\shell\2_Edit\command","","REG_SZ",'"' & StringLeft(@ScriptDir, 2) & '\Tools\Editor & Viewer\RJ TextEd\TextEd.exe" "%1"')
EndIf
RegWrite("HKEY_CURRENT_USER\Software\Classes\au3_auto_file\shell\3_Compile","","REG_SZ","AutoIT Script kompilieren")
RegWrite("HKEY_CURRENT_USER\Software\Classes\au3_auto_file\shell\3_Compile\command","","REG_SZ",'"' & @ScriptDir & '\Aut2Exe\Aut2Exe.exe" /in "%l"')
If FileExists(@ScriptDir & "\Aut2Exe_wOpt\Aut2Exe_wOpt.exe") Then
RegWrite("HKEY_CURRENT_USER\Software\Classes\au3_auto_file\shell\4_Compile with Options","","REG_SZ","AutoIT Script kompilieren mit Optionen")
RegWrite("HKEY_CURRENT_USER\Software\Classes\au3_auto_file\shell\4_Compile with Options\command","","REG_SZ",'"' & @ScriptDir & '\Aut2Exe_wOpt\Aut2Exe_wOpt.exe" "%l"')
EndIf
EndFuncDu musst ggf. relative Pfad zu den Tools anpassen und eigene/andere Tools (z.B. anderen Editor, obwohl der RJTextEd gut ist) nachtragen.
Hier noch das von mir verwendete Bild beim Start:
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. Die Grundidee stammt von einem anderen User entweder hier aus dem deutschen oder aus dem englischen Forum. Ich weiß nicht mehr von wem.
Gruß
Micha -
Wenn die Buttons nicht per Controlklick erreichbar sind (sind sie bei mir auch nicht, hab ich gerade getestet), könntest Du mit WinGetPos() die Position der Fenster ermitteln und dann deinen MouseClick() relativ zu der ermittelten Ecke oben/links ausführen.
Außer das Fenster ändert auch noch jedesmal die Größe

-
Dein Script aus #5 funktioniert bei mir einwandfrei !
-
1. Der Titel heißt bestimmt "Unbenannt..." und nicht "Unbekannt..." !
2. Der 2. Parameter von WinGetText() ist per Komma vom ersten zu trennen. Er ist aber nicht unbedingt notwendig, sondern optional. Also einfach weglassen. -
Du solltest außerdem mit Deinem Projekt fertig werden, bevor PCI komplett von den Mainboards verschwunden ist !
Ich halte mehr von einer Realisierung z.B. über USB-Port, da dieser universeller und wahrscheinlich noch länger verfügbar ist.
-
Ich glaube, ihr verwechselt hier die Meldung über 'nicht signierte Treiber' mit der UAC !
Vor der installation eines nicht signierten Treibers, schalte ich die Meldung bei Bedarf mit folgendem Script ab:
DriverSigningOff
[autoit]ShellExecute("Control", "SYSDM.cpl,,2")
[/autoit] [autoit][/autoit] [autoit]
$start = Timerinit()
Do
If WinExists("Systemeigenschaften") Then
Sleep(200)
ControlClick("Systemeigenschaften", "", "[CLASSNN:Button4]")
ExitLoop
EndIf
Sleep(200)
Until TimerDiff($start) > 10000$start = Timerinit()
[/autoit] [autoit][/autoit] [autoit]
Do
If WinExists("Treibersignaturoptionen") Then
Sleep(200)
ControlClick("Treibersignaturoptionen", "", "[CLASSNN:Button1]")
ExitLoop
EndIf
Sleep(200)
Until TimerDiff($start) > 10000Sleep(200)
[/autoit]
ControlClick("Treibersignaturoptionen", "", "[CLASSNN:Button5]")
Sleep(200)
ControlClick("Systemeigenschaften", "", "[CLASSNN:Button8]")Da das Script nur die Systemsteuerung nutzt, muss natürlich zu dem Zeitpunkt ein User angemeldet sein.
Und das Script ist für WinXP in deutsch. -
Schau mal in mein Tool 'AKrypto' (LINK).
Ich nutze dort nur einen Unterordner unterhalb des @ScriptDir als Basis. (Siehe Zeile: 166, 211-213)
-
... und in dem script aus #3 wird der Timer in der "äußeren" Do-Until-Schleife immer wieder mit dem TimerInit() zurückgesetzt, bis die Schleife auf Grund des beendeten Downloads verlassen wird. Daher erhältst Du immer nur einige ms.
-
Ich weiß zwar nicht so genau was Du mit
ZitatDas Skript fängt komischerweise schon am Anfang meines Codes an, den Timer zu starten
meinst, aber:
- Der Timer startet mit "TimerInit()" und nicht "am Anfang des Scripts"
- Sollte die Zeile mit dem TimerInit() wohl hinter die erste Do-Until-Schleife, damit man die Differenz für den Upload ermitteln kann. -
Außerdem spricht doch meiner Meinung nach nichts dagegen, den Decompiler (EXE2AUT) der AutoIt-Version <= 3.2.5.1 für die eigene EXE zu verwenden, wenn diese damals damit compiliert wurde !
-
Ich nutze es zwar selten, da ich meine Registry-Änderungen lieber von Hand ins Script schreibe, aber aus den Anfangszeiten wo ich einige Batchdateien in Autoit konvertiert habe, ist noh folgendes Script bei mir liegen geblieben:
reg2au3
[autoit]; reg2au3
[/autoit] [autoit][/autoit] [autoit]
;
; converts reg files to au3 scripts
; reads simple unicode-files (like reg files from regedit windows 2000/xp)
;
; known problem: not all regtypes are supported by autoit
;
; by [email='albach_s@yahoo.de'][/email]global $file_in, $file_in_handle, $file_in_size, $file_out, $file_out_handle
[/autoit] [autoit][/autoit] [autoit]
global $reg_delete, $reg_key, $reg_valuename, $reg_type, $reg_value
global $eof, $lines_written, $lines_read, $file_read_size, $regedit;set default params
[/autoit] [autoit][/autoit] [autoit]
if 1 Then
$shortkeys = 0
$regedit = 0
$step = 0
$reg_delete = 0
$reg_key = ""
$reg_valuename = ""
$reg_type = ""
$reg_value = ""
$eof = 0
$lines_written = 0
$lines_read = 0
$file_read_size = 0
EndIf;start and fileselect-dialogs
[/autoit] [autoit][/autoit] [autoit]
if 1 then
MsgBox(0, "reg2au3", "Welcome to reg2au3 !" & @cr & @CR _
& "With this handy little tool you're able to convert a standard .reg-file" & @CR _
& "(previously exported from registry) to an AutoIt ready .au3-file." & @cr & @cr _
& "Please select source-file and destination-file at the next dialogs" & @cr _
& "and let this script do the rest.")
$file_in = FileOpenDialog("reg2au3 - select source-file", "", ".reg-files (*.reg)", 1 )
If @error Then _Error("source-file is needed")
$file_in_size = FileGetSize($file_in)
If $file_in_size = 0 Then _Error("source-file is empty")
$file_out = FileSaveDialog( "reg2au3 - select destination-file", "", "AU3-Scripts (*.au3)", 24, _File_Name($file_in) & "_reghack.au3")
If @error Then _Error("destination-file is needed")$a = MsgBox(36, "reg2au3", "Do you like short Registry keys ?" & @cr & @cr _
[/autoit] [autoit][/autoit] [autoit]
& "like ""HKLM"" instead of ""HKEY_LOCAL_MACHINE"".")
if $a = 6 then $shortkeys = 1
EndIf_Files_Open()
[/autoit] [autoit][/autoit] [autoit]
ProgressOn("reg3au3 - progress", "working ...");main script
[/autoit] [autoit][/autoit] [autoit]
While 1
$line = _File_Read_Line()
Select
case $eof and $line = ""
if $step = 1 then _File_Write()
ExitLoop
case $line = ""
case $regedit = 0
if $line = "REGEDIT4" then $regedit = 4
if $line = "Windows Registry Editor Version 5.00" Then $regedit = 5
case StringLeft($line, 1) = "[" And StringRight($line, 1) = "]" ;New REG-Key
$reg_valuename = ""
$reg_type = ""
$reg_value = ""
if $shortkeys Then
$line = StringReplace($line, "[HKEY_LOCAL_MACHINE", "[HKLM")
$line = StringReplace($line, "[HKEY_CLASSES_ROOT", "[HKCR")
$line = StringReplace($line, "[HKEY_CURRENT_USER", "[HKCU")
$line = StringReplace($line, "[HKEY_USERS", "[HKU")
$line = StringReplace($line, "[HKEY_CURRENT_CONFIG", "[HKCC")
EndIf
$line = StringTrimRight(StringTrimLeft($line, 1), 1)
if $step = 1 Then
if StringInStr($line, $reg_key) = 0 Then _File_Write()
EndIf
$reg_key = $line
if StringLeft($reg_key, 1) = "-" Then
$reg_delete = 1
$reg_key = StringTrimLeft($reg_key, 1)
_File_Write()
$step = 0
Else
$step = 1
EndIf
case $step < 1
Case Else
$step = 2
$err = 0
if StringLeft($line, 2) = "@=" Then
$reg_valuename = "@"
$line = StringTrimLeft($line, 2)
if $line = "-" then $err = 1
ElseIf StringLeft($line, 1) = '"' Then
$pos = 0
$esc = 0
$reg_valuename = ""
for $i = 1 to stringlen($line)
$a = stringmid($line, $i, 1)
Select
case $esc
$esc = 0
$reg_valuename = $reg_valuename & $a
case $a = '\'
$esc = 1
case $a = '"'
if $i > 1 Then
$pos = $i + 1
ExitLoop
EndIf
case Else
$reg_valuename = $reg_valuename & $a
EndSelect
Next
if StringMid($line, $pos, 1) = "=" then
$line = StringTrimLeft($line, $pos)
Else
$err = 2
EndIf
Else
$err = 3
EndIfif $err Then
[/autoit] [autoit][/autoit] [autoit]
msgbox(4144, "reg2au3", "Warning:" & @cr & "bad syntax at value-name - " & $err & @cr & "in line: " & $lines_read )
ContinueLoop
EndIfif StringLeft($line, 1) = '"' And StringRight($line, 1) = '"' Then
[/autoit] [autoit][/autoit] [autoit]
$reg_type = "REG_SZ"
$pos = 0
$esc = 0
$reg_value = ""
for $i = 1 to stringlen($line)
$a = stringmid($line, $i, 1)
Select
case $esc
$esc = 0
$reg_value = $reg_value & $a
case $a = '\'
$esc = 1
case $a = '"'
if $i > 1 Then
$pos = $i +1
ExitLoop
EndIf
case Else
$reg_value = $reg_value & $a
EndSelect
Next
ElseIf StringLeft($line, 1) = "-" Then
$reg_delete = 1
Else
$type = StringLeft($line, StringInStr($line, ":"))
$line = StringTrimLeft($line, StringLen($type))
Select
case $type = "dword:"
$reg_type = "REG_DWORD"
$reg_value = Dec($line)
case $type = "hex(7):"
$reg_type = "REG_MULTI_SZ"
$reg_value = _Hex_Convert($line)
case $type = "hex(2):"
$reg_type = "REG_EXPAND_SZ"
$reg_value = _Hex_Convert($line)
case $type = "hex:"
$reg_type = "REG_BINARY"
$reg_value = StringReplace($line, ",", "")
case StringLeft($type, 3) = "hex"
msgbox(4144, "reg2au3", "Warning:" & @cr & "unsupported key-type - " & $type & @cr & "in line: " & $lines_read , 3)
ContinueLoop
case Else
msgbox(4144, "reg2au3", "Warning:" & @cr & "bad syntax at key-type" & @cr & "in line: " & $lines_read )
ContinueLoop
EndSelect
EndIf
_File_Write()
EndSelect
WEnd;some Types of Registry Values
[/autoit] [autoit][/autoit] [autoit]
;hex: REG_BINARY
;hex(0): REG_NONE - Null value
;hex(1): REG_SZ - Null terminated Unicode fixed string value
;hex(2): EXPAND_SZ - Null terminated unexpanded Unicode/ANSI environment string value
;hex(3): REG_BINARY - Binary value of any form/length
;hex(4): REG_DWORD - 32-bit numerical value
;hex(4): REG_DWORD_LITTLE_ENDIAN - little-endian 32-bit numerical value (same as REG_DWORD)
;hex(5): REG_DWORD_BIG_ENDIAN - 32-bit reversed numerical value
;hex(6): REG_LINK - Symbolic Unicode link string value
;hex(7): REG_MULTI_SZ - Array of multiple Unicode strings separated/ended by null characters
;hex(8): REG_RESOURCE_LIST - Device driver list of hardware resources in Resource Map tree
;hex(9): REG_FULL_RESOURCE_DESCRIPTOR - List of hardware resources in Description tree
;hex(a): REG_RESOURCE_REQUIREMENTS_LIST - Device driver list of hardware resource requirements in Resource Map tree
;hex(?): REG_QWORD - 64-bit numerical value
;hex(?): REG_QWORD_LITTLE_ENDIAN - little-endian 64-bit numerical value (same as REG_QWORD)_Files_Close()
[/autoit] [autoit][/autoit] [autoit];end-dialog
[/autoit] [autoit][/autoit] [autoit]
if 1 then
ProgressSet(100 , "Done", "Complete")
sleep(1000)
ProgressOff()
EndIf;returns converted hex-string suitable to regwrite
[/autoit] [autoit][/autoit] [autoit]
Func _Hex_Convert( $hex)
local $i, $a, $string
$string = ""
for $i = 1 to StringLen($hex)
$a = chr(dec(StringMid($hex, $i, 2)))
if $a = chr(0) then $a = @lf
$string = $string & $a
if $regedit = 5 then
$i = $i + 5
Else
$i = $i + 2
EndIf
Next
While StringRight($string,1) = @LF
$string = StringTrimRight($string, 1)
WEnd
return $string
EndFunc;extract the filename without extension
[/autoit] [autoit][/autoit] [autoit]
Func _File_Name( $file )
$fn = StringRight( $file , stringlen( $file ) - StringInStr($file, "\", 0, -1) )
if StringInStr($fn, ".") then $fn = StringLeft($fn, StringInStr($fn, ".")-1)
Return $fn
EndFunc;returns a string containing the commandline
[/autoit] [autoit][/autoit] [autoit]
Func _Create_Commandline()
Local $cmdline
if $reg_delete Then
$cmdline = "RegDelete(" & chr(34) & _Clean_String($reg_key) & chr(34)
if $reg_valuename <> "" Then
$cmdline = $cmdline & ", " & chr(34) & _Clean_String($reg_valuename) & chr(34)
Else
$reg_key = ""
EndIf
$cmdline = $cmdline & ")"
$reg_delete = 0
Else
$cmdline = "RegWrite(" & chr(34) & _Clean_String($reg_key) & chr(34)
if $reg_valuename <> "" Then
if $reg_valuename = "@" then $reg_valuename = ""
$cmdline = $cmdline & ", " & chr(34) & _Clean_String($reg_valuename) & chr(34)
$cmdline = $cmdline & ", " & chr(34) & $reg_type & chr(34)
$cmdline = $cmdline & ", " & chr(34) & _Clean_String($reg_value) & chr(34)
EndIf
$cmdline = $cmdline & ")"
EndIf
$reg_valuename = ""
$reg_type = ""
$reg_value = ""
Return $cmdline
EndFunc;cleans given String from @LF
[/autoit] [autoit][/autoit] [autoit]
Func _Clean_String( $val )
$val = StringReplace($val, '"', '""')
$val = StringReplace($val, @lf, '" & @lf & "')
Return $val
EndFunc;open the input and output files
[/autoit] [autoit][/autoit] [autoit]
Func _Files_Open()
$file_in_handle = FileOpen($file_in, 0)
If $file_in_handle = -1 Then _Error( "Unable to open source-file.")
$file_out_handle = FileOpen($file_out, 2)
If $file_out_handle = -1 Then _Error( "Unable to open destinaion-file.")
EndFunc;reads a line from a file
[/autoit] [autoit][/autoit] [autoit]
Func _File_Read_Line()
local $line, $a, $b, $c, $r
$line = ""
$c = 1
While $c
$c = 0
$r = ""
while 1
$a = FileRead($file_in_handle, 1)
If @error = -1 Then
$eof = 1
ExitLoop
EndIf
$file_read_size = $file_read_size + 1
$b = asc($a)
if $b > 0 and $b < 254 Then $r = $r & $a
if $b = 10 then ExitLoop
WEnd
$lines_read = $lines_read + 1
_Show_Progress()
$r = StringStripWS($r, 3)
if StringRight($r, 1) = "\" Then ;regedit uses the backslash to split long lines
$r = StringTrimRight($r, 1)
$c = 1
EndIf
$line = $line & $r
WEnd
return $line
EndFunc;Write Commandline to Outputfile
[/autoit] [autoit][/autoit] [autoit]
Func _File_Write()
local $a
$a = FileWriteLine( $file_out_handle, _Create_Commandline() )
if $a = 0 Then _Error( "Unable to write to " & $file_in )
$lines_written = $lines_written + 1
EndFunc;close the input and output files
[/autoit] [autoit][/autoit] [autoit]
Func _Files_Close()
if $file_in_handle then FileClose($file_in_handle)
if $file_out_handle then FileClose($file_out_handle)
EndFunc;cleanup output files
[/autoit] [autoit][/autoit] [autoit]
Func _Files_Cleanup()
FileDelete($file_out)
EndFunc;shows the progress bar
[/autoit] [autoit][/autoit] [autoit]
Func _Show_Progress()
local $p
$p = int($file_read_size * 100 / $file_in_size)
ProgressSet( $p, "current line: " & $lines_read)
EndFunc;errorhandling
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]
Func _Error( $message )
_Files_Close()
_Files_Cleanup()
ProgressOff()
msgbox(16, "reg2au3", "ERROR:" & @cr & $message)
Exit
EndFunc -
Während der MsgBox() pausiert Dein Script. Die MsgBox lässt sich auch mit F11 nicht beenden. Bestätigst Du die MsgBox z.B. mit Enter, dann ist innerhalb kürzester Zeit, der Shutdown (Else-Zweig der _Ispressed()) bereits ausgelöst.
Wenn Ich die F11-Taste bis zum Timeout der MsgBox festhalte, wird sie bei mir auch erkannt !
Ich würde die MsgBox durch einen Splash und eine 15s Warteschleife ersetzen, in der Du dann mit IsPressed() abbrechen kannst.
-
So:
[autoit]Send($opener & "{ENTER}")
[/autoit] -
Beim mir funktioniert Dein Beispiel aus #3 nicht !
-
Es scheint unter der Win32_OperatingSystem-Class kein "Username" zu existieren. Siehe MSDN.
Aber unter "Win32_LoggedOnUser" ist es möglich:
Spoiler anzeigen
[autoit]$str_computer = "localhost"
[/autoit] [autoit][/autoit] [autoit]$wmiroot = ObjGet("winmgmts:\\"& $str_computer &"\root\CIMV2")
[/autoit]
$wmiColl = $wmiRoot.ExecQuery("SELECT * FROM Win32_LoggedOnUser")
For $wmiObj In $wmiColl
$string = StringReplace(StringMid($wmiObj.Antecedent, StringInStr($wmiObj.Antecedent, "=", 0, -1) + 1), '"', '')
Msgbox(0,"",$string)
Next
$wmiColl = 0 -
Zum Beispiel mal ganz einfach:
[autoit]#NoTrayIcon
[/autoit][autoit][/autoit][autoit]HotKeySet (("#r"), "_exit")
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]while 1
[/autoit][autoit][/autoit][autoit]If WinExists("skype.exe") Then WinClose ("skype.exe")
[/autoit][autoit][/autoit][autoit]
If WinExists("notepad.exe") Then WinClose ("notepad.exe")
Sleep(180000) ; 3 min wartenWend
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]FUnc _exit()
[/autoit]
Exit
EndFunc