windows環境下で、独自に既定されたカスタムURLスキーム、例えば
hoge://aaa?b=x
のようなもので独自のアプリが起動するとき、
これをC++上で行いたいです。
試しに、
c++で、IXMLhttprequestを利用すればプログラムからも同じことができるのではと思って試しましたがopen関数で失敗しました。また、system関数を使うことでできそうな気はするのですが、こんな方法でよいのか不安です。
c++
1system("start hoge://aaa?b=x") // これで独自アプリ起動できるけど、これでいいのか...
このようなケースでは、皆さんどのような方法で解決していますか?
system関数を利用する方法でも問題ないでしょうか。
カスタム URI スキームですね。
https://docs.microsoft.com/ja-jp/windows/uwp/launch-resume/launch-default-app
なるほど、カスタムURIスキームというのですね!
参考に質問内容を修正しました。
ありがとうございます。
> system関数を使うことでできそうな気はするのですが、こんな方法でよいのか不安です。
できそうな"気がする"のか、それとも
> これで独自アプリ起動できるけど、これでいいのか...
"できた"のか、どちらでしょうか。それで要望どおりの動きをしているのであればOKですが。(起動するだけなので、実行した外部プログラムの入出力は得られません)
hoshi-takanoriさんが案内された記事での起動例はWindowsのUWPアプリのものですので、質問者さんのC++プログラムがコマンドプロンプト上で動くようなコンソールアプリなのであれば、system関数を使うかWindows APIのShellExecuteを使うようなかたちになると思います。
ご返信ありがとうございます。
まさに、ShellExecute関数がやりたかったことでした!
ShellExecute(NULL, _T("open"), _T("hoge://aaa?b=x"), NULL, NULL, SW_SHOW);
のようにして、アプリの起動(ブラウザで動く)や終了をC++プログラムから行うことがしたかったです。(IEでの起動をchromeにできないでしょうか...)
起動や終了だけらなこれで大丈夫ですが、双方向通信が必要な場合はそれこそ自力でプロトコル実装をする必要があるということですね。
※解決し、BAをいただいて閉じてしまったので、私の回答コメント欄に追記しました。
回答1件
あなたの回答
tips
プレビュー