More ... | 編集履歴:差分記録開始以来のHSPのCOMを利用しない方法でWMPの変更箇所
- 番外編にしてみた。 - - - - - [[$$toc]] - - →[[HSP3・サンプルスクリプト]]に戻る - - ---- - これにイベントを取るとなると、もっと面倒になります。~% - 圧倒的にCOMを利用したほうが簡単にできますね。~% - - * スクリプト - {{{ - ; - ; COMを使わない方法。 - ; - - #packopt runtime "hsp3c.hrt" - - onexit gosub *exit - - #define QueryInterface 0 - #define AddRef 1 - #define Release 2 - #define put_URL 9 - - #uselib "oleaut32.dll" - #cfunc SysAllocString "SysAllocString" wptr - #func SysFreeString "SysFreeString" int - - #uselib "ole32.dll" - #func global CoInitialize "CoInitialize" nullptr - #func global CoUninitialize "CoUninitialize" - - #uselib "atl.dll" - #func AtlAxWinInit "AtlAxWinInit" - #func AtlAxGetControl "AtlAxGetControl" int,var - - CoInitialize : AtlAxWinInit - - screen 0,640,500 - - objsize 50,20 - - pos 0,0 : button gosub "OPEN",*go1 - - pos 0,20 - winobj "AtlAxWin","WMPlayer.OCX",0,$50000000,640,480 - WMPID=stat - - AtlAxGetControl objinfo(WMPID,2),ppWMP - dupptr pWMP,ppWMP,4:dupptr WMP,pWMP,46*4 - - stop - - *go1 - sdim path,520 - dialog "mpg;*.avi;*.wmv;*.ram;*.mp3;*.wav",16,"Movie" - if stat == 0 {return} - path = refstr - title ""+getpath(path,9) - - bstr=SysAllocString(path) - - prm=ppWMP,bstr : hr=callfunc(prm,WMP.put_URL,2) - - SysFreeString bstr - - return - - *exit - hr=callfunc(ppWMP,WMP.Release,1):ppWMP=0 - CoUninitialize - clrobj - end - }}} - * memo~% - 2006/04/08 14:09:09 JST~% - 変更~% - onexit *exit -> onexit gosub *exit |