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.
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.
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. ![]()
Hi,
ich glaube hier fehlt ein wesentlicher Fakt: Wo drin steht der Text? (Edit, Input, Label)
Das ist entscheidend für den Lösungsansatz.
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) )
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.
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.
Schau dir mal IsPressed() an. "If Send..." ist voll daneben ![]()
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. ![]()
Bei den Linuxjüngern gibt es neben "Hardlinks" sogar noch "Softlinks"
Es gibt Links ooohne Ende: Hardlinks, Symlinks, Browserlinks, Rechts-und-Links ![]()
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. ![]()
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?
Da haddu Recht, aufs ganze Skriptlein bezogen. Eigentlich könnten wir es auch in eine Zeile packen (Execute) - DANN ist es kurz. ![]()
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.
; Muster Checkbox-Bearbeitung
; Ziel: einfache Abfrage, welche CB aktiviert sind
#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()
While 1
Sleep(100)
WEnd
Func _Ende()
Exit
EndFunc
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
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
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
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
Hi Lina,
wenn schon, dann richtig kurz ![]()
$Transparency *= 2.55
[/autoit]Hi,
ich arbeite ganz gern mit Hardlinks. Da ich aber langsam alt und drösig werde
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:
#include<EditConstants.au3>
#include<GuiListBox.au3>
#include<GuiListView.au3>
#include<StructureConstants.au3>
#include<WindowsConstants.au3>
#include<GUIConstantsEx.au3>
#include<ListViewConstants.au3>
Opt("GUIOnEventMode", 1)
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
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")
$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)
$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)
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()
While 1
Sleep(100)
WEnd
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
Func openPath()
GUISetState(@SW_SHOW, $guiPath)
EndFunc
Func closePath()
GUISetState(@SW_HIDE, $guiPath)
EndFunc
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
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
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
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
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
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
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
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
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
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
Func mainGUIClose()
Exit
EndFunc
Func closePopup()
GUISetState(@SW_HIDE, $GUIhardlink)
EndFunc
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
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
Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView
$hWndListView = $hListView
If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)
$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
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.
Suche nach duplikaten in einem array of string
Na wenns so ist ![]()
Verwende doch aus meinen UDF die Funktion _Array2DDblDel() (s. Signatur)
#include <Array.au3>
Global $a[5] = ['test','TEST','test','TEST','bla']
_Array2DDblDel($a,1)
_ArrayDisplay($a)
;----------------------------------------------------------------------------------------------------------------------
; 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
Also wenn ich das richtig verstehe, soll dieser Part:
[autoit]MouseClick ( "Left" , $xachse , $yachse , 40, 0 )
$counter = $counter + 1
ununterbrochen laufen.
Dann pack das in eine Funktion, die per AdlibEnable() Nonstop auf die Maus hämmert ![]()
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)
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.
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