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. sc4ry

Beiträge von sc4ry

  • TrueCrypt Laufwerke einbinden

    • sc4ry
    • 1. Mai 2008 um 09:20

    genau das will ich ja eben nicht *g*

    Zitat

    ich habe mehrere externe hdds, die alle komplett mit TC verschlüsselt sind.
    ich möchte nun, dass jede platte einen festen laufwerksbuchstaben hat, sofern ich die hdd anschließe.

    noch einfach ist, /automount devices zu nehmen, dann werden alle HDDs nacheinander eingebunden. so habe ich es zZ, nur
    sind dann die platten immer mit anderen laufwerksbuchstaben versehen ;)

  • WinSetOnTop v2

    • sc4ry
    • 1. Mai 2008 um 00:46

    hab wie immer anlaufschwierigkeiten mit dem script @ progandy.
    haste mal ein bsp-code für mich? iwie krieg ich nichts zurück =/

  • WinSetOnTop v2

    • sc4ry
    • 30. April 2008 um 20:24

    dank euch.
    hab hotkey hinzugefügt ALT Gr 0 (null)

    ansonsten geht es doch (noch) nicht, das beim update die ON TOP Fenster übernommen werden,
    aber das wird noch *g*

  • WinSetOnTop v2

    • sc4ry
    • 30. April 2008 um 16:01

    WinSetOnTop V2

    -listet alle aktiven fenster auf
    -setz ein oder mehrere fenster "On Top" bzw. zurück
    -auf knopfdruck "F9" setzt es das zZ aktive fenster "On Top" bzw. zurück (thx propagandy)
    -kann immer per ALT Gr + 0 angezeigt/minimiert werden
    -sofern fenster aktiv, kann es per ESC angezeigt/minimiert werden
    -schließen mit "x"
    -liste wird auf knopfdruck "update" erneuert, fenster attribute bleiben erhalten (On Top)
    -fenster die "On Top" sind, werden in der liste mit "x" gekennzeichnet
    -beim schließen werden alle "On Top" attribute gelöscht

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon

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

    #include <WINAPI.au3>
    #include <array.au3>
    #include <Process.au3>
    #include <File.au3>
    #include <GUIConstants.au3>
    #Include <GuiListView.au3>
    #include <GuiConstantsEx.au3>

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

    Opt("WinTitleMatchMode", 2)
    Opt("OnExitFunc", "endscript")
    Opt("GUIOnEventMode", 1)
    Opt("GUICloseOnESC", 0)

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

    Global $var2
    Global $WinList
    Global $ini = @scriptdir & "\ActiveWin.ini"
    Global $ListView1, $B_DESCENDING
    Global $tInfo

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

    $dll = DllOpen("user32.dll")

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

    HotKeySet("^!0", "HiDE")
    HotKeySet("{F9}","_ToggleOnTop")

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

    $Form1 = GUICreate("WinSetOnTop - Set active Window with F9 on Top", 300, 290, 0, 0, -1, $WS_EX_TOOLWINDOW )
    GUISetOnEvent($GUI_EVENT_CLOSE, "endscript")
    $Button1 = GUICtrlCreateButton("Set on Top or Back", 0,0,300,20)
    GUICtrlSetOnEvent(-1, "_SetOnTop")
    $ListView1 = _GUICtrlListView_Create ($Form1, "", 0, 20, 300, 250, $LVS_REPORT + $LVS_SINGLESEL + $LVS_SHOWSELALWAYS + $WS_CHILD + $WS_VISIBLE)
    GUICtrlSetOnEvent(-1, "_SetOnTop")
    _GUICtrlListView_SetExtendedListViewStyle ($ListView1, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_CHECKBOXES, $LVS_EX_TWOCLICKACTIVATE, $LVS_EX_HEADERDRAGDROP, $LVS_EX_GRIDLINES, $LVS_EX_BORDERSELECT ))
    _GUICtrlListView_InsertColumn ($ListView1, 0, "Process", 80)
    _GUICtrlListView_InsertColumn ($ListView1, 1, "Window", 180)
    _GUICtrlListView_InsertColumn ($ListView1, 2, "Top", 40)
    $Button2 = GUICtrlCreateButton("Update", 0, 271, 300, 20, 0)
    GUICtrlSetOnEvent(-1, "_Update")

    Global $B_DESCENDING[_GUICtrlListView_GetColumnCount ($ListView1) ]

    GUISetState(@SW_SHOW)
    WinSetOnTop($Form1,'',1)
    WinSetTrans($Form1,'', 220)

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

    _update()

    While 1
    Sleep(10)
    If _IsPressed("1B") Then
    $WinGetState = WinGetState("WinSetOnTop - Set active Window with F9 on Top")
    If $WinGetState = 15 or $WinGetState = 31 Then HiDE()
    EndIf
    WEnd

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

    Func _Update()
    If FileExists($ini) Then
    $Sections = IniReadSectionNames($ini)
    If Not @error Then
    For $i = 1 To $Sections[0]
    IniDelete($ini, $Sections[$i])
    Next
    EndIf
    EndIf

    _GUICtrlListView_DeleteAllItems($ListView1)

    $var = WinList()
    For $i = 1 to $var[0][0]
    If Not @error Then
    ; Only display visble windows that have a title
    If $var[$i][0] <> "" AND IsVisible($var[$i][1]) Then
    $ProcessName = _ProcessGetName(WinGetProcess($var[$i][0]))
    If $ProcessName = @ScriptName Then
    Else
    IniWriteSection($ini, $ProcessName, "")
    IniWrite($ini, $ProcessName, $var[$i][0], "")
    $true = _WinIsOnTop($var[$i][0])
    If $true = True Then IniWrite($ini, $ProcessName, $var[$i][0], "x")
    EndIf
    EndIf
    EndIf
    Next

    $Sections = IniReadSectionNames($ini)
    If Not @error Then
    For $i = 1 To $Sections[0]
    $Section = IniReadSection($ini, $Sections[$i])
    If Not @error Then
    For $e = 1 To $Section[0][0]
    _GUICtrlListView_AddItem($ListView1, $Sections[$i])
    _GUICtrlListView_AddSubItem($ListView1, _GUICtrlListView_GetItemCount($ListView1) - 1, $Section[$e][0], 1)
    _GUICtrlListView_AddSubItem($ListView1, _GUICtrlListView_GetItemCount($ListView1) - 1, IniRead($ini, $Sections[$i], $Section[$e][0], ""), 2)
    Next
    EndIf
    Next
    EndIf

    Global $B_DESCENDING[_GUICtrlListView_GetColumnCount ($ListView1) ]
    _GUICtrlListView_SimpleSort ($ListView1, $B_DESCENDING, DllStructGetData($tInfo, "SubItem"))

    WinSetOnTop($Form1,'',1)

    EndFunc

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

    Func IsVisible($handle)
    If BitAnd( WinGetState($handle), 2 ) Then
    Return 1
    Else
    Return 0
    EndIf
    EndFunc

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

    Func _SetOnTop()
    For $i = 1 To _GUICtrlListView_GetItemCount($ListView1)
    $Checked = _GUICtrlListView_GetItemChecked($ListView1, $i - 1)
    If $Checked = True Then
    $Sec = _GUICtrlListView_GetItemText($ListView1, $i - 1)
    $key = _GUICtrlListView_GetItemText($ListView1, $i - 1, 1)
    $ReadOnTop = IniRead($ini, $Sec, $key, "")
    If $ReadOnTop = "" Then
    WinActivate($key)
    WinSetOnTop($key, "", 1)
    IniWrite($ini, $Sec, $key, "x")
    _GUICtrlListView_AddSubItem($ListView1, $i -1, "x", 2)
    Else
    WinSetOnTop($key, "", 0)
    WinSetState($key, "", @sw_minimize)
    IniWrite($ini, $Sec, $key, "")
    _GUICtrlListView_AddSubItem($ListView1, $i -1, "", 2)
    EndIf
    EndIf
    Next
    For $i = 1 To _GUICtrlListView_GetItemCount($ListView1)
    _GUICtrlListView_SetItemChecked($ListView1, $i - 1, False)
    Next

    WinSetOnTop($Form1,'',1)

    EndFunc

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

    Func endscript()
    If FileExists($ini) Then
    $Sections = IniReadSectionNames($ini)
    If Not @error Then
    For $i = 1 To $Sections[0]
    $ReadOnTop = IniReadSection($ini, $Sections[$i])
    If Not @error Then
    For $e = 1 To $ReadOnTop[0][0]
    WinSetOnTop($ReadOnTop[$e][0], "", 0)
    Next
    EndIf
    IniDelete($ini, $Sections[$i])
    Next
    EndIf
    EndIf
    DllClose($dll)
    Exit
    EndFunc

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

    Func _ToggleOnTop()
    WinSetOnTop("","",Not _WinIsOnTop(""))
    _update()
    EndFunc

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

    Func HiDE()
    $State = WinGetState($Form1)
    If $State = 15 Or $State = 7 Then
    WinSetState($Form1, "", @sw_minimize)
    ElseIf $State = 23 Then
    WinSetState($Form1, "", @SW_RESTORE)
    Else
    WinSetState($Form1, "", @SW_RESTORE)
    EndIf
    EndFunc

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

    Func _WinIsOnTop($WindowHandle)
    Local $long = _WinAPI_GetWindowLong(WinGetHandle($WindowHandle),$GWL_EXSTYLE)
    Return BitAND($long,8)=8 ; $WS_EX_TOPMOST = 8
    EndFunc

    [/autoit]
  • TrueCrypt Laufwerke einbinden

    • sc4ry
    • 30. April 2008 um 14:49

    also bei mir wird (habe jetzt Vista, meine aber vorher bei XP war es genauso), die komplett verschlüsselte Platte unter Arbeitsplatz angezeigt.
    Jedoch als RAW und Windows würde es gerne, sofern man darauf zugreift, immer formatieren. d.h. die platte hat einen laufwerksbuchstaben und ein label (ob nicht formatierte platten nun eine serial haben, weiß ich grad nicht, label ist auf jeden fall immer identisch).

    ich würde dann anhand des labels wissen, welche platte es ist und diese dann mounten lassen (ist ja ähnlich wie mit serial, hauptsache eine eindeutige zuordnung).

    hab leider mein script noch nicht viel weiter bearbeiten können (ziehe grade um), ansonsten hät ich es schonmal eingestellt.

  • _GUICtrlListView Fragen

    • sc4ry
    • 30. April 2008 um 14:31

    Hiho,

    mein aktuelles script ist folgendes:
    es ist dafür gedacht, um schnell existierende fenster "On Top" zu setzen, oder dieses attribut wieder zu löschen (funzt nur noch nicht *g*)
    nun habe ich 2 fragen:

    1. wie funzt _GUICtrlListView_SimpleSort? mit der hilfe bin ich leider nicht weiter gekommen, wie müsste es in meinem fall aussehen?
    2. wie bekomme ich es hin, dass bei einem doppelklick auf eine item im ListView eine Funktion ausgeführt wird ?

    PS: ok, mit dem doppelklick scheint was kompliziert zu sein, kann man dann ne reaktion anfordern, sobald ein item markiert wird?
    habe nen button, der soll dann, je nachdem welches item angeklickt wird, ein anderes label haben.

    PPS: soweit feritg =)

    Spoiler anzeigen
    [autoit]

    #include <array.au3>
    #include <Process.au3>
    #include <File.au3>
    #include <GUIConstants.au3>
    #Include <GuiListView.au3>

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

    Opt("OnExitFunc", "endscript")
    Opt("GUIOnEventMode", 1)

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

    Global $var2
    Global $WinList
    Global $ini = @scriptdir & "\ActiveWin.ini"

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

    $Form1 = GUICreate("active Windows", 308, 312, 0, 0, "", $WS_EX_TOOLWINDOW )
    GUISetOnEvent($GUI_EVENT_CLOSE, "endscript")
    $Button1 = GUICtrlCreateButton("Set on Top or Back", 0,0,300,20)
    GUICtrlSetOnEvent(-1, "_SetOnTop")
    $ListView1 = _GUICtrlListView_Create ($Form1, "", 0, 20, 300, 250)
    GUICtrlSetOnEvent(-1, "_SetOnTop")
    _GUICtrlListView_SetExtendedListViewStyle ($ListView1, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_CHECKBOXES))
    _GUICtrlListView_InsertColumn ($ListView1, 0, "Process", 80)
    _GUICtrlListView_InsertColumn ($ListView1, 1, "Window", 180)
    _GUICtrlListView_InsertColumn ($ListView1, 2, "Top", 40)
    $Button2 = GUICtrlCreateButton("Update", 0, 271, 300, 20, 0)
    GUICtrlSetOnEvent(-1, "_Update")

    GUISetState(@SW_SHOW)
    WinSetOnTop($Form1,'',1)
    WinSetTrans($Form1,'', 220)

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

    _update()

    While 1
    Sleep(100)
    WEnd

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

    Func _Update()
    If FileExists($ini) Then
    $Sections = IniReadSectionNames($ini)
    If Not @error Then
    For $i = 1 To $Sections[0]
    $ReadOnTop = IniReadSection($ini, $Sections[$i])
    If Not @error Then
    For $e = 1 To $ReadOnTop[0][0]
    WinSetOnTop($ReadOnTop[$e][0], "", 0)
    Next
    EndIf
    IniDelete($ini, $Sections[$i])
    Next
    EndIf
    EndIf

    _GUICtrlListView_DeleteAllItems($ListView1)

    $var = WinList()
    For $i = 1 to $var[0][0]
    If Not @error Then
    ; Only display visble windows that have a title
    If $var[$i][0] <> "" AND IsVisible($var[$i][1]) Then
    $ProcessName = _ProcessGetName(WinGetProcess($var[$i][0]))
    If $ProcessName = @ScriptName Then
    Else
    IniWriteSection($ini, $ProcessName, "")
    IniWrite($ini, $ProcessName, $var[$i][0], "")
    EndIf
    EndIf
    EndIf
    Next

    $Sections = IniReadSectionNames($ini)
    If Not @error Then
    For $i = 1 To $Sections[0]
    $Section = IniReadSection($ini, $Sections[$i])
    If Not @error Then
    For $e = 1 To $Section[0][0]
    _GUICtrlListView_AddItem($ListView1, $Sections[$i])
    _GUICtrlListView_AddSubItem($ListView1, _GUICtrlListView_GetItemCount($ListView1) - 1, $Section[$e][0], 1)
    Next
    EndIf
    Next
    EndIf

    WinSetOnTop($Form1,'',1)

    EndFunc

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

    Func IsVisible($handle)
    If BitAnd( WinGetState($handle), 2 ) Then
    Return 1
    Else
    Return 0
    EndIf
    EndFunc

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

    Func _SetOnTop()
    For $i = 1 To _GUICtrlListView_GetItemCount($ListView1)
    $Checked = _GUICtrlListView_GetItemChecked($ListView1, $i - 1)
    If $Checked = True Then
    $Sec = _GUICtrlListView_GetItemText($ListView1, $i - 1)
    $key = _GUICtrlListView_GetItemText($ListView1, $i - 1, 1)
    $ReadOnTop = IniRead($ini, $Sec, $key, "")
    If $ReadOnTop = "" Then
    WinActivate($key)
    WinSetOnTop($key, "", 1)
    IniWrite($ini, $Sec, $key, "x")
    _GUICtrlListView_AddSubItem($ListView1, $i -1, "x", 2)
    Else
    WinSetOnTop($key, "", 0)
    WinSetState($key, "", @sw_minimize)
    IniWrite($ini, $Sec, $key, "")
    _GUICtrlListView_AddSubItem($ListView1, $i -1, "", 2)
    EndIf
    EndIf
    Next
    For $i = 1 To _GUICtrlListView_GetItemCount($ListView1)
    _GUICtrlListView_SetItemChecked($ListView1, $i - 1, False)
    Next

    WinSetOnTop($Form1,'',1)

    EndFunc

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

    Func endscript()
    If FileExists($ini) Then
    $Sections = IniReadSectionNames($ini)
    If Not @error Then
    For $i = 1 To $Sections[0]
    $ReadOnTop = IniReadSection($ini, $Sections[$i])
    If Not @error Then
    For $e = 1 To $ReadOnTop[0][0]
    WinSetOnTop($ReadOnTop[$e][0], "", 0)
    Next
    EndIf
    IniDelete($ini, $Sections[$i])
    Next
    EndIf
    EndIf
    Exit
    EndFunc

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

    ;~ Opt("WinTitleMatchMode", 1) ;1=start, 2=subStr, 3=exact, 4=advanced, -1 to -4=Nocase

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

    ;~ $title = "Microsoft Excel - Mappe1"

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

    ;~ WinSetOnTop($title, "", 0)

    [/autoit]
  • Brennen

    • sc4ry
    • 29. April 2008 um 15:09

    vllt hilf dir das in irgendeiner art weiter ...

    https://autoit.de/index.php?page…urner#post17397

  • TrueCrypt Laufwerke einbinden

    • sc4ry
    • 29. April 2008 um 15:06

    daran würde es nicht liegen, aber es ist halt doch in der handhabung ein unterschied, ob man ne partition verschlüsselt, oder nur eine container-datei erstellt.
    für den fall habe ich aber nen stick dabei =)

    thx oscar, klappt wunderbar. dann werd ich mal gucken, wie ich mein vorhaben damit umsetzten kann =)

  • Downloadgeschwindigkeit begrenzen?

    • sc4ry
    • 29. April 2008 um 15:04

    genau das gleiche prob gibts auch mit dem kopieren.

    für mich ist das mit dem splitten nicht ideal, von daher hab ich den gedanken erstmal verworfen,
    aber vllt wird es in absehbarer zeit mal möglich sein.

    man müsste dem programm ja "nur" vorgaukeln, dass der flaschenhals eigentlich viel kleiner als
    die wirklich mögliche DL-Geschwindigkeit ist. Evtl. eine Art virtuelle Umgebung, in dem man diese
    Tool starten müsste. Ginge in dieser Richtung nichts?

  • TrueCrypt Laufwerke einbinden

    • sc4ry
    • 28. April 2008 um 16:10

    dank euch beiden.

    tc habe ich aber nicht auf jeder platte, da ich die komplette platte crypted habe.
    die andere möglichkeit werde ich aber probieren, bin ja mal gespannt ... sieht auf den ersten blick "übel" aus +g+

  • TrueCrypt Laufwerke einbinden

    • sc4ry
    • 28. April 2008 um 14:06

    also die plattenerkennung ist nicht das problem, das wollte ich eigentlich über DriveGetLabel machen (um dann zu wissen, welchen Laufwerkbuchstaben die gemountete platte bekommen soll).
    ob das tool die ganze zeit läuft, weiß ich noch nicht, wäre aber ansich kein prob.

    wie gesagt, das hauptprob ist das automatische einbinden mitTC über das script, da TC ja die platten nur mit diese bestimmten bezeichnung einbindet (\Device\HarddiskX\Partition1), soweit ich das sehe, autoit das aber nicht ohne weiteres auslesen kann.

    eine eigene zählroutine wäre die alternative, aber die fehleranfälligkeit scheint mir, könnte zu hoch sein ...

    USBLM macht in meinen augen keinen sinn, da es auch spätestens bei dem script zum einbinden über tc scheitern wird.

  • Ausgabe in CMD mittlerweile möglich ?

    • sc4ry
    • 28. April 2008 um 12:54

    wie funzt das ganze jetzt oO

  • Downloadgeschwindigkeit begrenzen?

    • sc4ry
    • 28. April 2008 um 12:51

    also ich fänd das auch praktisch, aber ich glaube nicht, dass das mit autoit so wirklich gut zu bewerkstelligen ist.
    quasi ein Netlimiter ersatz, dass man bei Programmen den Down-/Upload jeweils begrenzen kann (oder bei seinen eltern *g*)

  • TrueCrypt Laufwerke einbinden

    • sc4ry
    • 28. April 2008 um 12:32

    Hiho,

    also ich arbeite viel mit TC, da ich fast alles damit verschlüsselt habe.
    mein vorhaben ist nun das:

    ich habe mehrere externe hdds, die alle komplett mit TC verschlüsselt sind.
    ich möchte nun, dass jede platte einen festen laufwerksbuchstaben hat, sofern ich die hdd anschließe.
    das ganze soll natürlich mit so wenig aufwand wie möglich verbunden sein.

    ich habe zZ batch dateien, mit denen ich jeweils eine hdd mounten und dismounten kann. das ganze funzt aber leider nur bei 1 platte, da danach \Device\HarddiskX jeweils weitergezählt wird.

    jetzt habe ich mir überlegt, gibt es 2 möglichkeiten, wie ich das mit autoit lösen könnten.

    die einfach variante wäre, man kann direkt von der platte, die gerade angeschlossen wird, auslesen, welche "harddisk" es ist (output ist also \Device\Harddisk4\Partition1 als bsp). ist das möglich? mit den standardfunktionen anscheinend nicht.

    2.te möglichkeit wäre, ich würde im programm selber mitzählen. das blöde ist nur, beim dismounten einer bestimmten platte, müsste natürlich wieder zurück gezählt werden. hier bin ich mir noch nicht sicher, ob TC die HarddiskX evtl selber zurückzählt (sonst wäre das prob, HDD4 + HDD5 sind dran, 4 wird entfernt, 5 ist noch dran, die neue platte müsste nun also als 4 eingebunden werden).

    es sei denn, ihr habt andere vorschläge?

  • DeeEnEs Alternative?

    • sc4ry
    • 15. April 2008 um 10:03

    Hi,

    also mein router kann das leider net, dafür ist der leider zu alt.
    mit den neuen clients läuft es schonmal besser ... damit werde ich dann die zeit überbrücken, bis was autoit-mäßiges vorliegt *g*

    also als erstes werde ich wohl die ip-funktion schreiben ... weil bei dem rest (einloggen, host auslesen, updaten) habe ich nock kein plan wie das geht.
    werde mir die seiten aber noch durchlesen, wobei engl. nicht wirklich meine stärke ist ;)

  • DeeEnEs Alternative?

    • sc4ry
    • 14. April 2008 um 21:32

    Hiho,

    kenne mich mit den internet-functions nicht so aus, aber wäre es möglich, eine DeeEnEs-Alternative zu coden?

    DeeEnEs wird dazu verwendet, die aktuelle IP-Adresse an DynDNS.org zu senden, um ständig über einen festen
    Host auf seinen Rechner @ Home zugreifen zu können.

    Leider funzt DeeEnEs bei mir unter Vista nicht mehr, ich hab ka wodran es liegt. Andere gute Alternativen
    habe ich auch nicht finden können.

  • .ico in Ordner als Ordnerbild auswählen

    • sc4ry
    • 13. April 2008 um 19:06

    vllt mag mir nochmal wer helfen.
    also so wie es oben ist, ist der ablauf schon perfekt, außer dass ich gerne den order/laufwerk auswählen würde, wo dann jeder unterordner dieses laufwerkes/ordners nach einem icon durchsucht und gesetzt wird.

    als beispiel wähle ich nun lw z: aus.
    dann soll jeder unterordner von z: (z:\bla; z:\blubb, etc) nach einem *.ico durchsucht werden und falls vorhanden, dieses als ordnerbild verwendet werden.

    ich habe jetzt erstmal das vorhandene script um eine alte mir bekannte funktion erweitert, die die subfolders ausfindig macht.
    leider stimmt hier noch was nicht (dass die icons gesetzt werden, die subfolders findet er schon)

    PS: ok, so scheint es zu klappen =)

    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.2.10.0
    Author: J. Kröger (McPoldy)
    Version: 1.01

    Script Function:
    Bei diesem Sktipt wird ein Ordner gewählt, und das Icon der Ordners auf das
    erste Icon gesetzt welches im Ordner ist (ICO Datei)
    Ist bereits eine Desktop.ini Datei vorhanden wird diese geändert, ist noch
    keine vorhanden wird eine erstellt.

    Änderungen:
    1.01 - DllCall("shlwapi.dll","int","PathMakeSystemFolder","str",$path)
    Das wird benötigt das die Einstellung auch gleich übernommen wird
    - Parameter
    -i oder -I: Es wird ein Kontextmenü erzeugt damit man im Explorer
    das Icon mit einem Rechtsklick auf den Ordner ersetzen
    kann.
    -r oder -R: Entfernt den Kontext - Eintrag wieder entfernen
    #ce ----------------------------------------------------------------------------

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

    #include<array.au3>

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

    Local $path
    Local $search
    Local $selFolder
    Local $IcoPfad = ""
    Local $sections
    Local $var, $str
    Local $VarSub

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

    If $CmdLine[0] = 0 Then
    $selFolder = FileSelectFolder("Bitte den Ordner wählen, es wird das erste Icon (*.ico) im Ordner genutzt:","",2,@MyDocumentsDir)
    $FSO = ObjCreate("Scripting.FileSystemObject")
    Showsubfolders( $FSO.GetFolder($selFolder) )
    _ArrayDisplay($VarSub)
    Else
    Switch $CmdLine[1]
    Case "-i"
    _InstReg()
    Case "-I"
    _InstReg()
    Case "-r"
    _RemoveReg()
    Case "-R"
    _RemoveReg()
    Case Else
    $selFolder = $CmdLine[1]
    EndSwitch
    EndIf

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

    Func ShowSubFolders($Folder)
    For $Subfolder in $Folder.SubFolders
    $search = FileFindFirstFile($Subfolder.Path & "\*.ico")
    If $search <> -1 Then
    $file = FileFindNextFile($search)
    $IcoPfad = $Subfolder.Path & "\" & $file
    _CheckForDesktopINI($Subfolder.Path)
    EndIf
    Next
    EndFunc

    Func _CheckForDesktopINI($path)
    DllCall("shlwapi.dll","int","PathMakeSystemFolder","str",$path)
    $path &= "\desktop.ini"
    If FileExists($path) Then
    $sections = IniReadSectionNames($path)
    If Not @error Then
    For $var = 1 To $sections[0]
    $str = IniRead($path,$sections[$var],"IconFile","null")
    If $str <> "null" Then
    IniWrite($path,$sections[$var],"IconFile",$IcoPfad)
    IniWrite($path,$sections[$var],"IconIndex","0")
    Return
    EndIf
    Next
    EndIf
    $str = IniRead($path,"","IconFile","null")
    If $str <> "null" Then
    IniDelete($path,"","IconFile")
    IniDelete($path,"","IconIndex")
    IniWrite($path,".ShellClassInfo","IconFile",$IcoPfad)
    IniWrite($path,".ShellClassInfo","IconIndex","0")
    Return
    EndIf
    Else
    IniWrite($path,".ShellClassInfo","IconFile",$IcoPfad)
    IniWrite($path,".ShellClassInfo","IconIndex","0")
    Return
    EndIf
    Exit 0
    EndFunc

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

    Func _InstReg()
    RegWrite("HKCR\directory\shell\desktop.ini","","REG_SZ", 'Ändere Ordner Icon')
    RegWrite("HKCR\directory\shell\desktop.ini\Command","","REG_SZ", @ScriptFullPath & ' "%1"')
    EndFunc

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

    Func _RemoveReg()
    RegDelete("HKCR\directory\shell\desktop.ini\Command")
    RegDelete("HKCR\directory\shell\desktop.ini")
    EndFunc

    [/autoit]
  • .ico in Ordner als Ordnerbild auswählen

    • sc4ry
    • 12. April 2008 um 17:59

    hey, vielen dank.
    das klappt nun bei mir.

    wenn ich mir das so angucke, macht er mir hier icon indey null, bei dem alten programm hat er immer -1 genommen (habe aber auch "nix", -1 und 1 probiert, nur nicht 0 *g*)

    big thx, sowas habe ich gesucht =)

  • .ico in Ordner als Ordnerbild auswählen

    • sc4ry
    • 11. April 2008 um 20:03

    hmm, ok, nun sehe ich unterschiede im quelltext, aber ein icon bekommt der ordner trotzdem nicht.

    was mir schon auffällt ist, dass er den pfad in der ini ohne sämtliche backslahes schreibt und zahlen ignoriert.
    aber selbst wenn ich das anpasse, bekommt der ordner das "unbekannt" icon.

  • 2 in 1

    • sc4ry
    • 11. April 2008 um 17:32

    das ganze müsste doch einfach mit GuiCtrlSetData( $1 & @crlf & $2 & ....)
    gehen.

    dann die neue box mit ClipGet nehmen, oder?

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™