Pastey AssocQueryString
- Posted by andi49 Sep 20, 2015
include std/dll.e include std/machine.e include std/console.e constant ASSOCF_NONE = #00000, ASSOCF_INIT_NOREMAPCLSID = #00001, ASSOCF_INIT_BYEXENAME = #00002, ASSOCF_OPEN_BYEXENAME = #00002, ASSOCF_INIT_DEFAULTTOSTAR = #00004, ASSOCF_INIT_DEFAULTTOFOLDER = #00008, ASSOCF_NOUSERSETTINGS = #00010, ASSOCF_NOTRUNCATE = #00020, ASSOCF_VERIFY = #00040, ASSOCF_REMAPRUNDLL = #00080, ASSOCF_NOFIXUPS = #00100, ASSOCF_IGNOREBASECLASS = #00200, ASSOCF_INIT_IGNOREUNKNOWN = #00400, ASSOCF_INIT_FIXED_PROGID = #00800, ASSOCF_IS_PROTOCOL = #01000, ASSOCF_INIT_FOR_FILE = #02000 enum ASSOCSTR_COMMAND = 1, ASSOCSTR_EXECUTABLE, ASSOCSTR_FRIENDLYDOCNAME, ASSOCSTR_FRIENDLYAPPNAME, ASSOCSTR_NOOPEN, ASSOCSTR_SHELLNEWVALUE, ASSOCSTR_DDECOMMAND, ASSOCSTR_DDEIFEXEC, ASSOCSTR_DDEAPPLICATION, ASSOCSTR_DDETOPIC, ASSOCSTR_INFOTIP, ASSOCSTR_QUICKTIP, ASSOCSTR_TILEINFO, ASSOCSTR_CONTENTTYPE, ASSOCSTR_DEFAULTICON, ASSOCSTR_SHELLEXTENSION, ASSOCSTR_DROPTARGET, ASSOCSTR_DELEGATEEXECUTE, ASSOCSTR_SUPPORTED_URI_PROTOCOLS, ASSOCSTR_MAX atom shwl=open_dll("shlwapi.dll") if shwl<0 then puts(1,"shlwapi.dll not found!\n") any_key() abort(1) end if atom getassoc=define_c_func(shwl,"AssocQueryStringA",{C_INT,C_INT,C_POINTER,C_POINTER,C_POINTER,C_POINTER},C_POINTER) if getassoc<0 then puts(1,"AssocQueryStringA no found!\n") any_key() abort(1) end if function GetAssoc(atom flag1,atom flag,sequence assoc,sequence extra) atom pzbuffer,pbuffer_size sequence result atom text=allocate_string(assoc) atom addon=allocate_string(extra) pzbuffer=allocate(260) pbuffer_size=allocate(4) poke4(pbuffer_size,260) poke4(pzbuffer,0) c_func(getassoc,{flag1,flag,text,addon,pzbuffer,pbuffer_size}) result = peek_string(pzbuffer) free(pzbuffer) free(pbuffer_size) free(text) free(addon) return result end function puts(1,GetAssoc(ASSOCF_NONE,ASSOCSTR_EXECUTABLE,".png","open")&"\n") any_key()
1. Comment by andi49 Sep 20, 2015
Found this here: http://blogs.msdn.com/b/oldnewthing/archive/2015/09/14/10641381.aspx
Quick'n dirty solution for OE.
Andreas