Regwrite verlangt 4 Parameter - du übergibst alles in einem Parameter.
Beiträge von BugFix
-
-
Grundsätzlich so splitten:
[autoit]$SN = StringSplit(ClipGet(), "-")
[/autoit]
For $i = 1 To $SN[0]
GUICtrlSetData($Edit[$i], $SN[$i])
NextHab hierfür einfach mal angenommen, dass die Editfelder über eigenes Array erstellt sind ( k.A. wie das bei dir aussieht). Kannst du natürlich frei anpassen.
-
Hier ein Bsp.
Spoiler anzeigen
[autoit]Dim $arRegWrite[3][4]
[/autoit] [autoit][/autoit] [autoit]
$arRegWrite[0][0] = "HKLM"
$arRegWrite[0][1] = "VALUENAME_1"
$arRegWrite[0][2] = "REG_SZ"
$arRegWrite[0][3] = "VALUE_1"
$arRegWrite[1][0] = "HKCU"
$arRegWrite[1][1] = "VALUENAME_2"
$arRegWrite[1][2] = "REG_SZ"
$arRegWrite[1][3] = "VALUE_2"
$arRegWrite[2][0] = "HKCU"
$arRegWrite[2][1] = "VALUENAME_3"
$arRegWrite[2][2] = "REG_SZ"
$arRegWrite[2][3] = "VALUE_3"For $i = 0 To UBound($arRegWrite,1)
[/autoit] [autoit][/autoit] [autoit]
_Write2Reg( $arRegWrite[$i][0], $arRegWrite[$i][1], $arRegWrite[$i][2], $arRegWrite[$i][3] )
NextFunc _Write2Reg($keyname, $valuename, $type, $value)
[/autoit]
RegWrite($keyname, $valuename, $type, $value)
EndFunc -
Zitat
Dann werden die Dateien in das rechte Fenster in den ausgewählten Ordner kopiert.
Kopieren oder nur in einem anderen Fenster/Liste anzeigen ? -
[autoit]
$wort = Inputbox("","")
[/autoit]
$buchstaben = StringSplit($wort,"")
$Out = ""
For $i = 1 To $buchstaben[0]
$Out &= "Baum" & $buchstaben[$i]
Next
MsgBox(0,'',$Out) -
Zitat
Zitat Post1
aus einer mit SplashTextOn erstellten AnwendungZitatZitat letzter Post
Nun stell Dir mal vor, das die ControlID
der Fremdanwendung nicht bekannt ist...Ja was denn nun - Fremdanwendung oder Autoit ?
Wenn Fremdanwendung, wie kommst du dann auf eine Erstellung mit SplashTextOn. -
Was möchtest du ? Eine GUI von der du Programme startest und nach Programmende dorthin zurückkehrst ?
Dann ruf deine Proggis mit ShellExecuteWait() auf, das Script wartet dann bis das externe Programm beendet ist. -
Zitat
Um meine Experimentierfreude zu befriedigen, wollte
ich nur wissen, ob oder wie man auf irgendeine Weise
den erstellten Text auslesen kann.Experimentierfreude ist gut
aber verbeiß dich nicht an Sachen, die ergo keinen Sinn ergeben.
Denn: Wozu soll ich Werte abfragen, die ich selber dort ausgebe ? :irre:
SplashText kommt ja nicht mal eben von alleine, sondern wird von mir mit Inhalt befüllt. -
Bsp.:
Funktion:
[autoit]Func APP_1()
[/autoit]
; Code der Funktion
EndFuncAufruf:
[autoit]APP_1()
[/autoit] -
Zitat
Ich habs mal so angepaßt (NICHT unbedingt besser!!!)
Minimieren ist immer gut

Eins aber noch zur Ergänzung, sollte die gesuchte Datei mehrfach vorhanden sein, wird nur die erste gefundene Instanz zurückgegeben (war auch mein Anliegen um die Suchzeit zu minimieren).
Kann natürlich abgeändert werden (Megas Änderung noch nicht enthalten):Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <array.au3>
Dim $Datei = "autoit3.exe"
Dim $Ordner = @ProgramFilesDir
Dim $Ret
$Ret = _RecursiveFileSearch($Datei, $Ordner)
If $Ret[0] > 1 Then
_ArrayDisplay($Ret, "")
Else
MsgBox(0, '', $Ret[1] )
EndIf;--------------------------------------------------------------------------------------------------
[/autoit]
; Funktion _RecursiveFileSearch($FILE, $SEARCHFOLDER)
;
; Beschreibung Sucht nach vorgegebener Datei in einem Ordner rekursiv
;
; Parameter $FILE: zu suchende Datei
; $SEARCHFOLDER: Ordner für Suchstart
;
; Rückgabe Erfolg: Array mit Pfad(en) der gesuchten Datei
; @error = 0
; Fehler: 1-kein Dateiname / 2-kein Ordnername übergeben (3-beides); 4-Datei nicht vorhanden
; @error = 1
;
; Autor BugFix ([email='bugfix@autoit.de'][/email])
;--------------------------------------------------------------------------------------------------
Func _RecursiveFileSearch($FILE, $SEARCHFOLDER)
Global $Out = "" ;$PathFound = ""
Dim $Fehler = 0
If $FILE = "" Then
SetError(1)
$Fehler += 1
EndIf
If $SEARCHFOLDER = "" Then
SetError(1)
$Fehler += 2
EndIf
If @error Then Return $Fehler
$FSO = ObjCreate("Scripting.FileSystemObject")
ShowSubfolders( $FSO.GetFolder($SEARCHFOLDER), $FILE )
;~ If $PathFound = "" Then
If $Out = "" Then
SetError(1)
$Fehler = 4
Return $Fehler
Else
SetError(0)
EndIf
$Out = StringSplit(StringTrimRight($Out, 1), "|")
Return $Out
;~ Return $PathFound
EndFunc
Func ShowSubFolders($Folder, $FILE)
For $Subfolder In $Folder.SubFolders
If FileExists($Subfolder.Path & '\' & $FILE) Then
$Out &= $Subfolder.Path & '\' & $FILE & "|"
; $PathFound = $Subfolder.Path & '\' & $FILE
; ExitLoop
EndIf
ShowSubFolders($Subfolder, $FILE)
Next
EndFunc
; ==>_RecursiveFileSearchAlso von der Gesamtsuchzeit her ist glaub ich kein Zeitgewinn zu verzeichnen. Aber der Code ist einfacher zu handeln als die Strukturen mit 'FileFindFirstFile - FileFindNextFile'.
-
Hier mal eine andere Variante zur Rekursiven Dateisuche. Diesmal mit Objekt gelöst.
Konkret: Funktion um eine Datei rekursiv in einem Pfad zu suchen. Rückgabe - der Dateipfad.Spoiler anzeigen
[autoit]Dim $Datei = "autoit3.exe"
[/autoit] [autoit][/autoit] [autoit]
Dim $Ordner = @ProgramFilesDir
MsgBox(0, '', _RecursiveFileSearch($Datei, $Ordner) );--------------------------------------------------------------------------------------------------
[/autoit]
; Funktion _RecursiveFileSearch($FILE, $SEARCHFOLDER)
;
; Beschreibung Sucht nach vorgegebener Datei in einem Ordner rekursiv
;
; Parameter $FILE: zu suchende Datei
; $SEARCHFOLDER: Ordner für Suchstart
;
; Rückgabe Erfolg: Pfad der gesuchten Datei
; @error = 0
; Fehler: 1-kein Dateiname / 2-kein Ordnername übergeben (3-beides); 4-Datei nicht vorhanden
; @error = 1
;
; Autor BugFix ([email='bugfix@autoit.de'][/email])
;--------------------------------------------------------------------------------------------------
Func _RecursiveFileSearch($FILE, $SEARCHFOLDER)
Global $PathFound = ""
Dim $Fehler = 0
If $FILE = "" Then
SetError(1)
$Fehler += 1
EndIf
If $SEARCHFOLDER = "" Then
SetError(1)
$Fehler += 2
EndIf
If @error Then Return $Fehler
$FSO = ObjCreate("Scripting.FileSystemObject")
ShowSubfolders( $FSO.GetFolder($SEARCHFOLDER), $FILE )
If $PathFound = "" Then
SetError(1)
$Fehler = 4
Return $Fehler
Else
SetError(0)
EndIf
Return $PathFound
EndFunc
Func ShowSubFolders($Folder, $FILE)
For $Subfolder in $Folder.SubFolders
If FileExists($Subfolder.Path & "\" & $FILE) Then
$PathFound = $Subfolder.Path & "\" & $FILE
ExitLoop
EndIf
ShowSubFolders( $Subfolder, $FILE )
Next
EndFunc
; ==>_RecursiveFileSearch -
Erstelle das in einem Editor deiner Wahl
und speichere es als z.B. "AutoitMenu.reg" ab. Dann darauf Doppelklick - das wars. Nach einem Neustart ist es verfügbar. -
Für XP-Benutzer, die auch den XP-Style verwenden, hier eine Möglichkeit das Autoit-Forum (od. jede beliebige Anwendung) direkt bei <Start>, unterhalb der Schaltfläche <Ausführen>, einzubinden.
So sieht es aus:
[Blockierte Grafik: http://img-up.net/img/menuSgk.png]Dazu einfach einen Registry-Eintrag erstellen:
Spoiler anzeigen
Code
Alles anzeigenWindows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\CLSID\{2559a1f6-21d7-11d4-bdaf-00c04f60b9f0}] @="AutoIt.DE" [HKEY_CLASSES_ROOT\CLSID\{2559a1f6-21d7-11d4-bdaf-00c04f60b9f0}\DefaultIcon] @="autoit24x24.ico" 00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,68,00,70,00,6c,00,69,00,\ 6e,00,6b,00,2e,00,69,00,63,00,6f,00,00,00 [HKEY_CLASSES_ROOT\CLSID\{2559a1f6-21d7-11d4-bdaf-00c04f60b9f0}\InProcServer32] @=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\ 00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,00,68,00,\ 64,00,6f,00,63,00,76,00,77,00,2e,00,64,00,6c,00,6c,00,00,00 "ThreadingModel"="Apartment" [HKEY_CLASSES_ROOT\CLSID\{2559a1f6-21d7-11d4-bdaf-00c04f60b9f0}\Instance] "CLSID"="{3f454f0e-42ae-4d7c-8ea3-328250d6e272}" [HKEY_CLASSES_ROOT\CLSID\{2559a1f6-21d7-11d4-bdaf-00c04f60b9f0}\Instance\InitPropertyBag] "CLSID"="{13709620-C279-11CE-A49E-444553540000}" "method"="ShellExecute" "Command"="AutoIt.DE" "Param1"="http://autoit.aufwaerts.de" [HKEY_CLASSES_ROOT\CLSID\{2559a1f6-21d7-11d4-bdaf-00c04f60b9f0}\shellex] [HKEY_CLASSES_ROOT\CLSID\{2559a1f6-21d7-11d4-bdaf-00c04f60b9f0}\shellex\ContextMenuHandlers] [HKEY_CLASSES_ROOT\CLSID\{2559a1f6-21d7-11d4-bdaf-00c04f60b9f0}\shellex\ContextMenuHandlers\{2559a1f6-21d7-11d4-bdaf-00c04f60b9f0}] @="" [HKEY_CLASSES_ROOT\CLSID\{2559a1f6-21d7-11d4-bdaf-00c04f60b9f0}\shellex\MayChangeDefaultMenu] @="" [HKEY_CLASSES_ROOT\CLSID\{2559a1f6-21d7-11d4-bdaf-00c04f60b9f0}\ShellFolder] "Attributes"=dword:00000000- Zeile 3 und 18 enthalten den Titel der Schaltfläche.
- Zeile 19 enthält als Parameter den Aufruf: Webadresse oder Programmpfad.
- Der Name des verwendeten Icons wird in Zeile 5 eingetragen. Das Icon muß 24 x 24 Pixel groß und im Ordner 'Windows' abgespeichert sein.Den Tipp hatte ich mal in einer PC-Zeitschrift gesehen, weiß aber nicht mehr welche das war - also Quelle: 'PC-Zeitschrift'

-
Organisation ist das Schwerste.

Vielleicht kann ich mit ein paar Anregungen helfen.Ein Gemeinschaftsprojekt hängt natürlich stark an der Möglichkeit auch zusammen zu arbeiten.
Waluev: Da du gewissermaßen der 'Projektleiter' bist, solltest du das koordinieren - das geht aber leider nicht mit: Bitte morgen 17 Uhr alle im IRC.
- Mach eine Liste mit Terminvorschlägen
- Jeder Co-Worker äußert sich binnen 1 Woche per Post zu den Terminen und bringt ggf. eigene Terminvorschläge einDann sollte nach 2 Wo. ein gemeinsamer Termin für alle realisierbar sein.
Zu diesem Termin sollten alle Fragen bezüglich der Arbeitsaufteilung geklärt werden. Denn Termine, an denen alle können sind nunmal rar.
Stellt eure Scripte auf eine gemeinsame Plattformen, wo ihr alle drauf zugreifen könnt (File-Server od. gemeinsamer GoogleMail-Acc. ==> 2GB Speicherplatz gratis [hab noch ne Menge davon
] )Alles andere per Post im Forum.
Ich wünsche euch viel Erfolg und auf eure Fragen lauern wir schon ganz gierig. :]
-
[autoit]
$APP_CHKBOX[$i]
[/autoit]Dieses Array enthält deine Checkboxen (Anzahl ermittelst du mit Ubound).
Status ermitteln:
[autoit]If GuiCtrlRead($APP_CHKBOX[$i]) = $GUI_CHECKED Then
[/autoit] -
Hi, hiermit werden die CD/DVD-Laufwerke (alles was Type 'CDROM' hat) ausgegeben. Schließt auch virtuelle Laufwerke ein, die registrieren sich ebenfalls als CDROM.
Spoiler anzeigen
[autoit]; Generated by AutoIt Scriptomatic
[/autoit] [autoit][/autoit] [autoit]
$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$colItems = ""
$strComputer = "localhost"$Output=""
[/autoit] [autoit][/autoit] [autoit]
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_CDROMDrive", "WQL", _
$wbemFlagReturnImmediately + $wbemFlagForwardOnly)If IsObj($colItems) then
[/autoit]
For $objItem In $colItems
$Output = $Output & "Caption: " & $objItem.Caption & @CRLF
$Output = $Output & "Drive: " & $objItem.Drive & @CRLF
if Msgbox(1,"WMI Output",$Output) = 2 then ExitLoop
$Output=""
Next
Else
Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_CDROMDrive" )
EndifEDIT:
Und hiermit kannst du rekursiv nach "nerocmd.exe" suchen:Spoiler anzeigen
[autoit]Dim $file = "nerocmd.exe"
[/autoit] [autoit][/autoit] [autoit]
Dim $SearchFolder = @ProgramFilesDir
Dim $PathFound
$FSO = ObjCreate("Scripting.FileSystemObject")
ShowSubfolders( $FSO.GetFolder($SearchFolder) )
MsgBox(0, '', "gefunden: " & $PathFound)Func ShowSubFolders($Folder)
[/autoit]
For $Subfolder in $Folder.SubFolders
If FileExists($Subfolder.Path & "\" & $file) Then
$PathFound = $Subfolder.Path & "\" & $file
ExitLoop
EndIf
ShowSubFolders( $Subfolder )
Next
EndFunc -
Dann gib einfach die ersten Buchstaben ein:
[Blockierte Grafik: http://img-up.net/img/ispressedwTC.PNG]Viel einfacher aber:
Befehl in SciTE schreiben, markieren und dann F1 drücken. -
hier, das funzt bei mir prima:
Spoiler anzeigen
[autoit]#include <Misc.au3>
[/autoit] [autoit][/autoit] [autoit]
HotKeySet("{F9}", "_pause")
HotKeySet("^e", "_end")
$N = 0
While 1
$N += 1
ToolTip($N)
Sleep(500)
WEndFunc _pause()
[/autoit] [autoit][/autoit] [autoit]
Do
Sleep(100)
Until _IsPressed("79") ; F10
EndFuncFunc _end()
[/autoit]
Exit
EndFuncDu kannst ja mal den Wert für Slep in der Pause-Funktion auf 10 runtersetzen.
-
-
Zitat
aber was bezweckst du mit
While 1
Sleep(100)
;programmcode
WEndDas sollte nur dein eigentliches Programm symbolisieren