皆さんよろしくお願いいたします。Windows7 Delphi6Personalです。
初歩的な質問ですが解決しません。ご指導をお願いいたします。
スライドショーのようなものを作成しています。その原型として
//Windowsの標準ビューワーを使うと固定するとき
FileName:= 'shimgvw.dll,ImageView_Fullscreen '+OpenDialog1.FileName;
ShellExecute(Handle, 'OPEN', 'Rundll32.exe',PChar(FineName+#0), nil, SW_SHOWNORMAL);
一枚開くごとに一枚のビューワーが開きます。
10枚開くとビューワーも10枚になります。
これを一枚のまま画像だけが変わるようにできないでしょうか。
一応ビューワー部分を手作りしたのは、目的を果たしてくれるのですが
なるべく標準ソフトで表示したいのです。
画像を関連づけられた標準ソフトで開く場合
ShellExecute(Form1.Handle, 'open', PChar(OpenDialog1.FileName + #0), nil, nil, SW_SHOW);
プリインストールのPCメーカー付属のビューワーを関連づけると一枚のままでできるものですから
'Rundll32.exe'でもそのような事ができるのかといろいろやってみたのですが。
力不足です。
よろしくお願いします。
質問の内容に対しては直接的な解決ではありませんが
https://www.petitmonte.com/bbs/answers?question_id=5653
こういうアプローチではだめなのでしょうか。
Kennyさん大変遅くなりすみません。
あのページを参考にやっていますが
まだ悪戦苦闘しております。
一応この質問は解決とさせていただき
できない結論に達したらまた質問させて下さい。
ありがとうございました。
XP でやると2枚目を開くと1枚目を開いたビューア上に
表示されるみたい
この質問で書いているビューアーは,
Windows XP
画像とFAXビューア
Windows Vista
Windows フォトギャラリー
Windows 7
Windows フォトビューアー
と名前を変えているものではないかと思います.
Windows XPの時は,複数は起動できず,新しくダブルクリックなどで表示すると,
既に表示中のビューアーで表示されます.
で,ネット上で,複数起動できないのか,という質問をよく見かけたことがあります.
残念ながら,このビューアーには起動オプション等はないようで,制御はできなかった
と記憶しています.
Windows Vistaになって,複数起動が可能となりました.
こんどは逆に常に複数起動となります.
マイクロソフトとしては,要望に応えた形となっていることになりますね.
Windowqs 7でも名前は変わりましたが同じです.
どうしても複数起動をしたくなかったら,一度ビューアーを閉じる,という
方法も考えられるのではないかと思います.
(可能かどうかは不明です)
このビューアーは,拡張子の関連付けで開く場合は,特にRundll32.exeとか
shimgvw.dll,ImageView_Fullscreen の指定は必要ないですね.
(Vista,7では使用するdllが違います)
Mr.XRAY ありがとうございました。
そのようですね。普通に標準ソフトで開くようにします。
XPでは意識しなかったのに7になって、気づきませんでした。
あれっ・・そうだったのか状態。
というレベルです。
毎回閉じるのはいい方法かもしれません、この方法で支障が出ないかしばらくテストします。ありがとうございました。
Mr.XRAY さん結果報告します。
7では、Rundll32.exeを指定していても他社のビューワーを関連づけていれば
関連づけの方が優先されました。
というのはこのプログラムは使われていないのですね。
ユーザーがどんなビューワーを関連づけているか分からないという事は
閉じようにも閉じる事ができませんね。私の能力では。
ちなみに他社のビューワーは一枚しか起動しないので今度は削除するのは無駄になりました。
という事でこの計画はボツにしたいと思います。
ありがとうございました。
ツイート | ![]() |