1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. BugFix

Beiträge von BugFix

  • µit - Juli

    • BugFix
    • 7. Juli 2008 um 11:38

    Hab mal kurz probiert, werde wohl mitmachen. Das Problem mit dem Kontextmenü hab ich schon gelöst :P.

    Achja, eines noch: Der Text, der im Editfeld steht sollte vorbestimmt sein.

  • µit - Juli

    • BugFix
    • 7. Juli 2008 um 10:54

    Na dann viel Spaß, das Skript kann nicht allzu kurz werden, weil das Standard-Kontextmenü des Edit-Ctrl dazu deaktiviert werden muß. Vermutlich recht aufwändig. ;)

  • µit - Juli

    • BugFix
    • 7. Juli 2008 um 08:26

    Hi,
    ich glaube hier fehlt ein wesentlicher Fakt: Wo drin steht der Text? (Edit, Input, Label)

    Das ist entscheidend für den Lösungsansatz.

  • ein paar Zeilen VBS in AutoIT

    • BugFix
    • 7. Juli 2008 um 08:21

    Kann mangels fehlender Architektur das nicht testen.
    Aufgrund der Fehlermeldung würde ich sagen, dass $array = $fpc.GetContainingArray kein Array zurückgibt.
    Also prüfe vorher ab, ob $fpc überhaupt ein Objekt ist. ( If IsObj($fpc) )

  • PC stürzt dauernd ab

    • BugFix
    • 6. Juli 2008 um 22:03

    Das Problem ist in 90% der Fälle treiberbedingt.
    Aber versuche als erstes mal die Hardwarebeschleunigung herabzusetzen. Das könnte helfen.
    Ansonsten die aktuellen Treiber für deine Grafikkarte installieren.

  • Icon mit Transparentem Hintergrund?!

    • BugFix
    • 6. Juli 2008 um 19:35
    Zitat von Maximilian_M

    Ich möchte nur ein paar Icons in mein Programm einfügen, schaffe es jedoch nicht den Hintergrund transparent zu bekommen!

    Ich denke mal, das ist kein AutoIt-Problem. Die Icons, die du einsetzt müssen natürlich transparent sein. Um das zu erreichen gibt es verschiedene Icon-Programme, mußt mal etwas googeln.

  • Findet jemand den Fehler?

    • BugFix
    • 6. Juli 2008 um 17:10

    Schau dir mal IsPressed() an. "If Send..." ist voll daneben ;)

  • ShoutBox abschalten

    • BugFix
    • 6. Juli 2008 um 13:23
    Zitat von GtaSpider

    Hallo

    Mh, keine Ahnung kann es bei mir nicht testen, da sich AutoIt.de so oder so in 2.1 Sek aufbaut ;)

    Mfg Spider


    Also die Autoit-Seite an sich wird in unter 1 sec geladen und dann muß ich auf die blöde SB warten um scrollen zu können. So lange die nicht kpl. geladen ist, gehts nicht weiter. Das Minus anklicken bringt nichts, ist nur optisch. Geladen wird die Box trotzdem. Und die Ladegeschwindigkeit für die Box ist nicht von meinem Zugang abhängig (Bandbreite DSL 3500, verfügbar im Schnitt 2200 - 2800).
    Nur wenn ich Java abschalte gehts Ruck-Zuck. Aber dann ist ja einiges an Funktionalität weg. :S

  • Verwaltung Hardlinks

    • BugFix
    • 6. Juli 2008 um 13:16
    Zitat von Der_Doc

    Bei den Linuxjüngern gibt es neben "Hardlinks" sogar noch "Softlinks" :thumbup:


    Es gibt Links ooohne Ende: Hardlinks, Symlinks, Browserlinks, Rechts-und-Links :rofl:

  • ArrayMore.au3

    • BugFix
    • 6. Juli 2008 um 13:13
    Zitat von Tweaky

    integrierst du diese Funktion auch noch in die arraymore.au3?


    Das hatte ich vor, habe bisher aber noch keine gangbare Lösung gefunden, wie.
    Problem:
    Wenn ich die Funktion in die ArrayMore.au3 einfüge und du includest ArrayMore.au3 bekommst du Fehlermeldungen von Scite bei jeder Funktion aus dem Paket, weil die für diese Funktion notwendige Includierung der SQLite.au3 und SQLite.dll.au3 im Hauptskript stehen muß. Es wird von Scite ja immer das gesamte Include geprüft.
    Du kannst diese Meldungen zwar ignorieren - es funzt alles - aber das ist halt lästig.
    Falls du eine Idee hast, sag an. Ich bin für alle Vorschläge offen. ;)

  • ShoutBox abschalten

    • BugFix
    • 6. Juli 2008 um 11:31

    Hi,
    es ist ziemlich nervig, beim Aufruf von autoit.de immer erst auf das Fertigladen der Shoutbox warten zu müssen, bevor man auf der Seite navigieren kann.
    Ich möchte nicht unbedingt die Java-Unterstützung deaktivieren. Besteht eine andere Möglichkeit, die SB nur bei Bedarf zuzuschalten?

  • WinSetTransPer Funktion

    • BugFix
    • 6. Juli 2008 um 10:29

    :D Da haddu Recht, aufs ganze Skriptlein bezogen. Eigentlich könnten wir es auch in eine Zeile packen (Execute) - DANN ist es kurz. :rofl:

  • Checkboxen

    • BugFix
    • 6. Juli 2008 um 10:22

    Hi,
    hier mal ein Bsp., wie du viiiele Checkboxen verwalten kannst. Ereignisse mußt du natürlich für jede CB einzeln festlegen, aber Erstellung und Abfrage Status kannst du in einer Schleife machen.

    Spoiler anzeigen
    [autoit]

    ; Muster Checkbox-Bearbeitung
    ; Ziel: einfache Abfrage, welche CB aktiviert sind

    [/autoit] [autoit][/autoit] [autoit]

    #include <GUIConstants.au3>
    Opt('GUIOnEventMode', 1)
    Opt("MustDeclareVars", 1)
    Global $bCheckAll, $bUnCheckAll, $GUI, $i, $str
    Global $arCB[20][2] ; Array für Handle und Dual-Wert der CB
    For $i = 0 To UBound($arCB) -1
    $arCB[$i][1] = 2^$i ; Zuweisung eindeutiger Wert
    Next
    Global $Checked = 0 ; Variable nimmt Status ALLER Checkboxen in einem Wert auf,
    ; Startstatus für alle: UNCHECKED
    Global $w = 500, $h = 20*30+40, $l = (@DesktopWidth-$w)/2, $t = (@DesktopHeight-$h)/2
    Global $top = -10
    $GUI = GUICreate('Test Checkbox', $w, $h, $l, $t)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_Ende')
    For $i = 0 To UBound($arCB) -1
    $top += 30
    $arCB[$i][0] = GUICtrlCreateCheckbox('CheckBox_' & $i+1, 40, $top, 120)
    GUICtrlSetOnEvent(-1, '_ClickCB' & $i+1)
    Next
    $bCheckAll = GUICtrlCreateButton('Alle markieren', 250, 20, 150, 21)
    GUICtrlSetOnEvent(-1, '_CheckAll')
    $bUnCheckAll = GUICtrlCreateButton('Markierung aufheben', 250, 50, 150, 21)
    GUICtrlSetOnEvent(-1, '_UnCheckAll')
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(100)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _Ende()
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _ClickCB1()
    $Checked = BitXOR($Checked, $arCB[0][1])
    _ReadCB()
    EndFunc
    Func _ClickCB2()
    $Checked = BitXOR($Checked, $arCB[1][1])
    _ReadCB()
    EndFunc
    Func _ClickCB3()
    $Checked = BitXOR($Checked, $arCB[2][1])
    _ReadCB()
    EndFunc
    Func _ClickCB4()
    $Checked = BitXOR($Checked, $arCB[3][1])
    _ReadCB()
    EndFunc
    Func _ClickCB5()
    $Checked = BitXOR($Checked, $arCB[4][1])
    _ReadCB()
    EndFunc
    Func _ClickCB6()
    $Checked = BitXOR($Checked, $arCB[5][1])
    _ReadCB()
    EndFunc
    Func _ClickCB7()
    $Checked = BitXOR($Checked, $arCB[6][1])
    _ReadCB()
    EndFunc
    Func _ClickCB8()
    $Checked = BitXOR($Checked, $arCB[7][1])
    _ReadCB()
    EndFunc
    Func _ClickCB9()
    $Checked = BitXOR($Checked, $arCB[8][1])
    _ReadCB()
    EndFunc
    Func _ClickCB10()
    $Checked = BitXOR($Checked, $arCB[9][1])
    _ReadCB()
    EndFunc
    Func _ClickCB11()
    $Checked = BitXOR($Checked, $arCB[10][1])
    _ReadCB()
    EndFunc
    Func _ClickCB12()
    $Checked = BitXOR($Checked, $arCB[11][1])
    _ReadCB()
    EndFunc
    Func _ClickCB13()
    $Checked = BitXOR($Checked, $arCB[12][1])
    _ReadCB()
    EndFunc
    Func _ClickCB14()
    $Checked = BitXOR($Checked, $arCB[13][1])
    _ReadCB()
    EndFunc
    Func _ClickCB15()
    $Checked = BitXOR($Checked, $arCB[14][1])
    _ReadCB()
    EndFunc
    Func _ClickCB16()
    $Checked = BitXOR($Checked, $arCB[15][1])
    _ReadCB()
    EndFunc
    Func _ClickCB17()
    $Checked = BitXOR($Checked, $arCB[16][1])
    _ReadCB()
    EndFunc
    Func _ClickCB18()
    $Checked = BitXOR($Checked, $arCB[17][1])
    _ReadCB()
    EndFunc
    Func _ClickCB19()
    $Checked = BitXOR($Checked, $arCB[18][1])
    _ReadCB()
    EndFunc
    Func _ClickCB20()
    $Checked = BitXOR($Checked, $arCB[19][1])
    _ReadCB()
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _CheckAll()
    For $i = 0 To UBound($arCB) -1
    If Not BitAND($Checked, $arCB[$i][1]) Then
    GUICtrlSetState($arCB[$i][0], $GUI_CHECKED)
    $Checked = BitXOR($Checked, $arCB[$i][1])
    EndIf
    Next
    _ReadCB()
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _UnCheckAll()
    For $i = 0 To UBound($arCB) -1
    If BitAND($Checked, $arCB[$i][1]) Then
    GUICtrlSetState($arCB[$i][0], $GUI_UNCHECKED)
    $Checked = BitXOR($Checked, $arCB[$i][1])
    EndIf
    Next
    _ReadCB()
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _ReadCB() ; Fkt. dient nur zur Ausgabe, welche CB markiert sind
    Local $str = 'Markiert: '
    For $i = 0 To UBound($arCB) -1
    If BitAND($Checked, $arCB[$i][1]) Then $str &= $i+1 & ', '
    Next
    WinSetTitle($GUI, '', StringTrimRight($str, 2))
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • WinSetTransPer Funktion

    • BugFix
    • 6. Juli 2008 um 10:14

    Hi Lina,
    wenn schon, dann richtig kurz :P

    [autoit]

    $Transparency *= 2.55

    [/autoit]
  • Verwaltung Hardlinks

    • BugFix
    • 6. Juli 2008 um 01:17

    Hi,
    ich arbeite ganz gern mit Hardlinks. Da ich aber langsam alt und drösig werde :D habe ich hiermit eine Verwaltung für meine Hardlinks geschrieben, damit ich die Originaldatei von den Hardlinks unterscheiden kann und auch weiß, welche Hardlinks überhaupt angelegt sind.
    Bitte beachten, dass Hardlinks nur innerhalb einer Partition erstellt werden können.

    Falls ihr es gebrauchen könnt:

    Spoiler anzeigen
    [autoit]

    #include<EditConstants.au3>
    #include<GuiListBox.au3>
    #include<GuiListView.au3>
    #include<StructureConstants.au3>
    #include<WindowsConstants.au3>
    #include<GUIConstantsEx.au3>
    #include<ListViewConstants.au3>
    Opt("GUIOnEventMode", 1)

    [/autoit] [autoit][/autoit] [autoit]

    Global $aLink[1][20], $var, $mnuState = $GUI_CHECKED
    Global $linkINI = @ScriptDir & '\hardlink.ini'
    Global $gold = 0xFFD700, $blau = 0x1f3f80
    If Not FileExists($linkINI) Then
    IniWriteSection($linkINI, 'settings', 'quellpfad=' & @MyDocumentsDir & @LF & 'zielpfad=' & @MyDocumentsDir & @LF & 'ntfs_check=1')
    IniWriteSection($linkINI, 'hardlinked', '')
    EndIf
    $quelleINI = IniRead($linkINI, 'settings', 'quellpfad', @MyDocumentsDir)
    $zielINI = IniRead($linkINI, 'settings', 'zielpfad', @MyDocumentsDir)
    Global $aIni, $ntfs = IniRead($linkINI, 'settings', 'ntfs_check', 1)
    If $ntfs = 1 Then
    If MsgBox(262436,"NTFS-Check","Soll überprüft werden, ob der PC über NTFS-formatierte Laufwerke verfügt?" & @LF & _
    "Die Prüfung kann in den Einstellungen deaktiviert werden.") = 6 Then
    Global $wbemFlagReturnImmediately = 0x10, $wbemFlagForwardOnly = 0x20, $colItems = "", $strComputer = "localhost"
    Global $Output="", $Out2 = ''
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_LogicalDisk", "WQL", _
    $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
    If IsObj($colItems) then
    For $objItem In $colItems
    If $objItem.Description = 'Lokale Festplatte' Then
    If $objItem.FileSystem <> 'NTFS' Then
    $Output = $Output & "DeviceID: " & $objItem.DeviceID & @CRLF
    $Output = $Output & "FileSystem: " & $objItem.FileSystem & @CRLF & @CRLF
    EndIf
    EndIf
    Next
    If $Output <> "" Then
    If MsgBox(262436, 'Dateisystem falsch', 'Folgende Festplatte(n) sind nicht im "NTFS-Format"' & @LF & _
    'und somit kann kein Hardlink auf ihnen erzeugt werden:' & @LF & @LF & $Output & @LF & @LF & _
    'Wenn die für den Hardlink gewünschte Festplatte nicht aufgezählt wurde,' & @LF & _
    'können Sie fortsetzen.' & @LF & _
    'Möchten Sie fortsetzen?') = 7 Then Exit
    Else
    MsgBox(262208,"NTFS-Check","Alle verfügbaren Festplatten sind geeignet.")
    EndIf
    Else
    Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_LogicalDisk" )
    Exit
    Endif
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    HotKeySet("{ESC}", "closePopup")

    [/autoit] [autoit][/autoit] [autoit]

    $mainGUI = GUICreate("Administration von Hardlinks", 480, 385, -1, -1)
    GUISetOnEvent($GUI_EVENT_CLOSE, "mainGUIClose")
    $mnu = GUICtrlCreateMenu('Einstellungen')
    $mnuNTFS = GUICtrlCreateMenuItem('NTFS-Check', $mnu)
    If $ntfs = 1 Then GUICtrlSetState(-1, $GUI_CHECKED)
    GUICtrlSetOnEvent(-1, 'ntfs_checked')
    GUICtrlCreateMenuItem('Pfade', $mnu)
    GUICtrlSetOnEvent(-1, 'openPath')
    $mnuHelp = GUICtrlCreateMenu('?')
    GUICtrlCreateMenuItem('Hilfe', $mnuHelp)
    GUICtrlSetOnEvent(-1, "HelpClick")
    $ListView = GUICtrlCreateListView("Originaldateien ( Anzeige der Hardlinks mit Doppelklick )", 14, 4, 450, 345)
    $hListView = GUICtrlGetHandle($ListView)
    _GUICtrlListView_SetExtendedListViewStyle($hListView, BitOR($LVS_EX_GRIDLINES,$LVS_EX_TRACKSELECT,$LVS_EX_FULLROWSELECT))
    _GUICtrlListView_SetColumnWidth($hListView, 0, 800)
    $LVmenu = GUICtrlCreateContextMenu($ListView)
    GUICtrlCreateMenuItem('Erstellen', $LVmenu)
    GUICtrlSetOnEvent(-1, "NewClickSource")
    GUICtrlCreateMenuItem('', $LVmenu)
    GUICtrlCreateMenuItem('Löschen', $LVmenu)
    GUICtrlSetOnEvent(-1, "DeleteClickSource")

    [/autoit] [autoit][/autoit] [autoit]

    $guiPath = GUICreate('Pfadvoreinstellungen', 538, 126, -1, -1)
    GUISetOnEvent($GUI_EVENT_CLOSE, 'closePath')
    $Group1 = GUICtrlCreateGroup(" Originaldateipfad ", 8, 8, 520, 50)
    $InSource = GUICtrlCreateInput("", 16, 26, 470, 21, BitOR($ES_AUTOHSCROLL,$ES_READONLY))
    GUICtrlSetBkColor(-1, 0xffffe0)
    $bChgSource = GUICtrlCreateButton("...", 496, 26, 21, 21, 0)
    GUICtrlSetOnEvent(-1, "bChgSourceClick")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group2 = GUICtrlCreateGroup(" Hardlinkpfad ", 8, 66, 520, 50)
    $InTarget = GUICtrlCreateInput("", 16, 84, 470, 21, BitOR($ES_AUTOHSCROLL,$ES_READONLY))
    GUICtrlSetBkColor(-1, 0xffffe0)
    $bChgTarget = GUICtrlCreateButton("...", 496, 84, 21, 21, 0)
    GUICtrlSetOnEvent(-1, "bChgTargetClick")
    GUICtrlCreateGroup("", -99, -99, 1, 1)

    [/autoit] [autoit][/autoit] [autoit]

    $GUIhardlink = GUICreate('', 444, 100, -1, -1, $WS_POPUPWINDOW, $WS_EX_TOPMOST)
    $ListBox = GUICtrlCreateList('', 0, 0, 444, 110)
    GUICtrlSetBkColor(-1, $blau)
    GUICtrlSetColor(-1, $gold)
    $Listmnu = GUICtrlCreateContextMenu($ListBox)
    GUICtrlCreateMenuItem('Neu', $Listmnu)
    GUICtrlSetOnEvent(-1, "NewClickLink")
    GUICtrlCreateMenuItem('Ändern', $Listmnu)
    GUICtrlSetOnEvent(-1, "ChgClickLink")
    GUICtrlCreateMenuItem('', $Listmnu)
    GUICtrlCreateMenuItem('Löschen', $Listmnu)
    GUICtrlSetOnEvent(-1, "DeleteClickLink")
    $hListBox = GUICtrlGetHandle($ListBox)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW, $mainGUI)

    [/autoit] [autoit][/autoit] [autoit]

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetData($InSource, $quelleINI)
    GUICtrlSetData($InTarget, $zielINI)
    LoadFromIni()
    FillListView()

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(100)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func ntfs_checked()
    If BitAND(GUICtrlRead($mnuNTFS), $GUI_CHECKED) Then
    GUICtrlSetState($mnuNTFS, $GUI_UNCHECKED)
    IniWrite($linkINI, 'settings', 'ntfs_check', 0)
    ElseIf BitAND(GUICtrlRead($mnuNTFS), $GUI_UNCHECKED) Then
    GUICtrlSetState($mnuNTFS, $GUI_CHECKED)
    IniWrite($linkINI, 'settings', 'ntfs_check', 1)
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func openPath()
    GUISetState(@SW_SHOW, $guiPath)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func closePath()
    GUISetState(@SW_HIDE, $guiPath)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func bChgSourceClick()
    Local $path = FileSelectFolder('Startpfad für Originaldateien aussuchen', $quelleINI)
    If $path = '' Then Return
    GUICtrlSetData($InSource, $path)
    IniWrite($linkINI, 'settings', 'quellpfad', $path)
    $quelleINI = $path
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func bChgTargetClick()
    Local $path = FileSelectFolder('Startpfad für Hardlinks aussuchen', $zielINI)
    If $path = '' Then Return
    GUICtrlSetData($InTarget, $path)
    IniWrite($linkINI, 'settings', 'zielpfad', $path)
    $zielINI = $path
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func LoadFromIni()
    ReDim $aLink[1][20]
    For $i = 0 To 19
    $aLink[0][$i] = ''
    Next
    $aIni = IniReadSection($linkINI, 'hardlinked')
    If IsArray($aIni) Then
    For $i = 1 To UBound($aIni) -1
    If $aLink[UBound($aLink)-1][0] <> '' Then ReDim $aLink[UBound($aLink)+1][20]
    $var = StringSplit($aIni[$i][1], ';')
    $aLink[UBound($aLink)-1][0] = $aIni[$i][0]
    If IsArray($var) Then
    For $k = 1 To UBound($var) -1
    $aLink[UBound($aLink)-1][$k] = $var[$k]
    Next
    Else
    $aLink[UBound($aLink)-1][1] = $aIni[$i][1]
    EndIf
    Next
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func FillListView()
    _GUICtrlListView_DeleteAllItems($hListView)
    For $i = 0 To UBound($aLink) -1
    If $aLink[$i][0] = '' Then ExitLoop
    _GUICtrlListView_AddItem($hListView, $aLink[$i][0])
    Next
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func DeleteClickSource()
    Local $index = _GUICtrlListView_GetSelectedIndices($hListView)
    If $index < 0 Then Return
    For $i = 1 To UBound($aLink,2) -1
    If $aLink[$index][$i] = '' Then ExitLoop
    FileDelete($aLink[$index][$i])
    Next
    IniDelete($linkINI, 'hardlinked', $aLink[$index][0])
    LoadFromIni()
    FillListView()
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func NewClickSource()
    Local $Source = FileOpenDialog("Original-Datei für Hard-Link", $quelleINI, "Alle Dateien (*.*)")
    If $Source = '' Then Return MsgBox(262192, 'Auswahlfehler', 'Es wurde keine Datei ausgewählt!')
    IniWrite($linkINI, 'settings', 'quellpfad', $Source)
    Local $Link = FileSelectFolder('Bitte den Zielordner für den Hardlink auswählen', $zielINI)
    If $Link = '' Then Return MsgBox(262192, 'Auswahlfehler', 'Es wurde keine Link-Pfad ausgewählt!')
    IniWrite($linkINI, 'settings', 'zielpfad', $Link)
    Local $name = InputBox('Hardlink', 'Bitte den Namen für den Hardlink festlegen.')
    If $name = '' Then Return MsgBox(262192, 'Auswahlfehler', 'Es wurde keine Link-Name festgelegt!')
    CreateHardLink($Source, $Link & '\' & $name)
    IniWrite($linkINI, 'hardlinked', $Source, $Link & '\' & $name)
    LoadFromIni()
    FillListView()
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func HelpClick()
    MsgBox(0, 'Hilfe', _
    'Mit Doppelklick auf die Originaldatei öffnet sich die Listbox mit den zugehörigen Hardlinks.' & @LF & _
    'Die Listbox kann mit <Esc> geschlossen werden.' & @LF & @LF & _
    'Kontextmenü Originaldateien:' & @LF & _
    @TAB & '< Erstellen >' & @TAB & 'Hinzufügen einer neuen Datei zur Liste und Erstellen eines Hardlinks dafür.' & @LF & _
    @TAB & '< Löschen >' & @TAB & 'Löscht alle Hardlinks für diese Datei und entfernt sie von der Liste.' & @LF & @LF & _
    'Kontextmenü Hardlinks:' & @LF & _
    @TAB & '< Neu >' & @TAB & @TAB & 'Fügt einen neuen Hardlink für die Quelldatei hinzu.' & @LF & _
    @TAB & '< Ändern >' & @TAB & 'Ändert den Namen des gewählten Hardlinks.' & @LF & _
    @TAB & '< Löschen >' & @TAB & 'Löscht den gewählten Hardlink.')
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func DeleteClickLink()
    If _GUICtrlListBox_GetCount($hListBox) = 1 Then
    GUISetState(@SW_HIDE, $GUIhardlink)
    Return DeleteClickSource()
    EndIf
    Local $link = _GUICtrlListBox_GetText($hListBox, _GUICtrlListBox_GetCurSel($hListBox))
    FileDelete($link)
    Local $indexLV = _GUICtrlListView_GetSelectedIndices($hListView)
    Local $source = _GUICtrlListView_GetItemText($hListView, $indexLV)
    Local $strINI = IniRead($linkINI, 'hardlinked', $source, '')
    Local $var = StringSplit($strINI, ';')
    If IsArray($var) Then
    Local $strWrite = ''
    For $i = 1 To UBound($var) -1
    If $var[$i] <> $link Then
    $strWrite &= $var[$i] & ';'
    EndIf
    Next
    IniWrite($linkINI, 'hardlinked', $source, StringTrimRight($strWrite, 1))
    EndIf
    LoadFromIni()
    FillListView()
    GUISetState(@SW_HIDE, $GUIhardlink)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func ChgClickLink()
    Local $source = _GUICtrlListView_GetItemText($hListView, _GUICtrlListView_GetSelectedIndices($hListView))
    Local $index = _GUICtrlListBox_GetCurSel($hListBox)
    If $index < 0 Then Return
    Local $link_alt = _GUICtrlListBox_GetText($hListBox, $index)
    GUISetState(@SW_HIDE, $GUIhardlink)
    Local $link = InputBox('Hardlink ändern', 'Bitte den Namen ändern', $link_alt)
    If $link = '' Then Return MsgBox(262192, 'Fehler', 'Es wurde keine Änderung vorgenommen.')
    FileMove($link_alt, $link)
    Local $strINI = IniRead($linkINI, 'hardlinked', $source, '')
    Local $var = StringSplit($strINI, ';'), $strWrite = ''
    If IsArray($var) Then
    For $i = 1 To UBound($var) -1
    If $var[$i] = $link_alt Then $var[$i] = $link
    $strWrite &= $var[$i] & ';'
    Next
    Else
    $strWrite = $link & ';'
    EndIf
    IniWrite($linkINI, 'hardlinked', $source, StringTrimRight($strWrite, 1))
    LoadFromIni()
    FillListView()
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func NewClickLink()
    Local $source = _GUICtrlListView_GetItemText($hListView, _GUICtrlListView_GetSelectedIndices($hListView))
    Local $index = _GUICtrlListBox_GetCurSel($hListBox)
    Local $link_alt = _GUICtrlListBox_GetText($hListBox, $index)
    Local $link = FileSelectFolder('Weiteren Hardlink festlegen.', $zielINI)
    If $link = '' Then Return MsgBox(262192, 'Auswahlfehler', 'Es wurde keine Link-Pfad ausgewählt!')
    IniWrite($linkINI, 'settings', 'zielpfad', $link)
    GUISetState(@SW_HIDE, $GUIhardlink)
    Local $name = InputBox('Hardlink', 'Bitte den Namen für den Hardlink festlegen.')
    If $name = '' Then Return MsgBox(262192, 'Auswahlfehler', 'Es wurde keine Link-Name festgelegt!')
    CreateHardLink($Source, $link & '\' & $name)
    IniWrite($linkINI, 'hardlinked', $source, IniRead($linkINI, 'hardlinked', $source, '') & ';' & $link & '\' & $name)
    LoadFromIni()
    FillListView()
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func mainGUIClose()
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func closePopup()
    GUISetState(@SW_HIDE, $GUIhardlink)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func LVDblClick($aInfo)
    _GUICtrlListBox_ResetContent($hListBox)
    If $aInfo[3] < 0 Then Return
    Local $str = ''
    For $i = 1 To UBound($aLink,2) -1
    If $aLink[$aInfo[3]][$i] = '' Then ExitLoop
    _GUICtrlListBox_AddString($hListBox, $aLink[$aInfo[3]][$i])
    Next
    GUISetState(@SW_SHOW, $GUIhardlink)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func CreateHardLink($Path, $LinkPath)
    If FileCreateNTFSLink($Path, $LinkPath) = 1 Then
    MsgBox(262208, '', 'Der Hardlink' & @LF & @LF & $LinkPath & @LF & @LF & 'wurde erfolgreich angelegt.')
    Else
    MsgBox(262192, '', 'Der Hardlink' & @LF & @LF & $LinkPath & @LF & @LF & 'konnte nicht angelegt werden.')
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView
    $hWndListView = $hListView
    If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)

    [/autoit] [autoit][/autoit] [autoit]

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hWndListView
    Switch $iCode
    Case $NM_DBLCLK
    Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    Local $aInfo[4] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index")]
    LVDblClick($aInfo)
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [/autoit]

    Edit: Für jene, die mitHardlink nichts anfangen können, eine kurze Erklärung.
    Jedem bekannt sind Verweise (Softlinks) in Windows. Diese können unabhängig vom Dateisystem (FAT32, NTFS) unter Windows erstellt werden und verweisen auf den Dateipfad der Originaldatei und leiten einen Aufruf an die Originaldatei weiter.
    Nachteil: Wird die Originaldatei verschoben oder gelöscht ist auch der Verweis futsch.

    Ein Hardlink ist unter Windows nur auf NTFS-Dateisystem und nur innerhalb einer Partition möglich und ist ein Verweis auf die Adresse der Datei in der Mastertable. Unabhängig vom aktuellen Pfad der Originaldatei bleibt diese Beziehung immer bestehen. Wenn ich den Hardlink im Explorer betrachte, ist kein Unterschied zur Originaldatei feststellbar. Der Hardlink kann wie eine selbständige Datei behandelt werden. Es können mehrere Hardlinks auf dieselbe Datei angelegt werden.
    Ganz entscheidend:
    Wird versehentlich die Originaldatei gelöscht, dann existiert sie (bzw. deren Inhalt) trotzdem unter dem Hardlink weiter!
    (Das kann dann zum Bsp. dazu führen, dass die Originaldatei auf C:\ gelöscht wird, der Hardlink auf D:\ den Inhalt weiter darstellt aber physikalischer Speicherplatz für die Datei weiterhin auf C:\ liegt.)
    Gelöscht werden können Hardlinks nur, wenn in dem Moment kein Filehandle auf die Originaldatei oder deren Hardlinks besteht.

    Hab noch einen kleinen Fehler (Deaktivierung NTFS-Check per INI) beseitigt.

  • Case-Sensitive arraySort?

    • BugFix
    • 5. Juli 2008 um 18:36
    Zitat von LilProgger208

    Suche nach duplikaten in einem array of string

    Na wenns so ist :D
    Verwende doch aus meinen UDF die Funktion _Array2DDblDel() (s. Signatur)

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    Global $a[5] = ['test','TEST','test','TEST','bla']
    _Array2DDblDel($a,1)
    _ArrayDisplay($a)

    [/autoit] [autoit][/autoit] [autoit]

    ;----------------------------------------------------------------------------------------------------------------------
    ; Function _Array2DDblDel(ByRef $ARRAY [, $CASESENS=0])
    ;
    ; Description - From an 1D/2D Array will delete double entries (2D -> combination by '[n][0]' to '[n][x]').
    ; - Autodetection 1D/2D Array
    ; - By using string, you can choose case sensitivity.
    ;
    ; Parameter $ARRAY: Array to sort
    ; optional $CASESENS: Case sensitivity off[0] or on[1] (default 0)
    ;
    ; Return Succes ByRef Array without doubles
    ; Count of doubles
    ; Failure 0 and set @error = 1; no array
    ;
    ; Author BugFix ([email='bugfix@autoit.de'][/email])
    ;----------------------------------------------------------------------------------------------------------------------
    Func _Array2DDblDel(ByRef $ARRAY, $CASESENS=0)
    Local $arTmp[1] = [''], $dbl = 0, $count = 0, $x, $l, $val, $valTmp, $i, $k
    If ( Not IsArray($ARRAY) ) Then
    SetError(1)
    Return 0
    EndIf
    Local $Ubound2nd = UBound($ARRAY,2)
    If @error = 2 Then
    For $i = 0 To UBound($ARRAY)-1
    $dbl = 0
    For $k = 0 To UBound($arTmp)-1
    Switch $CASESENS
    Case 0
    If $arTmp[$k] = $ARRAY[$i] Then
    $dbl = 1
    $count += 1
    EndIf
    Case 1
    If $arTmp[$k] == $ARRAY[$i] Then
    $dbl = 1
    $count += 1
    EndIf
    EndSwitch
    Next
    If $dbl = 0 Then
    If $arTmp[0] = "" Then
    $arTmp[0] = $ARRAY[$i]
    Else
    ReDim $arTmp[UBound($arTmp)+1]
    $arTmp[UBound($arTmp)-1] = $ARRAY[$i]
    EndIf
    Else
    $dbl = 0
    EndIf
    Next
    Else
    ReDim $arTmp[1][$Ubound2nd]
    $arTmp[0][0] = ''
    $x = 0
    For $i = 0 To UBound($ARRAY)-1
    $dbl = 0
    $val = ''
    $valTmp = ''
    For $l = 0 To $Ubound2nd-1
    $val &= $ARRAY[$i][$l]
    Next
    For $k = 0 To UBound($arTmp)-1
    For $l = 0 To $Ubound2nd-1
    $valTmp &= $arTmp[$k][$l]
    Next
    Switch $CASESENS
    Case 0
    If $valTmp = $val Then
    $dbl = 1
    $count += 1
    EndIf
    Case 1
    If $valTmp == $val Then
    $dbl = 1
    $count += 1
    EndIf
    EndSwitch
    $valTmp = ''
    Next
    If $dbl = 0 Then
    If $x = 1 Then ReDim $arTmp[UBound($arTmp)+1][$Ubound2nd]
    For $l = 0 To $Ubound2nd-1
    If $arTmp[0][0] = '' Or $x = 0 Then
    $arTmp[0][$l] = $ARRAY[0][$l]
    If $l = $Ubound2nd-1 Then $x = 1
    Else
    $arTmp[UBound($arTmp)-1][$l] = $ARRAY[$i][$l]
    $x = 2
    If $l = $Ubound2nd-1 Then $x = 1
    EndIf
    Next
    Else
    $dbl = 0
    EndIf
    Next
    EndIf
    $ARRAY = $arTmp
    Return $count
    EndFunc ; ==>_ArrayDblDel

    [/autoit]
  • agieren, sobald eine sache x mal ausgeführt wurde

    • BugFix
    • 5. Juli 2008 um 15:16

    Also wenn ich das richtig verstehe, soll dieser Part:

    [autoit]

    MouseClick ( "Left" , $xachse , $yachse , 40, 0 )
    $counter = $counter + 1

    [/autoit]

    ununterbrochen laufen.
    Dann pack das in eine Funktion, die per AdlibEnable() Nonstop auf die Maus hämmert :D

  • Case-Sensitive arraySort?

    • BugFix
    • 5. Juli 2008 um 14:54

    Die von dir gewünschte Ausgabe kann niemals das Ergebnis einer Sortierung sein.
    Reihenefolge Ascending: erst ALLE Großbuchstaben A-Z dann ALLE Kleinbuchstaben a-z.

    So kannst du das lösen:

    [autoit]

    #include <Array.au3>
    Global $a[5] = ['test','TEST','test','TEST','bla']
    For $i = 0 To UBound($a) -1
    $a[$i] = StringToBinary($a[$i])
    Next
    _ArraySort($a)
    For $i = 0 To UBound($a) -1
    $a[$i] = BinaryToString($a[$i])
    Next
    _ArrayDisplay($a)

    [/autoit]
  • "Wenn Farbe UNGEFAEHR schwarz"

    • BugFix
    • 5. Juli 2008 um 10:29

    Du hast die Möglichkeit mit

    PixelSearch ( left, top, right, bottom, color [, shade-variation [, step [, hwnd]]] )
    [A number between 0 and 255 to indicate the allowed number of shades of variation of the red, green, and blue components of the colour. Default is 0 (exact match).]

    eine Farbe zu suchen, die der Vorgabe mit entsprechender Variation entspricht. Vielleicht kannst du das verknüpfen.

  • ArrayMore.au3

    • BugFix
    • 5. Juli 2008 um 00:31

    Hi,
    habe eine Erweiterung vorgenommen. Bisher wurde nur alphabetisch sortiert, bedingt durch die Standardsortierfunktion von SQLite.
    Wird jetzt für das Flag $NUM der Wert "True" übergeben, erfolgt die Sortierung numerisch.

    Hier die neueste Version:
    Edit 17.08.08: Die aktuelle Version ist in Post 15

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™