Jump to content

Desktop.ini Oluşturma


Dj Demir

Recommended Posts

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

@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

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

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

  • 2 hafta sonra ...

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

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

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

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

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

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

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

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

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...