ShellExecuteの動作について
ShellExecuteの動作について
はじめまして。
今、私はゲームソフトを作っており、その中で自分のサイトにアクセスできるボタンを作っています。
ブラウザを開くのにShellExecute関数を使っているのですが、環境によって動いたり動かなかったりするので困っています。
以下はボタンを押した後に処理されるソースコードです。
開発環境 : Windows7 + VC++2010 + DXライブラリ
リリースで出来たexeファイルをWindows7で実行すると普通に動きますが、WindowsXPに持っていくと動きません。
XPで正常に動かないのはこの部分だけなので、正直何が問題なのかよくわかりません。
こういった現象についてご存知の方がいらっしゃれば、宜しくお願いします。
今、私はゲームソフトを作っており、その中で自分のサイトにアクセスできるボタンを作っています。
ブラウザを開くのにShellExecute関数を使っているのですが、環境によって動いたり動かなかったりするので困っています。
以下はボタンを押した後に処理されるソースコードです。
開発環境 : Windows7 + VC++2010 + DXライブラリ
リリースで出来たexeファイルをWindows7で実行すると普通に動きますが、WindowsXPに持っていくと動きません。
XPで正常に動かないのはこの部分だけなので、正直何が問題なのかよくわかりません。
こういった現象についてご存知の方がいらっしゃれば、宜しくお願いします。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: ShellExecuteの動作について
マルチバイト文字に設定されているなら、それで動くはずです。
そうですね。
エクスプローラのパスを入力する所にhttp://google.co.jpと入力してブラウザが開くか試してみてください。
そうですね。
エクスプローラのパスを入力する所にhttp://google.co.jpと入力してブラウザが開くか試してみてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: ShellExecuteの動作について
さっそくのお返事ありがとうございます。
現在、設定は「マルチバイト文字」になっています。
>エクスプローラのパスを入力する所にhttp://google.co.jpと入力してブラウザが開くか試してみてください。
これはShellExecute関数の第3引数をという意味でよいでしょうか。
この場合でも、Windows7では動きますが、XPだとブラウザすら立ち上がりません。
私のゲームでは他にもhtmlで書かれたヘルプを立ち上げるのに同関数を用いていますが、そちらは相対パスを
よんでブラウザ上できちんと表示されています。
webアドレスを書いたところだけ動かないので、とても不思議な思いです。
現在、設定は「マルチバイト文字」になっています。
>エクスプローラのパスを入力する所にhttp://google.co.jpと入力してブラウザが開くか試してみてください。
これはShellExecute関数の第3引数をという意味でよいでしょうか。
この場合でも、Windows7では動きますが、XPだとブラウザすら立ち上がりません。
私のゲームでは他にもhtmlで書かれたヘルプを立ち上げるのに同関数を用いていますが、そちらは相対パスを
よんでブラウザ上できちんと表示されています。
webアドレスを書いたところだけ動かないので、とても不思議な思いです。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: ShellExecuteの動作について
ShellExecute関数ではなく、エクスプローラ・ウィンドウです。
フォルダ・ウィンドウでも構いません。
フォルダ・ウィンドウでも構いません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: ShellExecuteの動作について
失礼しました。
フォルダ・ウィンドウから試しましたが、Win7、XPともにブラウザが立ち上がり、googleのHPが表示されました。
フォルダ・ウィンドウから試しましたが、Win7、XPともにブラウザが立ち上がり、googleのHPが表示されました。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: ShellExecuteの動作について
そうですか。ブラウザオープンが動作するとなると残るのはウィルス対策ソフトあたりがガードしている可能性ぐらいでしょうか。
ウィルス対策ソフトのログを確認してみるのとテスト用にShellExecute関数だけのプログラムを書いて試してみてはどうでしょうか?
ウィルス対策ソフトのログを確認してみるのとテスト用にShellExecute関数だけのプログラムを書いて試してみてはどうでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: ShellExecuteの動作について
効果があるか分かりませんが、"open"をNULLに変えてみてはどうでしょう。
Re: ShellExecuteの動作について
皆さんありがとうございます。
しかし・・・・・・
1) ウィルス対策ソフトを停止してみましたが効果はありませんでした。
2) ShellExecute関数だけのプログラムを書いてみましたが、これもXPでは駄目でした。
3) "open"をNULLに変えてもXPでは駄目でした。
しかし・・・・・・
1) ウィルス対策ソフトを停止してみましたが効果はありませんでした。
2) ShellExecute関数だけのプログラムを書いてみましたが、これもXPでは駄目でした。
3) "open"をNULLに変えてもXPでは駄目でした。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: ShellExecuteの動作について
XPで関連付けがどうなっているか確認してください。
「HyperText転送プロトコル(HTTP)の関連づけ」
http://www.ktlink.jp/hlp/TechInfoExplorerHttp.htm
上の説明どおり関連づけを行うのではなく確認だけお願いします。
デフォルトでopenのアクションが設定されているはずなのですが。
※ SPやIEのバージョンによって変わるかもしれません。
「HyperText転送プロトコル(HTTP)の関連づけ」
http://www.ktlink.jp/hlp/TechInfoExplorerHttp.htm
上の説明どおり関連づけを行うのではなく確認だけお願いします。
デフォルトでopenのアクションが設定されているはずなのですが。
※ SPやIEのバージョンによって変わるかもしれません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: ShellExecuteの動作について
うーん。なんだろう。
とりあえず原点に戻って ShellExecuteの戻り値を調べてみましょう。
http://msdn.microsoft.com/ja-jp/library/cc422072.aspx
とりあえず原点に戻って ShellExecuteの戻り値を調べてみましょう。
http://msdn.microsoft.com/ja-jp/library/cc422072.aspx
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: ShellExecuteの動作について
ウチのXPでは質問に書いてあるコードでブラウザ(IE8)が開くのを確認したことを報告しておきます。
Re: ShellExecuteの動作について
こんな遅い時間までお付き合いいただいていたとは・・・・・・
大変申し訳ございませんでした。
私が使っているXPもIE8が入っていますが、2台ともだめでした。
また、先ほどShellExecuteの戻り値を確認してみました。
数値は「5」となっていました。
とりあえずググッたところでは「ファイルアクセスエラー」に相当するようです・・・・・・。
しかし、ヘルプ用に作成したhtmlファイルのアイコンはIEのものになっていますし、関連付けはなっているはずです。
大変申し訳ございませんでした。
私が使っているXPもIE8が入っていますが、2台ともだめでした。
また、先ほどShellExecuteの戻り値を確認してみました。
数値は「5」となっていました。
とりあえずググッたところでは「ファイルアクセスエラー」に相当するようです・・・・・・。
しかし、ヘルプ用に作成したhtmlファイルのアイコンはIEのものになっていますし、関連付けはなっているはずです。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: ShellExecuteの動作について
今回の問題はhtmlファイルの関連付けではなく、httpの関連付けの方ですね。
上で調べてもらったのでは、「HyperText転送プロトコル(HTTP)の関連づけ」ですよね?
あと5ってことはSE_ERR_ACCESSDENIEDですよね。
DirectPlayとの組み合わせでダメってのは見つけました。
ただ、ShellExecuteだけのプログラムでダメならDirectX(DXライブラリ)関係ないですしね。
上で調べてもらったのでは、「HyperText転送プロトコル(HTTP)の関連づけ」ですよね?
あと5ってことはSE_ERR_ACCESSDENIEDですよね。
DirectPlayとの組み合わせでダメってのは見つけました。
ただ、ShellExecuteだけのプログラムでダメならDirectX(DXライブラリ)関係ないですしね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: ShellExecuteの動作について
このプログラムを試してもらって良いですか。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: ShellExecuteの動作について
ありがとうございます。
intだとエラーになるので、HINSTANCEに変更してさっそく試してみました。
・・・動かないので、最後の手段と思い、ランタイム(msvcr100.dll)を再インストールしてみたら動きました。
私が最初に記載したコード も動きました。
もしかしてと思い、ゲーム本体を起動してみたら・・・・・・やはり動きません。
試しにDXライブラリをインクルードし、上のコードを動かそうとしたところ、エラー5になりました。
intだとエラーになるので、HINSTANCEに変更してさっそく試してみました。
・・・動かないので、最後の手段と思い、ランタイム(msvcr100.dll)を再インストールしてみたら動きました。
私が最初に記載したコード も動きました。
もしかしてと思い、ゲーム本体を起動してみたら・・・・・・やはり動きません。
試しにDXライブラリをインクルードし、上のコードを動かそうとしたところ、エラー5になりました。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: ShellExecuteの動作について
DirectXが絡むとダメなようですね。
あとはShellExecuteではなく、CreateProcessあたりを使ってexplorer.exeを起動してみるとか。
あとはShellExecuteではなく、CreateProcessあたりを使ってexplorer.exeを起動してみるとか。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: ShellExecuteの動作について
申し訳ございません。
ゲーム本体のShellExecuteの引数をソフト屋様にいただいたコードに書き換えたところ動きました。
DirectXが絡むと「open」が使えない理由はよくわかりませんが、とりあえず動いているのを見て感動しました。
ご助言いただいた皆様、とくにソフト屋様に感謝いたします。
大変ありがとうございました!
ゲーム本体のShellExecuteの引数をソフト屋様にいただいたコードに書き換えたところ動きました。
DirectXが絡むと「open」が使えない理由はよくわかりませんが、とりあえず動いているのを見て感動しました。
ご助言いただいた皆様、とくにソフト屋様に感謝いたします。
大変ありがとうございました!
Re: ShellExecuteの動作について
explorer.exeでもIE固定になるような記述が見付かったのですが大丈夫でしょうか。
ShellExecuteでブラウザを起動するだけの実行ファイルを作っておいてそれをShellExecuteするという方法があるみたいです。
ShellExecuteでブラウザを起動するだけの実行ファイルを作っておいてそれをShellExecuteするという方法があるみたいです。
Re: ShellExecuteの動作について
ええぇ~っ!
もう解決ボタン押してしまいました・・・・・・
私の持っているPCはIEしか入っていないので、他のブラウザはまだ確認していません。
>ShellExecuteでブラウザを起動するだけの実行ファイルを作っておいてそれをShellExecuteする
これは面白そうですね。
もしよろしければ情報元を教えていただけないでしょうか。
もう解決ボタン押してしまいました・・・・・・
私の持っているPCはIEしか入っていないので、他のブラウザはまだ確認していません。
>ShellExecuteでブラウザを起動するだけの実行ファイルを作っておいてそれをShellExecuteする
これは面白そうですね。
もしよろしければ情報元を教えていただけないでしょうか。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: ShellExecuteの動作について
当方ではWin7ではFireFoxが呼び出されるのを確認してますが、XPはGoogleCromeなのでFireFoxでは確認していません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: ShellExecuteの動作について
XPにファイアーフォックスをインストールし、規定のブラウザに設定後試してみました。
(HyperText転送プロトコル(HTTP)の関連づけはファイアーフォックスになっています)
その結果、何故かIEが立ち上がりました・・・・・・。
(HyperText転送プロトコル(HTTP)の関連づけはファイアーフォックスになっています)
その結果、何故かIEが立ち上がりました・・・・・・。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: ShellExecuteの動作について
ISleさんの方法は、2段ロケットですね。そっちなら確実かも。
ShellExecute(NULL, "open", "http://google.co.jp", NULL, NULL, SW_SHOWNORMAL) ;だけのプログラムを作って、それをDXライブラリを使ったプログラムからShellExecuteすると言う方法です。
DXライブラリアプリ→HP起動アプリ→HP表示
ShellExecute(NULL, "open", "http://google.co.jp", NULL, NULL, SW_SHOWNORMAL) ;だけのプログラムを作って、それをDXライブラリを使ったプログラムからShellExecuteすると言う方法です。
DXライブラリアプリ→HP起動アプリ→HP表示
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: ShellExecuteの動作について
SE_ERR_ACCESSDENIEDで検索したら、呼び出せないショートカットの代わりにバッチファイルを作って間接的に呼び出したらできたという記述を見付けました。ママン さんが書きました:>ShellExecuteでブラウザを起動するだけの実行ファイルを作っておいてそれをShellExecuteする
これは面白そうですね。
もしよろしければ情報元を教えていただけないでしょうか。
なのでブラウザの呼び出しにも使えるのではないかと。
Re: ShellExecuteの動作について
返信が遅れ失礼しました。
外部exeファイルを呼び出してShellexecuteを実行したところ、
XPでもファイアーフォックスで目的のページが表示されました。
ただ、外部exeファイルを実行した時に、画面に黒い窓が一瞬現れて消えるので、
人によっては嫌われるかもしれないと思いました。
(ユーザーの情報を勝手に私のサイトに送っていると勘違いされるかもしれないという意味です)。
私はShellexecuteしか使ったことがないので、こだわってきましたが、実際これを使うのは無理かもしれません。
外部exeファイルを呼び出してShellexecuteを実行したところ、
XPでもファイアーフォックスで目的のページが表示されました。
ただ、外部exeファイルを実行した時に、画面に黒い窓が一瞬現れて消えるので、
人によっては嫌われるかもしれないと思いました。
(ユーザーの情報を勝手に私のサイトに送っていると勘違いされるかもしれないという意味です)。
私はShellexecuteしか使ったことがないので、こだわってきましたが、実際これを使うのは無理かもしれません。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: ShellExecuteの動作について
コンソールアプリではなく、DXライブラリと同じWinMainしてコンソールアプリみたいにShellexecuteだけすればウィンドウは出ませんよ。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。