Dj Demir Posted September 15, 2010 Share Posted September 15, 2010 FLood olmaması açısından aynı konudan devam etmek istedim . #include <File.au3> $Kaydet = DirCreate(@DesktopDir & "\" & "\KLasor") $IcoFiLe = @DesktopDir & "\" & "\KLasor" & "\Icon.ico" FileSetAttrib($IcoFiLe,"+H",1) $Yol = @DesktopDir & "\KLasor\" $DesktopIni = _FileCreate($Yol &"\"& "\Desktop.ini") $IniFiLe = ($Yol & "\" & "\Desktop.ini") $Open = FiLeOpen($IniFiLe,1) FileWrite($Open, "[.ShellClassInfo]" & @CRLF) FileWrite($Open, "IconFile=%USERPROFILE%\Desktop\KLasor\Icon.ico" & @CRLF);Burayı şöyle de denedim olmadı "IconFile=Icon.ico" FileClose($Open) FileSetAttrib($IniFiLe,"+H",1) FileInstall("Icon.ico",$IcoFiLe,1) Desktop.ini ve Icon.ico klasörün içine geliyor Desktop.ini düzenleniyor Ama klasör simgesi değişmiyor . Acaba neden değiştirmiyor Teşekkürler .. Link to comment Share on other sites More sharing options...
blue_life Posted September 15, 2010 Share Posted September 15, 2010 @Dj Demir Bir klasöre simge eklemek için, içerisine Desktop.ini adında dosya oluşturmak ve iconun konumunu ve sırasını belirtmek gerekiyordu. [.ShellClassInfo] IconFile=%SystemRoot%\system32\SHELL32.dll IconIndex=27 Tabi sistemine göre farklılık gösterebilir. Yani xpde farklı win7de farklı olabilir. Kullandığın sistem nedir? Link to comment Share on other sites More sharing options...
Dj Demir Posted September 15, 2010 Author Share Posted September 15, 2010 Desktop.ini'yi düşündüm ama dedim ya Shell32.dll'den bağımsız bir icon seçili olacak xp veya win7'de de gösterilmesi için Link to comment Share on other sites More sharing options...
OzgrGvnc Posted September 15, 2010 Share Posted September 15, 2010 Shell32.DLL den bağımsız yapacaksan IconFile=icon adı.ico yazıp IconIndex satırını yazmayabilirsin Örnek [.ShellClassInfo] IconFile=simge.ico Yazıp Desktop.ini olarak kaydet ve ini dosyasının yanına simge.ico adındaki dosyayı yerleştir. Attrib ile gizle. Yada kafana göre Link to comment Share on other sites More sharing options...
Dj Demir Posted September 15, 2010 Author Share Posted September 15, 2010 evet gizlemeden olmuyor keşke IconIndex'i de sormadan denesem ya Teşekkür ettim Link to comment Share on other sites More sharing options...
Dj Demir Posted September 26, 2010 Author Share Posted September 26, 2010 FLood olmaması açısından aynı konudan devam etmek istedim . #include <File.au3> $Kaydet = DirCreate(@DesktopDir & "\" & "\KLasor") $IcoFiLe = @DesktopDir & "\" & "\KLasor" & "\Icon.ico" FileSetAttrib($IcoFiLe,"+H",1) $Yol = @DesktopDir & "\KLasor\" $DesktopIni = _FileCreate($Yol &"\"& "\Desktop.ini") $IniFiLe = ($Yol & "\" & "\Desktop.ini") $Open = FiLeOpen($IniFiLe,1) FileWrite($Open, "[.ShellClassInfo]" & @CRLF) FileWrite($Open, "IconFile=%USERPROFILE%\Desktop\KLasor\Icon.ico" & @CRLF);Burayı şöyle de denedim olmadı "IconFile=Icon.ico" FileClose($Open) FileSetAttrib($IniFiLe,"+H",1) FileInstall("Icon.ico",$IcoFiLe,1) Desktop.ini ve Icon.ico klasörün içine geliyor Desktop.ini düzenleniyor Ama klasör simgesi değişmiyor . Acaba neden değiştirmiyor Teşekkürler .. Link to comment Share on other sites More sharing options...
blackman12 Posted September 26, 2010 Share Posted September 26, 2010 icondb in yeniden yüklenmesi gerekiyor. explorer tekrar başladığında görünmesi gerekir. öyle olmazsa icondb dosyasını sıfırlanması gerekir. Link to comment Share on other sites More sharing options...
Dj Demir Posted September 26, 2010 Author Share Posted September 26, 2010 MaaLesef explorer'i yeniden başlattığım zaman geri gelmiyor Hatta bilgisayarı bile yeniden başlattım ama nafiLe . Peki Icondb'yi nasıl yeniden yükleriz veya nasıl sıfırlarız ? Link to comment Share on other sites More sharing options...
blue_life Posted September 26, 2010 Share Posted September 26, 2010 Icon dosyan ilgili klasörde olsun ve aşağıdakini dene! Bu arada Attrib yaptığımız için windows algılıyor... _Folder_ChangeIcon(@Desktopdir & "\Blue_Deneme","Icon.ico") Func _Folder_ChangeIcon($Folder,$IconFile,$IconIndex = 0) If not FileExists($Folder) Then DirCreate($Folder) $IconIndex = Number($IconIndex) If StringRight($Folder,1) <> "\" Then $Folder &= "\" If not StringInStr($IconFile,":\") And FileExists($Folder & $IconFile) Then _ $IconFile = $Folder & $IconFile IniWriteSection($Folder & "\" & "Desktop.ini", ".ShellClassInfo", _ "IconFile=" & $IconFile & @LF & _ "IconIndex=0") FileSetAttrib($Folder & "\" & "Desktop.ini", "+H") FileSetAttrib($Folder, "+R") EndFunc Link to comment Share on other sites More sharing options...
Dj Demir Posted September 26, 2010 Author Share Posted September 26, 2010 Evet oldu hocam Teşekkürler Ama ben pek anlamıyorum Bu StringLerden Benim kodlardaki hata ne acaba ? Onun üzerinde gösterebilir misiniz ? Link to comment Share on other sites More sharing options...
blue_life Posted September 26, 2010 Share Posted September 26, 2010 Ben senin kodlarını düzenlim sen incele! $Yol = @DesktopDir & "\KLasor\" ;Klasörün konumu $IcoFiLe = "Icon.ico" ;Klasörün içine atılacak iconun adı DirCreate($Yol) ;Klasörü oluşturalım FileInstall("55555\Icon.ico",$Yol & $IcoFiLe,1) ;iconumuzu klasöre çıkartalım IniWriteSection($Yol & "\" & "Desktop.ini", ".ShellClassInfo", _ "IconFile=" & $IcoFiLe & @LF & _ "IconIndex=0") ;İni dosyasını yazalım FileSetAttrib($Yol & "\" & "Desktop.ini", "+H") ;Desktop.ini ye attrib uygulayalım FileSetAttrib($Yol, "+R") ;Klasörümüze attrib uygulayalım Bu arada bir önceki verdiğim örnekte klasör farklı konuma taşınırsa görünüm nomrale dönecektir. Aşağıdaki daha doğru sayılır; Local $Folder_Location = @Desktopdir & "\Deneme_123" If not FileExists($Folder_Location) Then DirCreate($Folder_Location) ;Klasör yoksa oluşturalım FileInstall("Icon.ico",$Folder_Location & "\Icon.ico",1) ;iconumuzu klasöre çıkartalım _Folder_ChangeIcon($Folder_Location,"Icon.ico") ; Burda ise Desktop ini oluşturulup attrip yapılıyor Func _Folder_ChangeIcon($Folder,$IconFile,$IconIndex = 0) If StringRight($Folder,1) <> "\" Then $Folder &= "\" IniWriteSection($Folder & "\" & "Desktop.ini", ".ShellClassInfo", _ "IconFile=" & $IconFile & @LF & _ "IconIndex=" & Number($IconIndex)) FileSetAttrib($folder & "\" & "Desktop.ini", "+H") FileSetAttrib($folder, "+R") EndFunc Link to comment Share on other sites More sharing options...
Dj Demir Posted September 26, 2010 Author Share Posted September 26, 2010 Hocam çok çok teşekkür ederim size Sonunda değişti Link to comment Share on other sites More sharing options...
OzgrGvnc Posted September 27, 2010 Share Posted September 27, 2010 Peki bu koda eklentiler yaparak çalıştırdığımızda bir dizin seçsek ve dizinin tüm alt klasörlerine belirlediğimiz simgeyi uygulasa. Mümkünmü acaba? Local $Folder_Location = @Desktopdir & "\Deneme_123" If not FileExists($Folder_Location) Then DirCreate($Folder_Location) ;Klasör yoksa oluşturalım FileInstall("Icon.ico",$Folder_Location & "\Icon.ico",1) ;iconumuzu klasöre çıkartalım _Folder_ChangeIcon($Folder_Location,"Icon.ico") ; Burda ise Desktop ini oluşturulup attrip yapılıyor Func _Folder_ChangeIcon($Folder,$IconFile,$IconIndex = 0) If StringRight($Folder,1) <> "\" Then $Folder &= "\" IniWriteSection($Folder & "\" & "Desktop.ini", ".ShellClassInfo", _ "IconFile=" & $IconFile & @LF & _ "IconIndex=" & Number($IconIndex)) FileSetAttrib($folder & "\" & "Desktop.ini", "+H") FileSetAttrib($folder, "+R") EndFunc Link to comment Share on other sites More sharing options...
blackman12 Posted September 27, 2010 Share Posted September 27, 2010 Func _Folder_ChangeIcon($Folder,$IconFile,$IconIndex = 0) If StringRight($Folder,1) <> "\" Then $Folder &= "\" if not FileExists($folder) then Return 0 if StringInStr(FileGetAttrib($folder),"D") = 0 then return -1 $subfolders = _FileListToArray($folder,"*",2) for $i=1 to $subfolders[0] IniWriteSection($Folder & $subfolders[$i] & "\" & "Desktop.ini", ".ShellClassInfo", _ "IconFile=" & $IconFile & @LF & _ "IconIndex=" & Number($IconIndex)) FileSetAttrib($folder & $subfolders[$i] & "\" & "Desktop.ini", "+H") FileSetAttrib($folder & $subfolders[$i], "+R") Next EndFunc Func _FileListToArray($sPath, $sFilter = "*", $iFlag = 0) Local $hSearch, $sFile, $sFileList, $sDelim = "|" $sPath = StringRegExpReplace($sPath, "[\\/]+\z", "") & "\" ; ensure single trailing backslash If Not FileExists($sPath) Then Return SetError(1, 1, "") If StringRegExp($sFilter, "[\\/:><\|]|(?s)\A\s*\z") Then Return SetError(2, 2, "") If Not ($iFlag = 0 Or $iFlag = 1 Or $iFlag = 2) Then Return SetError(3, 3, "") $hSearch = FileFindFirstFile($sPath & $sFilter) If @error Then Return SetError(4, 4, "") While 1 $sFile = FileFindNextFile($hSearch) If @error Then ExitLoop If ($iFlag + @extended = 2) Then ContinueLoop $sFileList &= $sDelim & $sFile WEnd FileClose($hSearch) If Not $sFileList Then Return SetError(4, 4, "") Return StringSplit(StringTrimLeft($sFileList, 1), "|") EndFunc Link to comment Share on other sites More sharing options...
OzgrGvnc Posted September 29, 2010 Share Posted September 29, 2010 @blackman12 Verdiğin kodu pek anlayamadım. Fonksyonlar işin içine girince kafam basmıyor. Çalıştırdığımdada herhangi birşey olmuyor. Link to comment Share on other sites More sharing options...
blue_life Posted September 29, 2010 Share Posted September 29, 2010 Global $FolderList = _BL_FIND_SUB_FOLDER("C:\Test") ;Klasör listesini bir değişkene atayalım Global $ICON_FILE = "%SystemRoot%\system32\SHELL32.dll" Global $ICON_INDEX = "46" For $I = 1 to $FolderList[0] ;Döngüyle bulunan klasörlerde desktop.ini oluşturalım. IniWriteSection($FolderList[$I] & "\" & "Desktop.ini", ".ShellClassInfo", _ "IconFile=" & $ICON_FILE & @LF & _ "IconIndex=" & $ICON_INDEX) ;İni dosyasını yazalım FileSetAttrib($FolderList[$I] & "\" & "Desktop.ini", "+H") ;Desktop.ini ye attrib uygulayalım FileSetAttrib($FolderList[$I], "+R") ;Klasörümüze attrib uygulayalım Next Func _BL_FIND_SUB_FOLDER($Location) Local $BL_FLD_LIST = __BL_FIND_SUB_FOLDER($Location) If StringRight($BL_FLD_LIST,1) = "|" Then $BL_FLD_LIST = StringTrimRight($BL_FLD_LIST,1) If $BL_FLD_LIST = "" Then Dim $BL_FLD_LIST[1] $BL_FLD_LIST[0] = 0 Else $BL_FLD_LIST = StringSplit($BL_FLD_LIST,"|",1) EndIf Return $BL_FLD_LIST EndFunc Func __BL_FIND_SUB_FOLDER($Location) If StringRight($Location,1) = "\" Then $Location = StringTrimRight($Location,1) If Not FileExists($Location) Or Not StringInStr(FileGetAttrib($Location),"D") Then Return "" Local $BL_FLD_LIST = $Location & "|" Local $BL_Search = FileFindFirstFile($Location & "\*.*"),$FIND_FILE If $BL_Search <> -1 Then While 1 $FIND_FILE = $Location & "\" & FileFindNextFile($BL_Search) If @error Then ExitLoop if Not StringInStr(FileGetAttrib($FIND_FILE),"D") Then ContinueLoop $BL_FLD_LIST &= __BL_FIND_SUB_FOLDER($FIND_FILE) WEnd EndIf FileClose($BL_Search) Return $BL_FLD_LIST EndFunc Link to comment Share on other sites More sharing options...
blackman12 Posted September 29, 2010 Share Posted September 29, 2010 herhangi birşey yapmana gerek yok arkadaşım sadece _Folder_ChangeIcon("C:\","C:\simge.ico") olarak kullanman yeter. C dizinindeki alt dizinler belirttiğin iconu kullanacak sadece. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.