HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0611
nihevsアイコン変更ダイアログでパスが変更された場合は...2解決


nihevs

リンク

2009/6/11(Thu) 18:20:13|NO.25627

HSP NEXT様のhttp://hspnext.com/hspkura/hspkura06.htmを参考にし、
アイコン変更ダイアログを出す事が出来たのですが、
そのアイコンダイアログで、予め指定したパスと別のものを指定した場合の、
そのパスの受け取り方が分かりません。
何方かご教授お願いします。



この記事に返信する


inovia

リンク

2009/6/11(Thu) 18:37:39|NO.25629

パスが変数に代入されるように勝手に改造w
icondlg の3番目の引数に変数を指定すると、選択したアイコンのパスが返ります。


#module ;▼必要となるAPIや定数の定義 #uselib "kernel32.dll" #cfunc LoadLibrary "LoadLibraryA" var #func GetProcAddress "GetProcAddress" int,int #func GetVersionEx "GetVersionExA" var #func MultiByteToWideChar "MultiByteToWideChar" int,int,int,int,int,int #func WideCharToMultiByte "WideCharToMultiByte" int,int,int,int,int,int,int,int #func FreeLibrary "FreeLibrary" int #deffunc icondlg var prm1,str prm2,var prm3 ls=strlen(prm2) : sdim sFile,ls+2 sFile = prm2 : if ls==0 : return -1 exist sFile : if strsize=-1 : return -1 ;SHChangeIconDialog関数のアドレスを取得 dll="shell32.dll" pdll=LoadLibrary(dll) : if pdll==0 : return -1 GetProcAddress pdll,62 _SHChangeIconDialog=stat if _SHChangeIconDialog==0 : return -1 ;OSVERSIONINFO構造体 dim osverinfo,148 : osverinfo(0)=148 GetVersionEx osverinfo if osverinfo(4)==2 : OsVerNT=1 : else : OsVerNT=0 ;NT系の場合 (sFileをUniCodeに変換) #define CP_ACP $00000000 if OsVerNT==1 { ls=(strlen(sFile)+1)*2 : sdim mb,ls MultiByteToWideChar CP_ACP,0,varptr(sFile),-1,varptr(mb),ls prm=hwnd,varptr(mb),260,varptr(idx) ret=callfunc (prm,_SHChangeIconDialog,4) prm3=cnvwtos(mb) if ret==0 : ret=-1 prm1=idx WideCharToMultiByte CP_ACP,0,varptr(sFile),-1,varptr(mb),0,0,0 sdim mb,0 FreeLibrary pdll dim osverinfo,0 : sdim sFile,0 return ret } ;9X系の場合 prm=hwnd,varptr(sFile),0,varptr(idx) ret=callfunc (prm,_SHChangeIconDialog,4) prm3=mb if ret==0 : ret=-1 prm1=idx FreeLibrary pdll dim osverinfo,0 : sdim sFile,0 return ret #global ;***** sample ***** filename=dirinfo(3)+"\\shell32.dll" icondlg nIndex,filename,refpath if stat=-1 : stop mes "Index:"+nIndex mes refpath stop



nihevs

リンク

2009/6/11(Thu) 19:09:34|NO.25633

ありがとうございます。
希望通りの動作です。



ONION software Copyright 1997-2023(c) All rights reserved.