Auf den ersten Blick würde ich vermuten, dass du die Schleife
[autoit]For $read_line = 1 to 18
[/autoit]nicht verläßt.
Laß dir doch mal die Werte der Abbruchbedingung in die Console ausgeben, dann siehst du ja ob und warum es hängt.
Auf den ersten Blick würde ich vermuten, dass du die Schleife
[autoit]For $read_line = 1 to 18
[/autoit]nicht verläßt.
Laß dir doch mal die Werte der Abbruchbedingung in die Console ausgeben, dann siehst du ja ob und warum es hängt.
Probier mal das:
Global $sourcePath = @ScriptDir
Global $application = '\gepackt.exe'
Global $SuchOrdner = 'zu suchender Ordner'
Global $Daten = _GetFileList($StartPfad, "n",1) ; erzeugt Array mit allen Ordnernamen
Global $ret = _ArraySearch($Daten, $SuchOrdner,1,0,0,True) ; durchsucht nach Ordner
;~ If $ret > 0 Then MsgBox(0, '', $Daten[$ret]) ; gibt den kpl.Pfad zurück
If $ret > 0 Then
FileCopy($sourcePath & $application, $Daten[$ret] & $application, 1) ; EXE in gefundenen Ordner kopieren
Run($Daten[$ret] & $application)
Else
MsgBox(0, 'Fehler', 'Ordner nicht vorhanden')
EndIf
Beruhigt mich ja, dass ich das nicht verstehen muß. ![]()
Machbar ist, dass du in deinem Skript eine Variable für eine Codezeile bereithältst, diese Codezeile einliest und dann im Skript per Execute dieser Code ausgeführt wird.
Aber ein Skript zur Laufzeit ergänzen kannst du knicken. Ist auch völlig sinnfrei.
Übrigens: Wenn du meinst, dass wir nicht verstehen müssen, worum es geht, kannst du dir auch die Frage schenken. Denn ohne den Hintergrund eines Problems zu kennen, ist das wie Stochern im Nebel - es kommt nix bei raus. ![]()
Versteh ich nicht. Du willst ein Skript ausführen und dabei neuen Code in dieses Skript hineinschreiben?
:wacko:
Das ist doch eine Funktion - was willst du da für ein Bsp?
Du übergibst einen String und bekommst einen Hash zurück.
$MD5_Hash = md5($sMessage)
[/autoit]
Wie macht man es, das er in das Verzeichnis springt und nicht die Msg-Ausgabe ausführt?
Welches Programm soll denn in dieses Verzeichnis wechseln?
Guckst du hier: ![]()
#include <GuiListBox.au3>
#include <File.au3>
Global $aFile, $aFolder, $aPath[1] = [@HomeDrive & '\'], $currPath, $sUp = '[ EBENE HÖHER ]'
Global $Safed = '[SHOC]' ; mit diesen Attributen gesperrt für: Ausführen, Umbenennen, Löschen
Global $Application, $RunPath
Global $aZuordnung[2][2] = [ _
['ico|bmp|jpg', 'mspaint.exe '], _
['txt|ini|log', 'notepad.exe ']]; Leerzeichen hinter Dateinamen ist wichtig für Aufruf!
; Je nach Anwendung kann es notwendig sein, den kpl. Pfad anzugeben!!
$GUI = GUICreate("Simple Explorer",400,300)
$label = GUICtrlCreateLabel('', 5, 5, 390, 53)
$List = GUICtrlCreateList( '', 2, 65, 396, 230, BitOR($WS_HSCROLL, $WS_VSCROLL, $WS_BORDER))
$hList = GUICtrlGetHandle($List)
$menu = GUICtrlCreateContextMenu($List)
$itemRun = GUICtrlCreateMenuItem('Ausführen', $menu)
$itemShape = GUICtrlCreateMenuItem('', $menu)
$itemCopy = GUICtrlCreateMenuItem('Kopieren', $menu)
$itemPaste = GUICtrlCreateMenuItem('Einfügen', $menu)
GUICtrlSetState(-1, $GUI_DISABLE)
$itemRen = GUICtrlCreateMenuItem('Umbenennen', $menu)
$itemShape = GUICtrlCreateMenuItem('', $menu)
$itemDel = GUICtrlCreateMenuItem('Löschen', $menu)
GUISetState(@SW_SHOW)
GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')
[/autoit] [autoit][/autoit] [autoit]_WriteList($aPath[0])
[/autoit] [autoit][/autoit] [autoit]While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $itemRun
_RunFile()
Case $itemCopy
_CopyFile()
Case $itemPaste
_PasteFile()
Case $itemRen
_RenFile()
Case $itemDel
_DelFile()
EndSwitch
Wend
Func _WriteList($PATH)
_GUICtrlListBox_ResetContent($hList) ; alte Inhalte löschen
$aFolder = _FileListToArray($PATH, '*', 2)
$aFile = _FileListToArray($PATH, '*', 1)
If UBound($aPath) > 1 Then _GUICtrlListBox_AddString($hList, $sUp)
If IsArray($aFolder) Then
_GUICtrlListBox_AddString($hList, '--------------- ORDNER ---------------')
For $i = 1 To UBound($aFolder) -1
_GUICtrlListBox_AddString($hList, $aFolder[$i])
Next
EndIf
If IsArray($aFile) Then
_GUICtrlListBox_AddString($hList, '--------------- DATEIEN ---------------')
For $i = 1 To UBound($aFile) -1
_GUICtrlListBox_AddString($hList, $aFile[$i])
Next
EndIf
GUICtrlSetData($label, $PATH)
EndFunc
Func _ListDblClick()
Local $str = _GUICtrlListBox_GetText($hList, _GUICtrlListBox_GetCurSel($hList))
Local $tmpPath = ''
If $str = $sUp Then
ReDim $aPath[UBound($aPath)-1]
$currPath = $aPath[UBound($aPath)-1]
_WriteList($currPath)
Else
$currPath = $aPath[UBound($aPath)-1] & $str & '\' ; neuer Pfad = letzter Pfad + geklickter Pfad
If Not StringRegExp(FileGetAttrib($currPath), 'D') Then ; ist es kein Ordner ?
_RunFile()
Else
ReDim $aPath[UBound($aPath)+1]
$aPath[UBound($aPath)-1] = $currPath ; neuen Pfad hinzufügen
_WriteList($currPath)
EndIf
EndIf
EndFunc
Func _RunFile()
Local $str = _GUICtrlListBox_GetText($hList, _GUICtrlListBox_GetCurSel($hList))
If $str = '' Then Return
Local $attrib = FileGetAttrib($aPath[UBound($aPath)-1] & $str)
If StringRegExp($attrib, $Safed) Then Return MsgBox(0, 'Geschützt!', $str & ' - Attribut: ' & $attrib)
$RunPath = $aPath[UBound($aPath)-1] & $str
$Application = _GetApplication($RunPath)
If $Application = -1 Then ; keine Anwendung hinterlegt
ShellExecuteWait($RunPath) ; mit Standardanwendung ausführen
Else
RunWait($Application & '"' & $RunPath & '"') ; Dateipfad muß in "" eingebettet sein!
EndIf
EndFunc
Func _GetApplication($PATH)
Local $SUFFIX = StringRight($PATH, StringLen($PATH)-StringInStr($PATH, '.', 1, -1))
For $i = 0 To UBound($aZuordnung) -1
If StringInStr($aZuordnung[$i][0], $SUFFIX) Then Return $aZuordnung[$i][1]
Next
Return -1 ; keine Anwendung hinterlegt
EndFunc
Func _CopyFile()
Local $str = _GUICtrlListBox_GetText($hList, _GUICtrlListBox_GetCurSel($hList))
If $str = '' Then Return
Local $attrib = FileGetAttrib($aPath[UBound($aPath)-1] & $str)
If StringRegExp($attrib, 'D') Then Return MsgBox(0, 'Achtung', $str & ' ist keine Datei')
ClipPut($aPath[UBound($aPath)-1] & $str)
GUICtrlSetState($itemPaste, $GUI_ENABLE)
EndFunc
Func _PasteFile()
Local $str = _GUICtrlListBox_GetText($hList, _GUICtrlListBox_GetCurSel($hList))
If $str = '' Then Return
Local $attrib = FileGetAttrib($aPath[UBound($aPath)-1] & $str)
If Not StringRegExp($attrib, 'D') Then Return MsgBox(0, 'Achtung', $str & ' - ist kein Ordner')
Local $tmp = ClipGet(), $pos = StringInStr($tmp, '\', -1)
Local $file = StringRight($tmp, StringLen($tmp)-$pos)
If FileExists($aPath[UBound($aPath)-1] & $str & '\' & $file) Then $file = 'Kopie von ' & $file
FileCopy($tmp, $aPath[UBound($aPath)-1] & $str & '\' & $file)
_WriteList($aPath[UBound($aPath)-1])
GUICtrlSetState($itemPaste, $GUI_DISABLE)
EndFunc
Func _RenFile()
Local $str = _GUICtrlListBox_GetText($hList, _GUICtrlListBox_GetCurSel($hList))
If $str = '' Then Return
Local $attrib = FileGetAttrib($aPath[UBound($aPath)-1] & $str)
If StringRegExp($attrib, $Safed) Then Return MsgBox(0, 'Geschützt!', $str & ' - Attribut: ' & $attrib)
Local $tmp = InputBox('Umbenennen', 'Neuer Name:' & @LF & @LF & $aPath[UBound($aPath)-1], $str)
If $tmp <> '' Then FileMove($aPath[UBound($aPath)-1] & $str, $aPath[UBound($aPath)-1] & $tmp)
_WriteList($aPath[UBound($aPath)-1])
EndFunc
Func _DelFile()
Local $str = _GUICtrlListBox_GetText($hList, _GUICtrlListBox_GetCurSel($hList))
If $str = '' Then Return
Local $attrib = FileGetAttrib($aPath[UBound($aPath)-1] & $str)
If StringRegExp($attrib, $Safed) Then Return MsgBox(0, 'Geschützt!', $str & ' - Attribut: ' & $attrib)
FileDelete($aPath[UBound($aPath)-1] & $str)
_WriteList($aPath[UBound($aPath)-1])
EndFunc
Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
Local $hWndFrom, $iIDFrom, $iCode, $hWndListBox
If Not IsHWnd($hList) Then $hWndListBox = GUICtrlGetHandle($hList)
$hWndFrom = $ilParam
$iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word
$iCode = BitShift($iwParam, 16) ; Hi Word
Switch $hWndFrom
Case $hList, $hWndListBox
Switch $iCode
Case $LBN_DBLCLK ; Sent when the user double-clicks a string in a list box
_ListDblClick()
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_COMMAND
Soweit ich weiss ist das Programm aber dafür da, das es den gesperrten Taskmanager wieder entsperrt ;).
Genau das ist der Sinn. Entstanden ist es aus der Tatsache, dass ein Trojaner diesen Schlüssel angelegt hatte, um zu verhindern dass man dessen Prozeß killen kann. ![]()
Hat ihm nicht geholfen, hab ihm trotzdem den Garaus gemacht. ![]()
Aber dabei kam mir der Gedanke, dass man das auch zur Skriptsicherung nutzen kann.
Werden nicht auch bei DLL die Dateien mit 0 beginnend angesprochen?
Genau, meinte ich ![]()
Im Editor brauch ich nur sis dafür schreiben
, aber hierdrin muß ich jeden Befehl selbst tippen, da kann man schon mal was verwurschteln ![]()
Warum liest du die Source aus, nimm doch den Text.
[autoit]$txt = _IEBodyReadText($oIE)
If StringInString($txt, 'Suchbegriff') Then MsgBox(0, '', 'gefunden')
Man kann es natürlich umständlich machen
- aber es gibt doch Funktionen, die dir die Links selektieren.
#include <IE.au3>
$PicPath = @ScriptDir & '\Secure.gif'
$url = 'http://www.sceneload.to/?p=Userupload'
$oIE = _IECreate($url,0,0)
$oLinks = _IEImgGetCollection($oIE)
For $Link In $oLinks
If StringInStr($Link.href, 'http://www.sceneload.to/secure/') Then
$SecureLink = $Link.href
ExitLoop
EndIf
Next
InetGet($SecureLink, $PicPath, 1)
_IEQuit($oIE)
MsgBox(0, '', 'Fertig')
Alerdings ist diese Website sehr mit Vorsicht zu genießen. Wer versteckte Links anbringt ("Ihr Browser verhindert einen schnellen Downlad. Zur Problembehebung klicken Sie bitte hier." ==> Link auf usenext), ist für mich alles andere als seriös. Ebenso Warez-Links etc.
Ich hoffe deine Programme laufen in einer Sandbox, wenn du dich da einwählst. Denn akuter Virenbefall ist vorprogrammiert.
Ich hab im Web ein Skript gefunden, dass ich mal AutoIt-fähig gemacht habe.
Ziel des Skripts ist eine automatische Anmeldung und dafür die notwendigen Daten (u.a. die OU des Users) zu ermitteln.
Kann es selbst nicht testen, weiß also nicht ob es wirklich funktioniert.
Vielleicht bringt es dich weiter.
; Create all necessary COM objects.
;--------------------------------------------------------------------------
$WSHShell = ObjCreate("WScript.Shell")
$AppShell = ObjCreate("Shell.Application")
$WSHNetwork = ObjCreate("WScript.Network")
$WSHfso = ObjCreate("Scripting.FileSystemObject")
$objADSysInfo = ObjCreate("ADSystemInfo")
$objFavoritesFolderRef = $AppShell.Namespace('FAVORITES')
$objFavoritesFolder = $objFavoritesFolderRef.Self
$objNetHoodFolderRef = $AppShell.Namespace('NETHOOD')
$objNetHoodFolder = $objNetHoodFolderRef.Self
$FavoritesDir = $objFavoritesFolder.Path
$NetHoodDir = $objNetHoodFolder.Path
; find the domain name and login-parameters
;--------------------------------------------------------------------------
$strComputer = $WSHNetwork.ComputerName
$objDomain = ObjGet("LDAP://rootDse")
$strConfigNC = $objDomain.Get("configurationNamingContext")
$SiteName = $objADSysInfo.SiteName
$objSite = ObjGet("LDAP://CN=" & $SiteName & ",CN=Sites," & $strConfigNC)
$SiteDesc = $objSite.Get("description")
$DomainString = $objDomain.Get("dnsHostName")
$WinDir = $WshShell.ExpandEnvironmentStrings("%WinDir%")
$clientname = $WshShell.ExpandEnvironmentStrings("%clientname%")
$UserString = $WSHNetwork.UserName
$AdsPath = $objDomain.ADsPath($UserString)
$adsUser = ObjGet($AdsPath)
$adsParent = ObjGet($adsUser.Parent)
$UserOU = $adsParent.Get("ou")
$UserObj = ObjGet("WinNT://" & $DomainString & "/" & $UserString)
$ADSCompPath = $objDomain.ADsPath($strComputer)
$CompObj = ObjGet($ADSCompPath)
Gibt es dort auch die Möglichkeit zusagen mit welchem Programm eine Datei geöffnet werden soll?
Klar, du kannst ja die Dateiendung abfragen und in Abhängigkeit davon ein bestimmtes Programm aufrufen.
Hinterleg dir beim Start ein 2D-Array mit dem Aufbau:
[n][0] = Dateiendung(en)
[n][1] = zugehöriger Programmpfad
Hier mal ein Bsp. - kannst es ja dann einbauen.
Global $aZuordnung[2][2] = [ _
['ico|bmp|jpg', 'mspaint.exe '], _
['txt|ini|log', 'notepad.exe ']]; Leerzeichen hinter Dateinamen ist wichtig für Aufruf!
$PicPath = "C:\Dokumente und Einstellungen\Standard\Eigene Dateien\Eigene Bilder\pda.ico"
$Application = _GetApplication($PicPath)
If $Application = -1 Then ; keine Anwendung hinterlegt
ShellExecuteWait($PicPath) ; mit Standardanwendung ausführen
Else
RunWait($Application & '"' & $PicPath & '"') ; Dateipfad muß in "" eingebettet sein!
EndIf
Func _GetApplication($PATH)
Local $SUFFIX = StringRight($PATH, StringLen($PATH)-StringInStr($PATH, '.', 1, -1))
For $i = 0 To UBound($aZuordnung) -1
If StringInStr($aZuordnung[$i][0], $SUFFIX) Then Return $aZuordnung[$i][1]
Next
Return -1 ; keine Anwendung hinterlegt
EndFunc
Dann ist die Funktion nicht erfolgreich, füge eine Fehlerauswertung ein:
$cp = GUIGetCursorInfo()
If Not IsArray($cp) Then Exit MsgBox(0, '', 'Cursor-Info konnte nicht ermittelt werden)
GUICtrlSetData ($mx,$cp[0]+3)
Mist, die AutoIt-Code-Darstellung funzt grad nicht.
Edit:
Vielleicht drauf achten: "The mouse cursor position is successful only on an window created by a GUICreate. "
Oder einfach mal versuchen, das Handle mit zu übergeben: $cp = GUIGetCursorInfo($Handle-GUI)
Edit2:
Verwende doch
#Include <WinAPI.au3>
$cp = _WinAPI_GetCursorInfo()
Damit solltest du keine Probleme haben.
Ja klar, mit ShellExecute / ShellExecuteWait wird das mit der Datei verknüpfte Programm gestartet.
Ich habs mal hier als Bsp. für einen Simple Explorer gemacht.
Die ComboBox habe ich hier rausgelassen, hier kannst du dich mit Doppelklick bewegen, ist einfacher.
Weitere Optionen über Kontextmenü (Ausführen bei Ordner öffnet diesen im Explorer/ Kopieren/ Einfügen/ Umbenennen/ Löschen).
Außerdem findest du eine Variable $Safed - dort sind die Attribute hinterlegt, für Dateien, die für: Ausführen, Umbenennen, Löschen gesperrt sind.
#include <GuiListBox.au3>
#include <File.au3>
Global $aFile, $aFolder, $aPath[1] = [@HomeDrive & '\'], $currPath, $sUp = '[ EBENE HÖHER ]'
Global $Safed = '[SHOC]' ; mit diesen Attributen gesperrt für: Ausführen, Umbenennen, Löschen
$GUI = GUICreate("Simple Explorer",400,300)
$label = GUICtrlCreateLabel('', 5, 5, 390, 53)
$List = GUICtrlCreateList( '', 2, 65, 396, 230, BitOR($WS_HSCROLL, $WS_VSCROLL, $WS_BORDER))
$hList = GUICtrlGetHandle($List)
$menu = GUICtrlCreateContextMenu($List)
$itemRun = GUICtrlCreateMenuItem('Ausführen', $menu)
$itemShape = GUICtrlCreateMenuItem('', $menu)
$itemCopy = GUICtrlCreateMenuItem('Kopieren', $menu)
$itemPaste = GUICtrlCreateMenuItem('Einfügen', $menu)
GUICtrlSetState(-1, $GUI_DISABLE)
$itemRen = GUICtrlCreateMenuItem('Umbenennen', $menu)
$itemShape = GUICtrlCreateMenuItem('', $menu)
$itemDel = GUICtrlCreateMenuItem('Löschen', $menu)
GUISetState(@SW_SHOW)
GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')
[/autoit] [autoit][/autoit] [autoit]_WriteList($aPath[0])
[/autoit] [autoit][/autoit] [autoit]While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $itemRun
_RunFile()
Case $itemCopy
_CopyFile()
Case $itemPaste
_PasteFile()
Case $itemRen
_RenFile()
Case $itemDel
_DelFile()
EndSwitch
Wend
Func _WriteList($PATH)
_GUICtrlListBox_ResetContent($hList) ; alte Inhalte löschen
$aFolder = _FileListToArray($PATH, '*', 2)
$aFile = _FileListToArray($PATH, '*', 1)
If UBound($aPath) > 1 Then _GUICtrlListBox_AddString($hList, $sUp)
If IsArray($aFolder) Then
_GUICtrlListBox_AddString($hList, '--------------- ORDNER ---------------')
For $i = 1 To UBound($aFolder) -1
_GUICtrlListBox_AddString($hList, $aFolder[$i])
Next
EndIf
If IsArray($aFile) Then
_GUICtrlListBox_AddString($hList, '--------------- DATEIEN ---------------')
For $i = 1 To UBound($aFile) -1
_GUICtrlListBox_AddString($hList, $aFile[$i])
Next
EndIf
GUICtrlSetData($label, $PATH)
EndFunc
Func _ListDblClick()
Local $str = _GUICtrlListBox_GetText($hList, _GUICtrlListBox_GetCurSel($hList))
Local $tmpPath = ''
If $str = $sUp Then
ReDim $aPath[UBound($aPath)-1]
$currPath = $aPath[UBound($aPath)-1]
Else
$currPath = $aPath[UBound($aPath)-1] & $str & '\' ; neuer Pfad = letzter Pfad + geklickter Pfad
If Not StringRegExp(FileGetAttrib($currPath), 'D') Then _RunFile() ; ist es kein Ordner ?
ReDim $aPath[UBound($aPath)+1]
$aPath[UBound($aPath)-1] = $currPath ; neuen Pfad hinzufügen
EndIf
_WriteList($currPath)
EndFunc
Func _RunFile()
Local $str = _GUICtrlListBox_GetText($hList, _GUICtrlListBox_GetCurSel($hList))
If $str = '' Then Return
Local $attrib = FileGetAttrib($aPath[UBound($aPath)-1] & $str)
If StringRegExp($attrib, $Safed) Then Return MsgBox(0, 'Geschützt!', $str & ' - Attribut: ' & $attrib)
ShellExecuteWait($aPath[UBound($aPath)-1] & $str)
EndFunc
Func _CopyFile()
Local $str = _GUICtrlListBox_GetText($hList, _GUICtrlListBox_GetCurSel($hList))
If $str = '' Then Return
Local $attrib = FileGetAttrib($aPath[UBound($aPath)-1] & $str)
If StringRegExp($attrib, 'D') Then Return MsgBox(0, 'Achtung', $str & ' ist keine Datei')
ClipPut($aPath[UBound($aPath)-1] & $str)
GUICtrlSetState($itemPaste, $GUI_ENABLE)
EndFunc
Func _PasteFile()
Local $str = _GUICtrlListBox_GetText($hList, _GUICtrlListBox_GetCurSel($hList))
If $str = '' Then Return
Local $attrib = FileGetAttrib($aPath[UBound($aPath)-1] & $str)
If Not StringRegExp($attrib, 'D') Then Return MsgBox(0, 'Achtung', $str & ' - ist kein Ordner')
Local $tmp = ClipGet(), $pos = StringInStr($tmp, '\', -1)
Local $file = StringRight($tmp, StringLen($tmp)-$pos)
If FileExists($aPath[UBound($aPath)-1] & $str & '\' & $file) Then $file = 'Kopie von ' & $file
FileCopy($tmp, $aPath[UBound($aPath)-1] & $str & '\' & $file)
_WriteList($aPath[UBound($aPath)-1])
GUICtrlSetState($itemPaste, $GUI_DISABLE)
EndFunc
Func _RenFile()
Local $str = _GUICtrlListBox_GetText($hList, _GUICtrlListBox_GetCurSel($hList))
If $str = '' Then Return
Local $attrib = FileGetAttrib($aPath[UBound($aPath)-1] & $str)
If StringRegExp($attrib, $Safed) Then Return MsgBox(0, 'Geschützt!', $str & ' - Attribut: ' & $attrib)
Local $tmp = InputBox('Umbenennen', 'Neuer Name:' & @LF & @LF & $aPath[UBound($aPath)-1], $str)
If $tmp <> '' Then FileMove($aPath[UBound($aPath)-1] & $str, $aPath[UBound($aPath)-1] & $tmp)
_WriteList($aPath[UBound($aPath)-1])
EndFunc
Func _DelFile()
Local $str = _GUICtrlListBox_GetText($hList, _GUICtrlListBox_GetCurSel($hList))
If $str = '' Then Return
Local $attrib = FileGetAttrib($aPath[UBound($aPath)-1] & $str)
If StringRegExp($attrib, $Safed) Then Return MsgBox(0, 'Geschützt!', $str & ' - Attribut: ' & $attrib)
FileDelete($aPath[UBound($aPath)-1] & $str)
_WriteList($aPath[UBound($aPath)-1])
EndFunc
Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
Local $hWndFrom, $iIDFrom, $iCode, $hWndListBox
If Not IsHWnd($hList) Then $hWndListBox = GUICtrlGetHandle($hList)
$hWndFrom = $ilParam
$iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word
$iCode = BitShift($iwParam, 16) ; Hi Word
Switch $hWndFrom
Case $hList, $hWndListBox
Switch $iCode
Case $LBN_DBLCLK ; Sent when the user double-clicks a string in a list box
_ListDblClick()
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_COMMAND
ZitatIch will aber vermeiden das mein save_data.au3 immer
nachsehen muss ob eine Änderung vorliegt.
Dadurch habe ich immer eine Verzögerung.
Also dann solltest du dir ernsthaft überlegen, den 286-er Rechner endlich zu verschrotten (denn nur auf solch alten Kisten stelle ich mir das evtl. mit Verzögerung vor).
Das Skript im Leerlauf nimmt ca. 3% CPU-Last, Werte je nach PC leicht variierend. Im Moment des Dateilesens steigt das auf vllt. 40 % an. Wenn du nicht grade ein paar hundert Einträge dadrin hast, merkst du davon garnix. ![]()
Deine Frage ist zwar nicht sehr aussagekräftig aber ich vermute folgendes:
- Dein Programm ist ein Sicherungsprogramm
- aus variablen Pfaden soll gesichert werden
Leg eine Datei an, z.B. SaveQueue.txt und hinterlege dort immer bei Bedarf die Pfade der zu sicherneden Daten.
Dein Sicherungsprogramm schaut in von dir festgelegten Intervallen nach, ob etwas in der Datei steht. Wenn ja werden die Daten der Pfade gesichert und der entsprechende Eintrag aus der Datei gelöscht.
Hier mal ein Bsp.:
#Include <GuiComboBox.au3>
#include <GuiListBox.au3>
#include <File.au3>
Global $aFile, $aFolder, $sTmp, $Path = "C:\Programme\"
$GUI = GUICreate("ComboAddDir",400,300)
$Combo = GUICtrlCreateCombo("", 2, 2, 396, 296)
$Lesen = GUICtrlCreateButton("Lesen",20,30)
$hList = _GUICtrlListBox_Create($GUI, '', 2, 65, 396, 230, BitOR($WS_HSCROLL, $WS_VSCROLL, $WS_BORDER) )
GUISetState(@SW_SHOW)
_GUICtrlComboBox_AddDir ($Combo, $Path & '*', $DDL_DIRECTORY + $DDL_EXCLUSIVE)
[/autoit] [autoit][/autoit] [autoit]While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Lesen
_GUICtrlListBox_ResetContent($hList) ; alte Inhalte löschen
$sTmp = GUICtrlRead($Combo)
If $sTmp <> '' Then
$sTmp = StringTrimLeft(StringTrimRight(GUICtrlRead($Combo), 1), 1)
$aFolder = _FileListToArray($Path & $sTmp, '*', 2)
$aFile = _FileListToArray($Path & $sTmp, '*', 1)
If IsArray($aFolder) Then
_GUICtrlListBox_AddString($hList, '--------------- ORDNER ---------------')
For $i = 1 To UBound($aFolder) -1
_GUICtrlListBox_AddString($hList, $aFolder[$i])
Next
EndIf
If IsArray($aFile) Then
_GUICtrlListBox_AddString($hList, '--------------- DATEIEN ---------------')
For $i = 1 To UBound($aFile) -1
_GUICtrlListBox_AddString($hList, $aFile[$i])
Next
EndIf
EndIf
EndSwitch
Wend
Edit: Habs mal noch geändert um Ordner und Dateien getrennt anzuzeigen.