Deutsch
Forum

Verzeichnis Icon ändern

 
- Seite 1 -



Julian
Schmidt
Hallo,
würd gerne per XProfan das Icon von einen Verzeichnis ändern.
Bin leider noch nicht in der Shell32.dll fündig geworden. Und bräuchte Hilfe bei der Umsetzung.

Gruß
 
XProfan X2
Win7 Professional, SP1, AMD FX(tm)-8350 Eight-Core Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
24.05.2013  
 



 
- Seite 2 -



Julian
Schmidt
Ok, das scheint zu funktionieren.

Allerdings scheint Windows trotzdem meine Desktop.ini nicht anzunehmen.

Schau mal. [...] 
Kommen da bei dir die Ordner-Icons nach dem Ausführen.

814 kB
Hochgeladen:25.05.2013
Ladeanzahl204
Herunterladen
 
XProfan X2
Win7 Professional, SP1, AMD FX(tm)-8350 Eight-Core Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
25.05.2013  
 



Richtig, aktualisiert auch bei mir (XP) nicht.

Habe mal RegDump gemacht vor und nach Änderung -

scheint in der Reg sich dadurch nichts zu ändern.

Aber schau mal hier steht was: [...]  [...] 
 
25.05.2013  
 




Julian
Schmidt
Klappt immernoch nicht richtig.
KompilierenMarkierenSeparieren
Def PathMakeSystemFolder(1) !"Shlwapi", "PathMakeSystemFolderA"
Def DateiName(1) SubStr$(@$(1),-1,"\\")
Def DateiEndung(1) SubStr$(@$(1),-1,".")
Def DateiPfad(1) Translate$(@$(1),("\\" + DateiName(@$(1))),"")+"\\"
Var Programm$=Par$((Upper$(DateiName(Par$(0)))="PROFAN.EXE") or (Upper$(DateiName(Par$(0)))="XPROFAN.EXE"))
Declare Folder$, Icon$, DesktopIni$
Var l&=Create("List", 0)
ClearList
ChDir DateiPfad(Programm$)
AddFiles *"*.ICO"
MoveListToHandle(l&)

whileloop 1, Getcount(l&)

    Icon$=GetString$(l&,&loop-1)
    Folder$=DateiPfad(DateiPfad(Programm$)+Trim$(Mid$(Icon$,Len(DateiPfad(Programm$)+"\\Icons\\"),9999)))
    DesktopIni$ = Folder$ + "Desktop.ini"

    Ifnot DirExists(Folder$)

        MkDir Folder$

    EndIf

    If DirExists(Folder$)

        PathMakeSystemFolder(Folder$)

        If FileExists(DesktopIni$)

            Erase DesktopIni$

        EndIf

        WriteIni DesktopIni$,".ShellClassInfo","IconResource"=Icon$+", 0"
        WriteIni DesktopIni$,"ViewState","Mode"=""
        WriteIni DesktopIni$,"ViewState","Vid"=""
        WriteIni DesktopIni$,"ViewState","FolderType"="Generic"
        SetFAttr DesktopIni$, $06

    EndIf

EndWhile

 
XProfan X2
Win7 Professional, SP1, AMD FX(tm)-8350 Eight-Core Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
25.05.2013  
 



Schau mal die APIs liefern bei mir 0, auch immer den Returnwert von Apis beachten.

MS schreibt: Returns nonzero if successful, or zero otherwise.

Strings sind leider auch nicht gleich Strings. Besonders Roland seine Strings oder
eher durch die Art und Weise wie er sie verwaltet, sind nicht immer für Übergaben
an APIs brauchbar z.B. wenn die GC ( [...]  ) zu früh zuschlägt da nicht selbst organisiert.

Da helfen nProc-Strings oder eher die APIs in nProcs rufen, da nProcs eine echte
eigene Stringverwaltung inne haben und nativ Strings erzeugen ganz reine und feine
wie M$ sie wünscht.
KompilierenMarkierenSeparieren
 {$cleq}
 {$compiler c:\dev\xprofan11\11}
 {$runtime c:\dev\xprofan11\11}
Def GetFileAttr(1) !"Kernel32", "GetFileAttributesA"
Def DateiName(1) SubStr$(@$(1),-1,"\\")
Def DateiEndung(1) SubStr$(@$(1),-1,".")
Def DateiPfad(1) Translate$(@$(1),("\\" + DateiName(@$(1))),"")+"\\"
Var Programm$=Par$((Upper$(DateiName(Par$(0)))="PROFAN.EXE") or (Upper$(DateiName(Par$(0)))="XPROFAN.EXE"))
Declare Folder$, Icon$, DesktopIni$
Var l&=Create("List", 0)
ClearList
ChDir DateiPfad(Programm$)
AddFiles *"*.ICO"
MoveListToHandle(l&)

whileloop 1, Getcount(l&)

    Icon$=GetString$(l&,&loop-1)
    Folder$=DateiPfad(DateiPfad(Programm$)+Trim$(Mid$(Icon$,Len(DateiPfad(Programm$)+"\\Icons\\"),9999)))
    DesktopIni$ = Folder$ + "Desktop.ini"

    Ifnot DirExists(Folder$)

        MkDir Folder$

    EndIf

    If DirExists(Folder$)

        print folder$
        print "A:";nSetFileAttr(Folder$, $4)

        If FileExists(DesktopIni$)

            Erase DesktopIni$

        EndIf

        assign #1,DesktopIni$
        rewrite #1
        /*
        WriteIni DesktopIni$,".ShellClassInfo","IconResource"=Icon$+", 0"
        WriteIni DesktopIni$,"ViewState","Mode"=""
        WriteIni DesktopIni$,"ViewState","Vid"=""
        WriteIni DesktopIni$,"ViewState","FolderType"="Generic"
        */
        print #1,"[.ShellClassInfo]"
        print #1,"IconFile=%SystemRoot%\\system32\\SHELL32.dll"
        print #1,"IconIndex=15"
        print #1,"[ViewState]"
        print #1,"FolderType=Generic"
        close #1
        nSetFileAttr(DesktopIni$, $06)
        nSetFileAttr(Folder$, $4)

    EndIf

EndWhile

waitinput

nProc nSetFileAttr(string s,long m){

    return SetFileAttributesA(s,m)

}

 
25.05.2013  
 




Julian
Schmidt
Cool, klappt.
Naja zumindest wenn der Ordner leer ist. Wenn er gefüllt ist geht es nicht. Ist das von Microschrott nicht vorgesehen oder bekommt man das auch noch irgendwie hin?
 
XProfan X2
Win7 Professional, SP1, AMD FX(tm)-8350 Eight-Core Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
25.05.2013  
 



Ich weiß es ehrlich gesagt nicht und fürchte, da hilft nur Probieren.
 
25.05.2013  
 




Julian
Schmidt
Ich denke das geht nicht. Wurde auch hier geschrieben. [...] 
Hat jemand ein bessere Idee als einen Neuen Ordner zu erstellen dort die Desktop.ini abzulegen, Rechte zu setzen und anschließend alle Dateien und Unterordner in den neuen Ordner zu verschieben.
 
XProfan X2
Win7 Professional, SP1, AMD FX(tm)-8350 Eight-Core Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
25.05.2013  
 



Ja, ich! Nicht kopieren sondern verschieben!

Spätestens wenn sich eine Datei nicht verschieben lässt ists aber auch wieder
unlustig. Ergo ganze Desktop.ini-Gedöns nur für neue Ordner die man z.B. selbst
erstellt.
 
25.05.2013  
 



Ja, ich! Nicht kopieren sondern verschieben!

Spätestens wenn sich eine Datei nicht verschieben lässt ists aber auch wieder
unlustig. Ergo ganze Desktop.ini-Gedöns nur für neue Ordner die man z.B. selbst
erstellt.

Gehen müsste es aber dennoch immer irgendwie denn der Explorer tät ja so!
 
25.05.2013  
 




Julian
Schmidt
iF (25.05.13)

Gehen müsste es aber dennoch immer irgendwie denn der Explorer tät ja so!


Jup, nur wie findet man raus wie der Explorer das macht?

[OFFTOPIC]Doppelpost ^^[/OFFTOPIC]
 
XProfan X2
Win7 Professional, SP1, AMD FX(tm)-8350 Eight-Core Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
25.05.2013  
 



Könnte man API-Mon ansetzen aber das wir speziell beim Explorer vielleicht
tendentiell gewissermassen zum Horror.
 
25.05.2013  
 




Julian
Schmidt
Echt schade. Hab wirklich gehofft das man das irgendwie hinbekommt.

Übrings. Mit diesen Registry-Hack[...]  kann man statt Readonly auch System zu Kennzeichnung von
Individualisierten Ordnern verwenden. Evtl. nicht mit Win7 kompatible.
 
XProfan X2
Win7 Professional, SP1, AMD FX(tm)-8350 Eight-Core Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
25.05.2013  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

21.506 Betrachtungen

Unbenanntvor 0 min.
Walter01.02.2018
Nico Madysa21.02.2014
Tommy03.01.2014
Heiko Dix22.11.2013
Mehr...

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

Julian Schmidt (13x)
iF (11x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie