D6_P+WinXP お世話になります。
OpenDialogで表示メニューが選択できるようになっていますが、起動時にはいつも「一覧」表示になっています。これを起動時に常時「縮小版(H)」で表示させるように指定できるでしょうか? よろしくお願いします。
こんにちは,Mr.XRAYです.
https://www.petitmonte.com/bbs/answers?question_id=3967
https://www.petitmonte.com/bbs/answers?question_id=1923
の記事の中の,
SendMessage(fhShellDll, WM_COMMAND, $702c, 0);
というのがあります.ここのコマンドの値を,$702D に変えてみてください.
動作確認はしていません.また,IE(Internet Explorer 7以降の環境では動作しません.
Mr.XRAY様 いつもお世話になります。ご紹介いただいた
https://www.petitmonte.com/bbs/answers?question_id=1923
でやりましたらコピペしただけで上手くいきました。またWin7(64)でも問題なく動きました。(このソースコードでは最初から$702dになっていました。
procedure TForm1.OpenPictureDialog1FolderChange(Sender: TObject);
var
ViewHandle: THandle;
begin
ViewHandle := FindWindowEx(GetParent(OpenPictureDialog1.Handle), 0, 'SHELLDLL_DefView', nil);
PostMessage(ViewHandle, WM_COMMAND, MAKEWPARAM($702d, 0), 0);
Application.ProcessMessages;
PostMessage(ViewHandle, WM_COMMAND, MAKEWPARAM($a006, 1), 0);
end;
こんない早く解決できるとは思いもよりませんでした。お礼申し上げます。
>またWin7(64)でも問題なく動きました。
あら,Windows 7環境ということは,IEは多分7以上ですよね.
前にテストした時には動作しなかったのですが,ハンドルの取得を間違えたのかも知れません.
動作することがわかっていれば,またテストしてみます.
Mr.XRAY様 いつもお世話になります。
>IE(Internet Explorer 7以降の環境では動作しません.
自信がなくなり再度動かしてみましたが起動時に確かにサムネールが出ることは間違いありませんでした。開発環境はXP(SP3)+D6pです。
なおIEのバージョンをプロパティーで見てみると
ProgramFiles(x86)=9.00.8112.16421 749,568Bytes
ProgramFiles =9.00.8112.16421 757.760Bytes
でした。 バージョンによって動作しないということはエラーが出て止まってしまうというものか、または単に「一覧」が出るというものでしょうか? 止まらないのであればこれで使いたいと思いますので動かない場合の症状など教えてください。ありがとうございました。
>バージョンによって動作しないということはエラーが出て止まってしまうというものか
いえ,前にテストした時は,コマンドを認識しないで,デフォルトの表示になってしまうだけでした.
エラーや例外で止まる現象ではありませんでした.
でもIE 9 で動作していることですので,私がその時テストした時のコーディングの間違いの
可能性大です.
こんにちは.Mr.XRAY
話は横道になりますが,この仕様はもちろん,マイクロソフトが公開しているわけではありません.
では,どうして知ることができのか? という話です.
これは,WM_COMMANDというメッセージをフックして調べることができます.
もちろん,私が初めてやったわけではありません.stone96さんと同じようなことを考えた人
がいて,やったのだと思います.
したがって,将来,この方法は使えなくなる可能性はあるわけです.
ただ,マイクロソフト自身も,この機能を利用したアプリを開発していると考えても不思議はありません.
だから当分は使えると思っています.
フックというのは,プログラミングの中でも難しい部類になると思いますが,興味があったら
私のサイトにいろいろサンプルがあります.「難解」な記事が多いので恐縮ですが... (^^;
http://mrxray.on.coocan.jp/index.htm
以上,余計な余分な追加レスでした.
ツイート | ![]() |