スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
 

あふの作者さんにアドバイス貰ったv(^^)v

アドバイスを参考にifathumb.spi を「あふ」に対応させました。
それと先日実装したマウスで掴んでスクロールはあふのページを参考にしたのは言うまでもありません。

それから今月はX-Finderも結構更新したと思っていましたが、あふの方が多い感じがします。

あふの配布ページ System AKT
 
スポンサーサイト

Susieプラグイン対応ソフトのGetPreview対応状況

ifapvtest.spi でSusieプラグイン対応ソフトのGetPreview対応状況を調べてみました。

結果はX-Finderまとめサイトの Susieプラグイン対応ソフトのGetPreview対応状況 に書いています。 

へろへろなので…

更新だけで風呂入って寝ます。 

エクスプローラの取り込み

エクスプローラからアドレスを取得するのに以下の様な感じで CWM_GETPATH → SHLockShared で取得していました。

dwProcID := GetCurrentProcessId();
SendMessageTimeout(hWindow, CWM_GETPATH, dwProcID, 0, SMTO_ABORTIFHUNG, 2000, hMem);
ItemIDList := SHLockShared(hMem, dwProcID);
Result := ILClone(ItemIDList);
SHUnlockShared(ItemIDList);
SHFreeShared(hMem, dwProcId);

Vista で取得できないと言う事で調べたら SHLockShared 等が shell32.dll から無くなっているらしい。情報源は BugTrack-MDIE/83 - MDIE wiki

SHLWAPI.DLL に SHLockShared 等がある様なので調整したのが、11-2-27

11-2-27でダメだったので、さらに調べてみると Vista で CWM_GETPATH が動かないと書かれた情報がチラホラ。
ちょっと方向性を変えて IShellWindows でIEとエクスプローラの情報が取れるらしいので調整してみました。

SW := CoShellWindows.Create; //IShellWindows取得
spDisp := SW.Item(i); //IDispatch
spDisp.QueryInterface(IWebBrowser2, WB); //IWebBrowser2取得

通常パスなら 後、WB.LocationURL でOKだけど、マイコンピュータ等の特殊フォルダは取れないので…

WB.QueryInterface(IServiceProvider, SP); //IServiceProvider取得
SP.QueryService(SID_SShellBrowser, IID_IShellBrowser, SB); //IShellBrowser取得
SB.QueryActiveShellView(SV); //IShellView取得
SV.GetItemObject(SVGIO_ALLVIEW, IDataObject, Pointer(dataObj)); //IDataObject取得

といった感じで IDataObject を取得してそこから ItemIDList を取り出しています。
ただ、Window95 でI ShellWindowsは動かないので CWM_GETPATH でダメだったら、IShellWindowsで取得するようにしています。 

Susieプラグイン ifathumb.spi

Susieプラグイン第2弾は IShellImageStore というインターフェイスを利用してエクスプローラの縮小版を表示する為のプラグインです。
GetPicture は何もせずにエラーを返すと Susie で「未知の画像形式です」というようなエラーが出たので IExtractImage で得た画像を返す様にしました。
IsSupported でサポートすると返したら責任を持って画像を返す必要があるようです。

ダウンロードページ 

続アイコンの取得問題解決

12月08日に実装した方法はVistaで問題があったので、[ファイラ]アイコンで紹介されているGIL_ASYNCを活用する方法に変更してみた。 

正式版は遠のいたか…

もう正式版までは細部の調整だけにしようと思ってたんだけど、いろいろと良いアイデアが思いついたので勢いでいろいろ実装してしまった。

FC2にブログ引っ越してきました。旧アドレスは楽雑記です。 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。