CyberSlug Posted January 23, 2005 Share Posted January 23, 2005 I would like to display the icon associated with a file (based on file extension. My code works for ".au3" but NOT for most extensions like ".txt" The registry key I get for txtfile is "%SystemRoot%\system32\shell32.dll,-152" I have two issues--the second issue being a show stopper 1) The %SystemRoot% appears not to be automatically expanded. Why not??? Is it because $iconFile results from a function call instead of a literal string assignment? This issue causes the FileExists check to fail... Sure I could manually call EnvGet, but I'm lazy, 2) The -152 is an Icon ID instead of and Icon Index.... (Microsoft documentation says that the minus sign indicates the value is to be treated as ID#152.) I need the index for GuiCtrlCreateIcon... could GuiCtrlCreateIcon be modified to support icon IDs? By the way,DllCall(... "SHGetFileInfo "...) will not work due to the structures required by the function. Here's my code: $filename = "SomeFile.txt" ;TRY ALSO "SomeFile.au3" $extension = StringTrimLeft($filename, StringInStr($filename,".",1,-1)) $iconFile = RegRead("HKCR\" & RegRead("HKCR\."&$extension,"") & "\DefaultIcon", "") $iconID = 0 If StringInStr($iconFile, ",") Then $iconID = StringTrimLeft($iconFile, StringInStr($iconFile,",")) $iconFile = StringLeft($iconFile, StringInStr($iconFile,",")-1) EndIf Opt("ExpandEnvStrings",1);registry keys might contain %sytemroot% in path MsgBox(4096, "Not expanded???", $iconFile) MsgBox(4096,"Expanded","%SystemRoot%\system32\shell32.dll") If Not FileExists($iconFile) Then MsgBox(4096,"Error", "Icon resource not found.... quitting") Exit EndIf ; Show icon in GUI GuiSetState(@SW_SHOW, GuiCreate("Icon", 100, 100)) GuiCtrlCreateIcon($iconFile, $iconID, 30, 30, 32, 32) sleep(3000) Use Mozilla | Take a look at My Disorganized AutoIt stuff | Very very old: AutoBuilder 11 Jan 2005 prototype I need to update my sig! Link to comment Share on other sites More sharing options...
CyberSlug Posted January 23, 2005 Author Share Posted January 23, 2005 (edited) Well, maybe "txt" is one of the few where I should do a special case (use index of 70 on Windows XP.... If I remove the FileExists check, "bmp" and "wav" and "doc" all seem to work Edit: Firefox also complicates things by putting the icon info in something like RegRead("HKEY_CLASSES_ROOT\CLSID\" & RegRead("KHCR\" & RegRead("HKCR\."&$extension,"") & "\ShellEx\IconHandler","") & "\Old Icon\FirefoxHTML\DefaultIcon", "") Edited January 23, 2005 by CyberSlug Use Mozilla | Take a look at My Disorganized AutoIt stuff | Very very old: AutoBuilder 11 Jan 2005 prototype I need to update my sig! Link to comment Share on other sites More sharing options...
SlimShady Posted January 23, 2005 Share Posted January 23, 2005 (edited) @CyberSlug: I was in the same boat. I had those issues too. A while ago I made an application launcher that retrieved icons. Let me see how I did it back then... Edit: Because of these issues I gave up and added FileOpenDialogs. I'm sorry, I can't help you. Edited January 23, 2005 by SlimShady Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now