VC++6。MFCベースのプログラムについて質問です。

開発したプログラムから
JPGファイルを指定したイメージソフトで開きたい
と思っているのですが、良い方法は有りますせんか?
(関連付けられた実行ファイルからでならShellExecute
で開くことができるのですが、よい方法がわかりません。)
お手数をおかけしますが、
お答えいただきたく宜しくお願いします。


回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/07/09 21:33:26
  • 終了:2007/07/14 21:56:43

ベストアンサー

id:rfu No.2

rfu回答回数6ベストアンサー獲得回数12007/07/09 23:49:02

ポイント50pt

ダミーです

http://www.google.com/

これで指定のソフトでファイルを開くことはできないでしょうかでしょうか?

::ShellExecute(NULL,"open",対象イメージソフトの実行ファイルフルパス,対象JPGファイルのフルパス,NULL,SW_SHOWNORMAL);

id:harunoharuno

回答ありがとうございます。

試してみたところ、なんかよさそうでした。

もうちょっと試してみて問題がないようでしたら、この質問は終了します。

本当にありがとーございます。

2007/07/10 00:14:01

その他の回答(2件)

id:t_shiono No.1

t_shiono回答回数256ベストアンサー獲得回数222007/07/09 22:25:39

ポイント50pt

指定したイメージソフトがコマンドラインパラメタは受け取らないということですよね?

その場合であれば、確認していませんが、

CreateProcessなどで対象イメージソフトを起動

FindWindowでイメージソフトのウィンドウハンドルを取得

SendMessageでメッセージ(ID_FILE_OPEN?)を送る

ことでうまくいくかもしれないです。

ただし、起動ユーザがAdministratorグループである必要があるようですが。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=39201&am...

これ以上はイメージソフトに依存してしまうのではないでしょうか?また、Spyなどでどんなメッセージが飛んでいるか確認するのも有効かもしれません。

id:harunoharuno

丁寧な回答ありがとうございます。

コマンドラインパラメタについてですが、

イメージソフトに依存してしまう気がしましたので

まだ試していません。(また、FhotoShopや

PaintShopのヘルプを調べてみましたがコマンドライン

の情報が得られませんでした。

これらはメーカに問い合わせるしかないのかな?)

>>CreateProcessなどで対象イメージソフトを起動

>>FindWindowでイメージソフトのウィンドウハンドルを取得

>>SendMessageでメッセージ(ID_FILE_OPEN?)を送る

>>ことでうまくいくかもしれないです。

>>ただし、起動ユーザがAdministratorグループである必要があるようですが。

SendMessageでメッセージ(ID_FILE_OPEN)を送る方法があるんですね。

面白い方法を教えていただきありがとうございます。

しかし、Administratorグループじゃないとだめという制限があるのは

ちょっと厳しいです。

WindowsのGUIでは実行ファイルにファイルを重ねるだけで、

任意のプログラムからファイルを読み出すことが出来るので、

API一発でできるのではと期待していましたが、

それは無理なんですね。

イメージソフトに依存しない方法も

教えていただけるとありがたく宜しくお願いします。

(無理な場合は、無理っぽいという回答でも構いません。)

2007/07/09 23:26:27
id:rfu No.2

rfu回答回数6ベストアンサー獲得回数12007/07/09 23:49:02ここでベストアンサー

ポイント50pt

ダミーです

http://www.google.com/

これで指定のソフトでファイルを開くことはできないでしょうかでしょうか?

::ShellExecute(NULL,"open",対象イメージソフトの実行ファイルフルパス,対象JPGファイルのフルパス,NULL,SW_SHOWNORMAL);

id:harunoharuno

回答ありがとうございます。

試してみたところ、なんかよさそうでした。

もうちょっと試してみて問題がないようでしたら、この質問は終了します。

本当にありがとーございます。

2007/07/10 00:14:01
id:ardarim No.3

ardarim回答回数892ベストアンサー獲得回数1422007/07/12 02:18:20

ポイント75pt

2番目の方の回答でよいと思いますが補足で。


「WindowsのGUIでは実行ファイルにファイルを重ねるだけで、任意のプログラムからファイルを読み出すことが出来る」というのは、プログラムのアイコンの上に画像ファイルをドラッグ&ドロップすることだと思いますが、これは、プログラムの引数(コマンドラインパラメータ)に画像ファイルを指定して実行することと等しいです。


コマンドラインパラメータはイメージソフトに依存しますが、上記の操作でたいていの場合は正しく表示されることからわかるように、一般的にはファイル名を指定すれば開いてくれるソフトがほとんどです。


ちなみに、画像ファイルのパスは " " で囲んだほうが無難です。(パスに空白を含む場合があるので)


ダミー

id:harunoharuno

お世話になっております。

コマンドラインパラメータでうまくいくならば

ロジック上大きな変更をせず、プログラムを

変更することができます。可能でしたら情報

ソースも教えていただけると嬉しいです。

回答ありがとうございました。

2007/07/14 21:55:40
  • id:ardarim
    プログラムアイコンにファイルをD&Dした時はコマンドラインにそのファイル名が渡された状態でプログラムが起動します。
    これ、私的には一般常識的なものだと思っていたので、改めて情報ソースといわれると困ってしまいました。
    いちおう説明しているところをいくつか探してみました。
    http://www.activebasic.com/forum/viewtopic.php?p=420&sid=301bce5b9327412140653998ca84032c
    http://hp.vector.co.jp/authors/VA014465/lab/college/tool/vbstep01.html
    http://donnk.com/Nmura/soft/help025.html

    たぶん一般的なプログラムの解説書とかにも出てくるとは思うのですが。。。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません