Windows画像とFAXビューアーを使えませんか

解決


新米  2008-05-26 09:28:25  No: 30792

環境はWindowsXP  Delphi6Personalです。
スライドショーを造っていますが難しいです。
エクスプローラーで画像ファイルをダブルクリックすると
関連づけしていないと、「Windows画像とFAXビューアー」というのが起動して同一フォルダ内ならスライドショーが出来ますが、
このコンポーネントにプログラムからファイルパスを送り表示させたり出来ないでしょうか。
よろしくお願いします。


仕事人  2008-05-27 19:55:42  No: 30793

コマンドラインならこれで表示できます

C:\WINDOWS\system32\rundll32.exe C:\WINDOWS\system32\shimgvw.dll,ImageView_Fullscreen 画像ファイル(フルパスで)

Windows XP


みんみん  2008-05-28 05:43:47  No: 30794

APIを使うならこんな感じ

var
  Path: string;
begin
  if OpenPictureDialog1.Execute then
  begin
    Path :='shimgvw.dll,ImageView_Fullscreen '+ OpenPictureDialog1.FileName;
    ShellExecute(Handle, 'OPEN', 'RunDLL32.exe', PChar(Path), nil, SW_NORMAL);
  end;
end;


新米  2008-05-28 11:58:54  No: 30795

仕事人さん、みんみんさん、うまくいきました。ありがとうございます。
仕事人さんのプログラムに引数として渡して実行するのだろうかと
いろいろやっていましたが出来なくて、
みんみんさんのShellExecute(をみて同じようなことを書いてあったので
これでWindowsに処理させるのだなと解りました。
出来れば、ビューワーが前画面で開いてくれれば万々歳なのですが・・・。
もし解りましたら教えてくださいませんか。
PersonalはShellExecuteのヘルプがでてきませんので解りませんでした。
ありがとうございました。一歩前進です。
動画のWindows Media Playerのヘルプやサイトは見つけられましたので
 ShellExecute(formMDI.Handle, 'open', PChar(FileNamePath+#0),nil,  nil, SW_SHOW);でファイルパスを変えたら次々と動きました。
では。


美味しい草なら  2008-05-28 17:53:19  No: 30796

春子:「"Windows 画像とFAXビューア"って、フォルダの指定も出来るみたいね」
海都:「うん、フォルダを指定した場合は、中の最初の画像が表示される」
真琴:「じゃぁ、最初に"マイピクチャ"フォルダを開くようにしておくと便利よ」
春子:「まぁね、それもいいかも」
真琴:「でもぉ、"マイピクチャ"フォルダって、ユーザごとに違うよね? どう指定したらいいの?」
春子:「そういう場合は、環境変数を使えばいいのよ、マコト」
真琴:「えっ、環境変数?」
海都:「あぁ、それも一つの方法だけど…、'%UserProfile%'がユーザの環境変数だよ」
真琴:「その文字列をフォルダ指定で使えばイイってコト? カイトさん」
海都:「いや、そういうワケにはいかないんだ、マコっちゃん、パスに変換するAPIが用意されてる、こう…」

procedure TForm1.Button1Click(Sender: TObject);
var
  szPath: array[0..MAX_PATH] of Char;
  szParam: array[0..MAX_PATH] of Char;
begin
  if ExpandEnvironmentStrings('%UserProfile%', szPath, MAX_PATH) = 0 then exit;
  StrCat(szPath, '\My Documents\My Pictures');
  if ExpandEnvironmentStrings('%SystemRoot%', szParam, MAX_PATH) = 0 then exit;
  StrCat(szParam, PChar('\System32\ShImgVw.dll,ImageView_Fullscreen '+ szPath));
  Caption := szParam;          // パラメータ確認
  ShellExecute(Handle, 'OPEN', 'Rundll32.exe', szParam, nil, SW_SHOW);
end;

真琴:「ねぇ、フォルダ指定が出来るんならぁ、スライドショーが自動的に始まるとイイよね」
春子:「マコト、F11キー押してみてごらん」
真琴:「ん?押したよ、…あ、全画面でスライドショーだ、…そっか、ワカッタよ、アタシ」
春子:「そう?」
真琴:「プログラムで、F11のキーコードをこのウィンドウに送ればいいンでしょ?」
海都:「うん、…ちなみに、このビューアのクラス名は'ShImgVw:CPreviewWnd'」
真琴:「それなら、こうしてぇ…よし、…あれ? コード書いて実行しても、スライドショー始まらないよ」
海都:「マコっちゃん、画像ビューアが起動するのにチョット時間かかるから、1秒くらい待った方がいいかも」
真琴:「あっ、カイトさん、それ正解! Sleep(1000)で1秒待ったら、バッチリOK!」

  ShellExecute(Handle, 'OPEN', 'Rundll32.exe', szParam, nil, SW_SHOW);
  Sleep(1000);
  hw := FindWindow('ShImgVw:CPreviewWnd', nil);
  SendMessage(hw, WM_KEYDOWN, VK_F11, 0);
  SendMessage(hw, WM_KEYUP, VK_F11, 0);

海都:「マコっちゃん、できたね」
真琴:「イェ〜い」
春子:「…だけど、ヒロミくん戻るの遅いよね、さっきからズ〜ット待ちぼうけ…」
海都:「アイツ、またどっかで道草食ッてるな」
真琴:「美味しい草なら、今夜のおかずに、ナンて^^?」
春子:「マコト、知ってる? ドクダミってテンプラにしたりするとケッコウ美味しいんだよ」
真琴:「そうなの? フキノトウやゼンマイなんかは有名だよね、それとタラの芽も」
春子:「あとは、タンポポやヨモギもね、ほかにもまだある?カイトさん」
海都:「ぁ、あの、そういうコトじゃなくて…」


新米  2008-05-29 06:09:47  No: 30797

美味しい草なら さんありがとうございます。
もしかして、過去ログでメディアプレイヤーを調べているときのサイズ変更を教えておられた方ですね。静止画はWindows 画像とFAXビューアで動画はMSプレイヤーでやりたいと思っています。
おかげさまで前方が明るくなりました。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加