Sign in to follow this  
Followers 0
TechKid

Help with file type icons being read

2 posts in this topic

PROJECT BACKGROUND

I recently found out how to map a SkyDrive account to a network drive. However, SkyDrive does not allow copying of certain file types. I'm writing a utility that copies the files as ".bak" files to bypass this block. I am running Windows 7 Professional with MS Office 2010.

THE POINT

I want to display file type icons next to the copying progress.

In the registry, the file type icon is stored in "HKCR\FileType\DefaultIcon\DEFAULT", where "FileType" is a string stored in "HKCR\(insert file extension here)\DEFAULT". Final output is in the format "C:\folder\icons.exe,3".

Examples:

For INI files, the output is imageres.dll,-69 and the icon shows correctly.

For DOC files, the output is C:\...\wordicon.exe,1 and the first icon in "wordicon.exe" is displayed, which is not the document icon.

For AU3 files, the output is C:\...\au3script_v10.ico and the icon shows correctly.

Notice that the system file types return "-000" while MS Office file types return "000".

I've tried adding and subtracting various values, absolute value, negated absolute value, using the negative index number, and using just the index number w/o extra processing, in multiple combinations, with no success.

Below is the code in question.

;initialize rest of GUI
$ICON = GUICtrlCreateIcon(...) ;loads application icon on start
$FILE = FileOpenDialog(...) ;only allows selection of 1 file
;Load other file information
$TEMP = StringSplit(RegRead("HKCR\" & RegRead("HKCR\." & GetFileExt($FILE), "") & "\DefaultIcon", ""), ",")
If $TEMP[0] > 1 Then ; if a multi-icon file is defined, then
    GUICtrlSetImage($ICON, $TEMP[1], -Number($TEMP[$TEMP[0]])) ;use the negated index number.
Else
    GUICtrlSetImage($ICON, $TEMP[1], 0) ;use the first icon
EndIf
;Copies file

Func GetFileExt($PATH) ; Gets the characters after "." in $PATH.
    $TMP = StringSplit($PATH, ".")
    Return $TMP[$TMP[0]]
EndFunc   ;==>GetFileExt

I COULD just use the code as-is, but the rest of the GUI (below) looks great and I don't want to mess up this one part.

Posted Image

Share this post


Link to post
Share on other sites



If possible, I'd also like to use hi-def icons; the current configuration sometimes uses 16x16 icons stretched to fit.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0