Hi Leute,
Ich weiß nicht, ob ihr das kennt aber bei mir ist es jedenfalls so. Ich hab in meinem Programmordner, wo ich alle meine Setup's etc sammle, zwar eine ganz gute Ordnung, aber oft kann ich aus dem Dateinamen nicht herauslesen, was den dieses Programm tut.
Da hab ich mir gedacht, schreib doch eine Datenbank
Spoiler anzeigen
#region INCLUDES & STUFF
; ### GUI-Includes ###
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiStatusBar.au3>
#include <ListViewConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <ProgressConstants.au3>
#include <ComboConstants.au3>
#include <GuiCombobox.au3>
#include <GuiComboBoxEx.au3>
; ### Other Includes ###
#include <File.au3>
#include <Array.au3>
#include <GuiListView.au3>
#include <SendMessage.au3>
#include <SQLite.au3>
#include <SQLite.dll.au3>
#NoAutoIt3Execute
[/autoit] [autoit][/autoit] [autoit]; ### OPT & REGISTER ###
Opt("TrayAutoPause", 0)
Opt("TrayMenuMode", 1)
Opt("GuiOnEventMode", 1)
Opt("TrayOnEventMode", 1)
OnAutoItExitRegister("_Exit")
[/autoit] [autoit][/autoit] [autoit]AdlibRegister("_UpdateTime", 1000)
[/autoit] [autoit][/autoit] [autoit]_SQLite_Startup()
[/autoit] [autoit][/autoit] [autoit]$hFileList = _SQLite_Open("Filelist.db")
If @error Then _SQLite_Err()
; ### VAR ###
Global $aData[2][3]
Global $aTemp[1]
Global $aParts[3] = [200, 635, 30]
Global $bAbort = False
Global $iSearch
Global $iSearchBackup
Global $sQuery
Global $iIndex
Global $sRadioState
Global $bCloseWindow
Global $sLastComment
Global $hFileList
Global $sRetType
Global $aRet
Local $aResult, $iRows, $iColumns
If Not _SQLite_GetTable2d(-1, "SELECT * FROM Settings;", $aResult, $iRows, $iColumns) = $SQLITE_OK Then
If Not _SQLite_Exec($hFileList, "CREATE TABLE Settings (Type, Value);") = $SQLITE_OK Then
$bAbort = True
_SQLite_Err()
EndIf
_SQLite_Exec(-1,"INSERT INTO Settings values ('DBLCLICK','RUN'); INSERT INTO Settings values ('CLOSEWND','FALSE');") ; buggy
EndIf
If _SQLite_GetTable2d(-1, "SELECT * FROM Settings WHERE Type='DBLCLICK';", $aResult, $iRows, $iColumns) = $SQLITE_OK Then $sRadioState = $aResult[1][1]
If _SQLite_GetTable2d(-1, "SELECT * FROM Settings WHERE Type='CLOSEWND';", $aResult, $iRows, $iColumns) = $SQLITE_OK Then $bCloseWindow = $aResult[1][1]
#endregion INCLUDES & STUFF
[/autoit] [autoit][/autoit] [autoit]#region ### GUI ###
[/autoit] [autoit][/autoit] [autoit]$hMain = GUICreate("Programmdatenbank", 692, 378, 203, 126)
$ListView1 = GUICtrlCreateListView("Dateiname|Pfad|Beschreibung|Größe", 8, 64, 538, 286)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 100)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 100)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 250)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 3, 50)
$Group1 = GUICtrlCreateGroup("Funktionen ", 552, 64, 137, 145)
$ButtonAddEntry = GUICtrlCreateButton("Eintrag hinzufügen", 560, 112, 123, 25, $WS_GROUP)
$ButtonDelEntry = GUICtrlCreateButton("Eintrag löschen", 560, 176, 123, 25, $WS_GROUP)
$ButtonOpenAddFolderGui = GUICtrlCreateButton("Ordner hinzufügen", 560, 80, 123, 25, $WS_GROUP)
$ButtonChangeDesc = GUICtrlCreateButton("Details", 560, 144, 123, 25, $WS_GROUP)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("Suchfeld ", 8, 8, 681, 49)
$InputSearchMain = GUICtrlCreateInput("", 16, 24, 409, 21)
$ButtonSearchMain = GUICtrlCreateButton("Suchen", 432, 24, 123, 25, $WS_GROUP)
$ButtonNextResult = GUICtrlCreateButton("Nächstes Ergebnis", 560, 24, 123, 25, $WS_GROUP)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group3 = GUICtrlCreateGroup("Programmfunktionen ", 552, 216, 137, 81)
$ButtonRunFile = GUICtrlCreateButton("Starten", 560, 232, 123, 25, $WS_GROUP)
$Button10 = GUICtrlCreateButton("Einstellungen", 560, 264, 123, 25)
GUICtrlSetOnEvent(-1, "_Settings")
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group4 = GUICtrlCreateGroup("Andere Funktionen ", 552, 304, 137, 49)
$ButtonExit = GUICtrlCreateButton("Beenden", 560, 320, 123, 25, $WS_GROUP)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$hDesc = GUICreate("Beschreibung ändern", 385, 297, 202, 129)
$Group1 = GUICtrlCreateGroup("Daten", 8, 8, 273, 185)
$LabelFileName = GUICtrlCreateLabel("Dateiname:", 16, 24, 61, 17)
$InputFileName = GUICtrlCreateInput("", 16, 40, 129, 21, BitOR($ES_AUTOHSCROLL, $ES_READONLY))
$LabelFilePath = GUICtrlCreateLabel("Dateipfad:", 16, 64, 53, 17)
$InputFilePath = GUICtrlCreateInput("", 16, 80, 257, 21, BitOR($ES_AUTOHSCROLL, $ES_READONLY))
$LabelFileDesc = GUICtrlCreateLabel("Beschreibung:", 16, 104, 72, 17)
$InputFileDesc = GUICtrlCreateEdit("", 16, 128, 257, 57, $ES_WANTRETURN)
GUICtrlSetData(-1, "")
$LabelFileSizeDesc = GUICtrlCreateLabel("Dateigröße: (MB)", 152, 24, 83, 17)
$InputFileSizeDesc = GUICtrlCreateInput("", 152, 40, 121, 21, BitOR($ES_AUTOHSCROLL, $ES_READONLY))
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("Aktionen", 288, 8, 89, 121)
$ButtonSaveDesc = GUICtrlCreateButton("Speichern", 296, 24, 75, 30, $WS_GROUP)
$ButtonDelEntry_Desc = GUICtrlCreateButton("Löschen", 296, 88, 75, 30, $WS_GROUP)
$ButtonAbort = GUICtrlCreateButton("Abbrechen", 296, 56, 75, 30, $WS_GROUP)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$ButtonRunFileDesc = GUICtrlCreateButton("STARTEN", 288, 136, 89, 57, $WS_GROUP)
$Group4 = GUICtrlCreateGroup("Element auswählen", 8, 200, 369, 89)
$Combo1 = GUICtrlCreateCombo("", 16, 216, 273, 30)
$ButtonNextEntry = GUICtrlCreateButton("Nächstes", 296, 216, 75, 30, $WS_GROUP)
$ButtonPrevEntry = GUICtrlCreateButton("Vorheriges", 296, 248, 75, 30, $WS_GROUP)
$InputSearchDesc = GUICtrlCreateInput("", 16, 254, 193, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL))
$ButtonSearchDesc = GUICtrlCreateButton("Suchen", 216, 248, 75, 30, $WS_GROUP)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$hAddFolder = GUICreate("Ordner hinzufügen", 377, 220, 190, 124)
$Group1 = GUICtrlCreateGroup("Pfad ", 8, 8, 361, 49)
$InputFolderPath = GUICtrlCreateInput("", 16, 24, 257, 21)
$ButtonSelectFolder = GUICtrlCreateButton("Durchsuchen", 280, 22, 83, 25, $WS_GROUP)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("Optionen (Derzeit deaktiviert)", 8, 64, 361, 113)
$CheckboxExludeFiles = GUICtrlCreateCheckbox("Dateien ausschließen", 16, 80, 129, 17)
$LabelFileExtensions = GUICtrlCreateLabel("Datenendungen: ", 16, 104, 87, 17)
$InputFileTypes = GUICtrlCreateInput("", 104, 100, 145, 21)
GUICtrlSetTip(-1, "Verschiedene Dateitypen mit '|' trennen.")
$Label1FileSize = GUICtrlCreateLabel("Datei muss ", 16, 128, 59, 17)
$ComboFileCompareType = GUICtrlCreateCombo("", 80, 124, 49, 25)
GUICtrlSetData(-1, ">|<|=")
$InputFileSize = GUICtrlCreateInput("", 136, 124, 113, 21, BitOR($ES_AUTOHSCROLL, $ES_NUMBER))
$ComboFileSize = GUICtrlCreateCombo("", 256, 124, 73, 25)
GUICtrlSetData(-1, "Byte|Kilobyte|Megabyte|Gigabyte")
$Label2FileSize = GUICtrlCreateLabel("sein", 336, 128, 23, 17)
$Label1NotAllowedChar = GUICtrlCreateLabel("Darf ", 16, 152, 27, 17)
$InputNotAllowedChar = GUICtrlCreateInput("", 48, 148, 201, 21)
GUICtrlSetTip(-1, "Mehrere Phrasen mit '|' trennen.")
$Label2NotAllowedChar = GUICtrlCreateLabel("nicht enthalten", 256, 152, 74, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$ButtonAddFolder = GUICtrlCreateButton("Ordner hinzufügen", 8, 184, 363, 30, $WS_GROUP)
$hSettings = GUICreate("Einstellungen", 209, 120, 206, 145)
$Group1 = GUICtrlCreateGroup("Items", 8, 0, 193, 89)
$Label1 = GUICtrlCreateLabel("Aktion bei Doppelklick in Listview:", 16, 16, 168, 17)
$RadioRunProgramm = GUICtrlCreateRadio("Programm starten", 16, 40, 113, 17)
$RadioShowDetails = GUICtrlCreateRadio("Details anzeigen", 16, 64, 113, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$CheckboxCloseAfterSave = GUICtrlCreateCheckbox("Detail-GUI nach Speichern schließen", 8, 96, 193, 17)
; 1. GUI
GUICtrlSetOnEvent($ButtonAddEntry, "_AddEntry")
GUICtrlSetOnEvent($ButtonDelEntry, "_DeleteEntry")
GUICtrlSetOnEvent($ButtonOpenAddFolderGui, "_AddFolderGui")
GUICtrlSetOnEvent($ButtonChangeDesc, "_ChangeDesc")
GUICtrlSetOnEvent($ButtonSearchMain, "_Search")
GUICtrlSetOnEvent($ButtonNextResult, "_Next")
GUICtrlSetOnEvent($ButtonRunFile, "_Run")
GUICtrlSetOnEvent($ButtonExit, "_Exit")
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit", $hMain)
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
; 2.GUI
GUICtrlSetOnEvent($ButtonSearchDesc, "_hDescSearch")
GUICtrlSetOnEvent($ButtonSaveDesc, "_SaveDesc")
GUICtrlSetOnEvent($ButtonDelEntry_Desc, "_DeleteEntry")
GUICtrlSetOnEvent($ButtonAbort, "_ChangeDesc")
GUICtrlSetOnEvent($ButtonRunFileDesc, "_Run")
GUICtrlSetOnEvent($Combo1, "_SelElement")
GUICtrlSetOnEvent($ButtonNextEntry, "_ChangeElement")
GUICtrlSetOnEvent($ButtonPrevEntry, "_ChangeElement")
GUISetOnEvent($GUI_EVENT_CLOSE, "_ChangeDesc", $hDesc)
; 3.GUI
GUICtrlSetOnEvent($ButtonSelectFolder, "_FileSelectFolder")
GUICtrlSetOnEvent($CheckboxExludeFiles, "_ExcludeFiles")
GUICtrlSetOnEvent($ButtonAddFolder, "_AddFolder")
GUISetOnEvent($GUI_EVENT_CLOSE, "_AddFolderGui", $hAddFolder)
GUICtrlSetState($CheckboxExludeFiles, $GUI_DISABLE)
GUICtrlSetState($InputFileTypes, $GUI_DISABLE)
GUICtrlSetState($ComboFileSize, $GUI_DISABLE)
GUICtrlSetState($InputFileSize, $GUI_DISABLE)
GUICtrlSetState($ComboFileCompareType, $GUI_DISABLE)
GUICtrlSetState($InputNotAllowedChar, $GUI_DISABLE)
GUICtrlSetState($LabelFileExtensions, $GUI_DISABLE)
GUICtrlSetState($Label1FileSize, $GUI_DISABLE)
GUICtrlSetState($Label2FileSize, $GUI_DISABLE)
GUICtrlSetState($Label1NotAllowedChar, $GUI_DISABLE)
GUICtrlSetState($Label2NotAllowedChar, $GUI_DISABLE)
; 4.GUI
Switch $sRadioState
Case "RUN"
GUICtrlSetState($RadioRunProgramm, $GUI_CHECKED)
Case "SHOWDETAILS"
GUICtrlSetState($RadioShowDetails, $GUI_CHECKED)
EndSwitch
Switch $bCloseWindow
Case True
GUICtrlSetState($CheckboxCloseAfterSave, $GUI_CHECKED)
Case False
GUICtrlSetState($CheckboxCloseAfterSave, $GUI_UNCHECKED)
EndSwitch
GUISetOnEvent($GUI_EVENT_CLOSE, "_Settings", $hSettings)
#endregion ### GUI ###
#region STATUSBAR
[/autoit] [autoit][/autoit] [autoit]$hStatusBar1 = _GUICtrlStatusBar_Create($hMain)
_GUICtrlStatusBar_SetParts($hStatusBar1, $aParts)
_Status("Bereit")
$Progress1 = GUICtrlCreateProgress(0, 0, -1, -1, $PBS_MARQUEE)
GUICtrlSetData($Progress1, 0)
$hProgress = GUICtrlGetHandle($Progress1)
_GUICtrlStatusBar_EmbedControl($hStatusBar1, 1, $hProgress)
_UpdateTime()
Global $hListView1 = GUICtrlGetHandle($ListView1)
Global $hCombo1 = GUICtrlGetHandle($Combo1)
#endregion STATUSBAR
#region MAIN PROGRAMM
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]GUICtrlSetState($InputSearchMain, $GUI_FOCUS)
[/autoit] [autoit][/autoit] [autoit]GUISetState(@SW_SHOW, $hMain)
[/autoit] [autoit][/autoit] [autoit]_ReadSQLiteDB()
[/autoit] [autoit][/autoit] [autoit]#endregion MAIN PROGRAMM
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]While 1
Sleep(100)
WEnd
#region ############################## ################ ##############################
#region ############################## SQLITE FUNCTIONS ##############################
#region ############################## ################ ##############################
Func _ReadSQLiteDB()
Local $aData, $iRows, $iColumns
If Not _SQLite_GetTable2d(-1, "SELECT * FROM Programms;", $aData, $iRows, $iColumns) = $SQLITE_OK Then
If Not _SQLite_Exec($hFileList, "CREATE TABLE Programms (Name, Path, Comment, Size);") = $SQLITE_OK Then
$bAbort = True
_SQLite_Err()
EndIf
EndIf
_GUICtrlListView_DeleteAllItems($hListView1)
_GUICtrlListView_AddArray($hListView1, $aData)
_GUICtrlListView_DeleteItem($hListView1, 0)
EndFunc ;==>_ReadSQLiteDB
Func _SQLite_Err($bExit = True)
MsgBox(16, "SQLite Error", _SQLite_ErrMsg())
If $bExit Then Exit
EndFunc ;==>_SQLite_Err
#endregion ############################## ################ ##############################
[/autoit] [autoit][/autoit] [autoit]#region ############################## ################ ##############################
#region ############################## ADDING FUNCTIONS ##############################
#region ############################## ################ ##############################
Func _FileSelectFolder()
$sFolder = FileSelectFolder("Bitte Ordner auswählen", "", 2, Default, $hMain)
If $sFolder = "" Then Return
GUICtrlSetData($InputFolderPath, $sFolder)
WinActivate(_WinAPI_GetWindowText($hAddFolder))
EndFunc ;==>_FileSelectFolder
Func _ExcludeFiles()
If GUICtrlRead($CheckboxExludeFiles) = 1 Then
GUICtrlSetState($InputFileTypes, $GUI_ENABLE)
GUICtrlSetState($ComboFileSize, $GUI_ENABLE)
GUICtrlSetState($InputFileSize, $GUI_ENABLE)
GUICtrlSetState($ComboFileCompareType, $GUI_ENABLE)
GUICtrlSetState($InputNotAllowedChar, $GUI_ENABLE)
GUICtrlSetState($LabelFileExtensions, $GUI_ENABLE)
GUICtrlSetState($Label1FileSize, $GUI_ENABLE)
GUICtrlSetState($Label2FileSize, $GUI_ENABLE)
GUICtrlSetState($Label1NotAllowedChar, $GUI_ENABLE)
GUICtrlSetState($Label2NotAllowedChar, $GUI_ENABLE)
Else
GUICtrlSetState($InputFileTypes, $GUI_DISABLE)
GUICtrlSetState($ComboFileSize, $GUI_DISABLE)
GUICtrlSetState($InputFileSize, $GUI_DISABLE)
GUICtrlSetState($ComboFileCompareType, $GUI_DISABLE)
GUICtrlSetState($InputNotAllowedChar, $GUI_DISABLE)
GUICtrlSetState($LabelFileExtensions, $GUI_DISABLE)
GUICtrlSetState($Label1FileSize, $GUI_DISABLE)
GUICtrlSetState($Label2FileSize, $GUI_DISABLE)
GUICtrlSetState($Label1NotAllowedChar, $GUI_DISABLE)
GUICtrlSetState($Label2NotAllowedChar, $GUI_DISABLE)
EndIf
EndFunc ;==>_ExcludeFiles
Func _AddFolderGui()
Switch _WinAPI_IsWindowVisible($hAddFolder)
Case True
GUISetState(@SW_HIDE, $hAddFolder)
Case False
GUISetState(@SW_SHOW, $hAddFolder)
EndSwitch
EndFunc ;==>_AddFolderGui
Func _AddFolder()
Local $aDataRawNew[1]
Local $szDrive, $szDir, $szFName, $szExt, $sPercGes, $sQuery
Local $sFolder = GUICtrlRead($InputFolderPath)
Local $sFileExtentions = GUICtrlRead($InputFileTypes)
Local $sFileCompareType = GUICtrlRead($ComboFileCompareType)
Local $sFileSize = GUICtrlRead($InputFileSize)
Local $sFileSizeType = GUICtrlRead($ComboFileSize)
Local $sNotAllowedChar = GUICtrlRead($InputNotAllowedChar)
If GUICtrlRead($CheckboxExludeFiles) = 1 And ($sFileCompareType = "" Or $sFileSize = "" Or $sFileSizeType = "") Then
MsgBox(48, "Fehler", "Bitte die Felder zur Größenangabe ausfüllen!")
Return
EndIf
Switch $sFileSizeType
Case "Byte"
$sDivisor = "*1"
Case "Megabyte"
$sDivisor = "*1048576"
Case "Kilobyte"
$sDivisor = "*1024"
Case "Gigabyte"
$sDivisor = "*1073741824"
EndSwitch
If $sFolder = "" Or Not FileExists($sFolder) Then Return
_AddFolderGui()
_Status("Ordner wird durchsucht")
_SendMessage($hProgress, $PBM_SETMARQUEE, True, 10)
$aDataRawNew = _GetFilesFolder_Rekursiv($sFolder, "exe|zip|rar|7z|tar|gz|bz2", 0)
$sPerc = 100 / (UBound($aDataRawNew) - 1)
For $i = 1 To UBound($aDataRawNew) - 1
ReDim $aData[UBound($aData) + 1][3]
$aTempPath = _PathSplit($aDataRawNew[$i], $szDrive, $szDir, $szFName, $szExt)
If GUICtrlRead($CheckboxExludeFiles) = 1 Then
If Not StringInStr($aTempPath[3] & $aTempPath[4], $sNotAllowedChar, 1) And Execute(FileGetSize($aDataRawNew[$i]) & " " & $sFileCompareType & " " & Execute($sFileSize & $sDivisor)) = True And Not StringInStr($sFileExtentions, $aTempPath[4], 1) = 1 Then _SQLite_Exec(-1, "INSERT INTO Programms values ('" & $aTempPath[3] & $aTempPath[4] & "','" & $aTempPath[0] & "','Keine Beschreibung angegeben!'," & "'" & Round(FileGetSize($aTempPath[0]) / 1048576, 3) & "');")
Else
;~ $sQuery &= "INSERT INTO Programms values ('" & $aTempPath[3] & $aTempPath[4] & "','" & $aTempPath[0] & "','Keine Beschreibung angegeben!'," & "'" & Round(FileGetSize($aTempPath[0]) / 1048576, 3) & "');"
_SQLite_Exec(-1, "INSERT INTO Programms values ('" & $aTempPath[3] & $aTempPath[4] & "','" & $aTempPath[0] & "','Keine Beschreibung angegeben!'," & "'" & Round(FileGetSize($aTempPath[0]) / 1048576, 3) & "');")
EndIf
$sPercGes += $sPerc
_Status("Einträge schreiben: " & Round($sPercGes, 0) & "%")
Next
_ReadSQLiteDB()
_Status("Bereit")
EndFunc ;==>_AddFolder
Func _AddEntry()
Local $szDrive, $szDir, $szFName, $szExt
$sNewEntry = FileOpenDialog("Neue Datei hinzufügen", Default, "Zugelassene Dateien (*.exe;*.7z;*.zip;*.rar)")
If @error Then Return
ReDim $aData[UBound($aData) + 1][3]
$aTempPath = _PathSplit($sNewEntry, $szDrive, $szDir, $szFName, $szExt)
_SQLite_Exec(-1, "INSERT INTO Programms values ('" & $aTempPath[3] & $aTempPath[4] & "','" & $aTempPath[0] & "','Keine Beschreibung angegeben!'," & "'" & Round(FileGetSize($aTempPath[0]) / 1048576, 3) & "');")
_ReadSQLiteDB()
EndFunc ;==>_AddEntry
#endregion ############################## ################ ##############################
#region ############################## ################ ##############################
#region ############################## DETAIL FUNCTIONS ##############################
#region ############################## ################ ##############################
Func _ChangeElement()
Switch @GUI_CtrlId
Case $ButtonNextEntry
_GUICtrlComboBox_SetCurSel($hCombo1, _GUICtrlComboBox_GetCurSel($hCombo1) + 1)
Case $ButtonPrevEntry
_GUICtrlComboBox_SetCurSel($hCombo1, _GUICtrlComboBox_GetCurSel($hCombo1) - 1)
Case Else
_GUICtrlComboBox_SetCurSel($hCombo1, _GUICtrlComboBox_GetCurSel($hCombo1) + 1)
EndSwitch
_SelElement()
EndFunc ;==>_ChangeElement
Func _SelElement()
Local $sNewEntryMarked = GUICtrlRead($Combo1), $aResult[1], $iRows, $iColumns
If $sNewEntryMarked <> "" Then
_SQLite_GetTable2d(-1, "SELECT * FROM Programms Where Name='" & $sNewEntryMarked & "'", $aResult, $iRows, $iColumns)
GUICtrlSetData($InputFileName, $aResult[1][0])
GUICtrlSetData($InputFilePath, $aResult[1][1])
GUICtrlSetData($InputFileDesc, $aResult[1][2])
GUICtrlSetData($InputFileSizeDesc, $aResult[1][3])
EndIf
EndFunc ;==>_SelElement
Func _ChangeDesc($iIndex = -1)
Local $sFileNames, $aResult[1], $iRows, $iColumns
If _WinAPI_IsWindowVisible($hDesc) = True Then
GUISetState(@SW_HIDE, $hDesc)
GUICtrlSetState($InputSearchMain, $GUI_FOCUS)
Return
Else
GUISetState(@SW_SHOW, $hDesc)
EndIf
If Not IsDeclared($iIndex) Then $iIndex = -1
$aTemp = _GUICtrlListView_GetItemTextArray($hListView1, $iIndex)
If $aTemp[1] = "" Then
_ChangeDesc()
Return
EndIf
_SQLite_GetTable2d(-1, "SELECT Name FROM Programms", $aResult, $iRows, $iColumns)
[/autoit] [autoit][/autoit] [autoit]For $iTemp = 1 To UBound($aResult, 1) - 1
$sFileNames &= "|" & $aResult[$iTemp][0]
Next
GUICtrlSetData($Combo1, $sFileNames)
[/autoit] [autoit][/autoit] [autoit]_SQLite_GetTable2d(-1, "SELECT * FROM Programms Where Name='" & $aTemp[1] & "'", $aResult, $iRows, $iColumns, -1, True)
[/autoit] [autoit][/autoit] [autoit]GUICtrlSetData($InputFileName, $aResult[0][1])
GUICtrlSetData($InputFilePath, $aResult[1][1])
GUICtrlSetData($InputFileDesc, $aResult[2][1])
GUICtrlSetData($InputFileSizeDesc, $aResult[3][1])
$sTemp = GUICtrlRead($InputFileName)
$aTempList = _GUICtrlComboBox_GetListArray($Combo1)
For $iTemp = 1 To $aTempList[0]
If StringInStr($aTempList[$iTemp], $sTemp, 1) Then ExitLoop
Next
_GUICtrlComboBox_SetCurSel($hCombo1, $iTemp - 1)
EndFunc ;==>_ChangeDesc
Func _SaveDesc()
Local $sTempName = GUICtrlRead($InputFileName)
Local $sTempDesc = GUICtrlRead($InputFileDesc)
If StringLen($sTempDesc) = 0 Then Return
_SQLite_Exec(-1, "UPDATE Programms SET Comment='" & $sTempDesc & "' WHERE Name='" & $sTempName & "';")
_ReadSQLiteDB()
If BitAND(GUICtrlRead($CheckboxCloseAfterSave), $GUI_CHECKED) = $GUI_CHECKED Then _ChangeDesc()
EndFunc ;==>_SaveDesc
#endregion ############################## ################ ##############################
#region ############################## ################ ##############################
#region ############################## SEARCH FUNCTIONS ##############################
#region ############################## ################ ##############################
Func _hDescSearch()
$sQuery = GUICtrlRead($InputSearchDesc)
If $sQuery = "" Or @error Then Return
$iSearch = _GUICtrlComboBox_FindString($hCombo1, $sQuery)
If $iSearch <> -1 Then
_GUICtrlComboBox_SetCurSel($hCombo1, $iSearch)
_SelElement()
Else
MsgBox(48, "Fehler", "Kein passender Eintrag gefunden!")
EndIf
EndFunc ;==>_hDescSearch
Func _Search()
$sQuery = GUICtrlRead($InputSearchMain)
If $sQuery = "" Or @error Then Return
_Status("Suchvorgang läuft")
_SendMessage($hProgress, $PBM_SETMARQUEE, True, 10)
For $iSearch = 0 To _GUICtrlListView_GetItemCount($hListView1)
$aTemp = _GUICtrlListView_GetItemTextArray($hListView1, $iSearch)
$sTemp = _ArrayToString($aTemp, "|", 1, 3)
If StringInStr($sTemp, $sQuery, 2) <> 0 Then ExitLoop
Next
If $iSearch = _GUICtrlListView_GetItemCount($hListView1) Then
MsgBox(48, "Fehler", "Kein passender Eintrag gefunden!")
_Status("Kein Ergebnis gefunden - Bereit")
Else
_GUICtrlListView_SetItemSelected($hListView1, $iSearch, True, True)
_Status("Ergebnis gefunden - Bereit")
_GUICtrlListView_ClickItem($hListView1, $iSearch)
$iSearchBackup = $iSearch
EndIf
_SendMessage($hProgress, $PBM_SETMARQUEE, False, 10)
GUICtrlSetState($ButtonNextResult, $GUI_FOCUS)
EndFunc ;==>_Search
Func _Next()
Switch $iSearchBackup
Case 0
MsgBox(48, "Fehler", "Bitte zuerst einen Suchvorgang ausführen!")
Return
Case Else
If $sQuery <> GUICtrlRead($InputSearchMain) Then
MsgBox(48, "Error", "Der Suchbegriff hat sich geändert!")
Return
Else
_Status("Suchvorgang läuft")
_SendMessage($hProgress, $PBM_SETMARQUEE, True, 10)
For $iTemp = $iSearchBackup + 1 To _GUICtrlListView_GetItemCount($hListView1)
$aTemp = _GUICtrlListView_GetItemTextArray($hListView1, $iTemp)
$sTemp = _ArrayToString($aTemp, "|", 1, 3)
If StringInStr($sTemp, $sQuery, 2) <> 0 Then ExitLoop
Next
If $iTemp = _GUICtrlListView_GetItemCount($hListView1) Then
MsgBox(48, "Fehler", "Kein passender Eintrag gefunden!")
_Status("Kein Ergebnis gefunden - Bereit")
Else
_GUICtrlListView_SetItemSelected($hListView1, $iTemp, True, True)
_Status("Ergebnis gefunden - Bereit")
_GUICtrlListView_ClickItem($hListView1, $iTemp)
$iSearchBackup = $iTemp
EndIf
_SendMessage($hProgress, $PBM_SETMARQUEE, False, 10)
EndIf
EndSwitch
EndFunc ;==>_Next
#endregion ############################## ################ ##############################
[/autoit] [autoit][/autoit] [autoit]#region ############################## ############### ###############################
#region ############################## ENTRY FUNCTIONS ###############################
#region ############################## ############### ###############################
Func _Run()
Switch @GUI_CtrlId
Case $ButtonRunFileDesc
$aTemp = _GUICtrlComboBoxEx_GetItem($hCombo1, _GUICtrlComboBoxEx_GetCurSel($hCombo1))
$aTempList = _GUICtrlComboBox_GetListArray($Combo1)
For $iTemp = 1 To $aTempList[0]
If StringInStr($aTempList[$iTemp], $aTemp[0], 1) Then ExitLoop
Next
$iIndex = $iTemp - 1
Case $ButtonRunFile
$iIndex = -1
EndSwitch
$aTemp = _GUICtrlListView_GetItemTextArray($hListView1, $iIndex)
ShellExecute($aTemp[2])
EndFunc ;==>_Run
Func _DeleteEntry()
If MsgBox(48 + 4, "Achtung!", "Wollen Sie dieses Element wirklich löschen?") = 6 Then
$aTemp = _GUICtrlListView_GetItemTextArray($hListView1)
_SQLite_Exec(-1, "DELETE FROM Programms Where Path='" & $aTemp[2] & "';")
If WinActive(_WinAPI_GetWindowText($hDesc)) Then _ChangeElement()
_ReadSQLiteDB()
EndIf
EndFunc ;==>_DeleteEntry
#endregion ############################## ############### ###############################
#region ############################## ############### ###############################
#region ############################## OTHER FUNCTIONS ###############################
#region ############################## ############### ###############################
Func _Exit()
OnAutoItExitUnregister("_Exit")
_SQLite_Close($hFileList)
_SQLite_Shutdown()
Exit
EndFunc ;==>_Exit
Func _Settings()
Switch _WinAPI_IsWindowVisible($hSettings)
Case True
GUISetState(@SW_HIDE, $hSettings)
Select
Case BitAND(GUICtrlRead($RadioRunProgramm), $GUI_CHECKED) = $GUI_CHECKED
$sRadioState = "RUN"
Case BitAND(GUICtrlRead($RadioShowDetails), $GUI_CHECKED) = $GUI_CHECKED
$sRadioState = "SHOWDETAILS"
Case Bitand(GUICtrlRead($CheckboxCloseAfterSave), $GUI_CHECKED) = $GUI_CHECKED
$bCloseWindow = True
Case Bitand(GUICtrlRead($CheckboxCloseAfterSave), $GUI_CHECKED) <> $GUI_CHECKED
$bCloseWindow = False
EndSelect
_SQLite_Exec(-1,"UPDATE Settings SET Value='" & $sRadioState & "' WHERE Type='DBLCLICK';")
_SQLite_Exec(-1,"UPDATE Settings SET Value='" & $bCloseWindow & "' WHERE Type='CLOSEWND';")
Case False
GUISetState(@SW_SHOW, $hSettings)
EndSwitch
EndFunc ;==>_Settings
Func _UpdateTime()
_GUICtrlStatusBar_SetText($hStatusBar1, @HOUR & ":" & @MIN & ":" & @SEC, 2)
EndFunc ;==>_UpdateTime
Func _Status($sText)
_GUICtrlStatusBar_SetText($hStatusBar1, $sText)
EndFunc ;==>_Status
Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView
$hWndListView = $ListView1
If Not IsHWnd($ListView1) Then $hWndListView = GUICtrlGetHandle($ListView1)
$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
If $hWndFrom = $hWndListView And $iCode = $NM_DBLCLK Then
$iIndex = ((DllStructGetData(DllStructCreate($tagNMITEMACTIVATE, $ilParam), "Index")))
Switch $sRadioState
Case "RUN"
$aTemp = _GUICtrlListView_GetItemTextArray($hListView1, $iIndex)
If ShellExecute($aTemp[2]) = 0 Then MsgBox(48, "Fehler", "Konnte Programm(" & $aTemp[1] & ") nicht starten!")
Case "SHOWDETAILS"
_ChangeDesc($iIndex)
EndSwitch
EndIf
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY
#endregion ############################## ############### ###############################
#region ##############################################################################
#region ##############################################################################
#region ###############################################################################
; ### Funktion von mir leicht verändert, um nach mehrerern Dateiendungen suchen zu können ###
[/autoit] [autoit][/autoit] [autoit];==================================================================================================
; Function Name: _GetFilesFolder_Rekursiv($sPath [, $sExt='*' [, $iDir=-1 [, $iRetType=0 ,[$sDelim='0']]]])
; Description: Rekursive Auflistung von Dateien und/oder Ordnern
; Parameter(s): $sPath der Basispfad für die Auflistung ('.' -aktueller Pfad, '..' -Parentpfad)
; $sExt Erweiterung für Dateiauswahl '*' oder -1 für alle (Standard)
; $iDir -1 Dateien+Ordner(Standard), 0 nur Dateien, 1 nur Ordner
; optional: $iRetType 0 gibt Array, 1 gibt String zurück
; optional: $sDelim legt Trennzeichen für Stringrückgabe fest
; 0 -@CRLF (Standard) 1 -@CR 2 -@LF 3 -';' 4 -'|'
; Return Value(s): Array (Standard) od. String mit den gefundenen Pfaden der Dateien und/oder Ordner
; Array[0] enthält die Anzahl der gefundenen Dateien/Ordner
; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
; Modified: oetzn
;==================================================================================================
Func _GetFilesFolder_Rekursiv($sPath, $sExt = '*', $iDir = -1, $iRetType = 0, $sDelim = '0')
Global $oFSO = ObjCreate('Scripting.FileSystemObject')
Global $strFiles = ''
Switch $sDelim
Case '1'
$sDelim = @CR
Case '2'
$sDelim = @LF
Case '3'
$sDelim = ';'
Case '4'
$sDelim = '|'
Case Else
$sDelim = @CRLF
EndSwitch
If ($iRetType < 0) Or ($iRetType > 1) Then $iRetType = 0
If $sExt = -1 Then $sExt = '*'
If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1
_ShowSubFolders($oFSO.GetFolder($sPath), $sExt, $iDir, $sDelim)
If $iRetType = 0 Then
Local $aOut
$aOut = StringSplit(StringTrimRight($strFiles, StringLen($sDelim)), $sDelim, 1)
If $aOut[1] = '' Then
ReDim $aOut[1]
$aOut[0] = 0
EndIf
Return $aOut
Else
Return StringTrimRight($strFiles, StringLen($sDelim))
EndIf
EndFunc ;==>_GetFilesFolder_Rekursiv
Func _ShowSubFolders($Folder, $Ext = '*', $Dir = -1, $Delim = @CRLF)
$aExt = StringSplit($Ext, "|", 2) ;von mir eingefügt
If Not IsDeclared("strFiles") Then Global $strFiles = ''
If ($Dir = -1) Or ($Dir = 0) Then
For $file In $Folder.Files
If $Ext <> '*' Then
For $i = 0 To UBound($aExt) - 1 ;von mir eingefügt
If StringRight($file.Name, StringLen($aExt[$i])) = $aExt[$i] Then _ ; $Ext in $Ext[$i] geändert
$strFiles &= $file.Path & $Delim
Next ;von mir eingefügt
Else
$strFiles &= $file.Path & $Delim
EndIf
Next
EndIf
For $Subfolder In $Folder.SubFolders
If ($Dir = -1) Or ($Dir = 1) Then $strFiles &= $Subfolder.Path & '\' & $Delim
_ShowSubFolders($Subfolder, $Ext, $Dir, $Delim)
Next
EndFunc ;==>_ShowSubFolders
#endregion ###############################################################################
Würde mich freuen, wenn ihr sie vielleicht mal testet, bzw mir sagt, ob sie euch gefällt oder was man noch verbessern/optimieren könnte, sowohl Bedien- als auch Programmiertechnisch .
5. Mai 2010: UMSTIEG AUF SQLITE DATENBANK SYSTEM
Behobene Bugs:
- So, hab den Bug beim Firststart behoben, lag daran, dass die Einträge erst beim Beenden des Programms geschrieben werden und aber bei den Details aus der Ini ausgelesen werden. Sprich: neue Ini-Date -> Keine Einträge -> Error ..
- Bug gefixt, der entstand wenn man einen neuen einzelnen Eintrag hinzufügen wollte..
- Bug gefixt, der möglich gewesen wäre, wenn man das Programm mit einem anderen Arbeitsverzeichnis als @ScriptDir startet
Neuerungen:
- Hab jetzt auf aufgrund einer Anregung per PN eine Einstellungs-GUI eingebaut in der man einstellen kann, ob bei einem Doppelklick der Eintrag gestartet werden soll, oder ob die Details angezeigt werden.
- 05.05.2010: Die Datenbank verwendet absofort eine SQLite-Datenbank.
Bisherige Ideen:
-
Bei einer Ini-Datei die größer als 32KB werden würde, automatisch als CFG abspeicherngestrichen -
eventuell ganz auf SQLite umsteigenerledigt
05.05.2010: Falls ihr in der neuen Version noch irgendwelche Fehler/Bugs entdeckt, könnt ihr diese natürlich jederzeit melden!