OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

EXEへの引数渡しについて

  • すぐに回答を!
  • 質問No.100141
  • 閲覧数2023
  • ありがとう数3
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 71% (83/116)

VC++でプログラミングしています。
MFCを使ってダイアログベースのEXEを造っています。
このEXEは別のプロセスから CreateProcess関数で起動され、
引数も渡されます。
で、質問です。
ダイアログのEXEでは、渡された引数を解析するために、何処で、
どのようにしたらよいのでしょうか?
C言語での (argc, argv) のような仕組みがあるのでしょうか?
識者の方、ご教授願います。
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.4
レベル8

ベストアンサー率 60% (20/33)

#第2パラメータの先頭に、ダミーのスペースを入れるのがよいと思います。
お礼コメント
nabezo-

お礼率 71% (83/116)

回答ありがとうございました。
大変参考になりました。
機会があれば、またアドバイスお願いします。
投稿日時 - 2001-07-06 23:42:42
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.1
レベル13

ベストアンサー率 18% (351/1917)

参考URLのようなことでしょうか? ...続きを読む
参考URLのようなことでしょうか?
お礼コメント
nabezo-

お礼率 71% (83/116)

回答ありがとうございました。
大変参考になりました。
投稿日時 - 2001-07-06 23:36:52
  • 回答No.2
レベル5

ベストアンサー率 80% (4/5)

No 1 の方が紹介れているリンク先の方法とは別に、次のような仕組みもあります。 __argc や __argv といったマクロです。 このマクロは、STDLIB.H に定義されています。 __argc は argc と同じ、 __argv も argv と同じ役割です。 マクロの中身は普通の C 関数アクセスに置き換えられているだけなので、InitInstance だろうが CWi ...続きを読む
No 1 の方が紹介れているリンク先の方法とは別に、次のような仕組みもあります。

__argc や __argv といったマクロです。
このマクロは、STDLIB.H に定義されています。

__argc は argc と同じ、
__argv も argv と同じ役割です。

マクロの中身は普通の C 関数アクセスに置き換えられているだけなので、InitInstance だろうが CWinApp 派生クラスのコンストラクタだろうが、どこからでも使えます。

argc argv[] に慣れているのでしたら、利用が簡単だと思います。

ただ、実際には関数呼び出しになるので、左辺値にできません。
代入は必要ないと思いますが…。
また、微妙に呼び出しコストもあるでしょう。
お礼コメント
nabezo-

お礼率 71% (83/116)

回答ありがとうございました。
大変参考になりました。
今回は m_lpCmdLine を使うことにしました。
投稿日時 - 2001-07-06 23:38:21
  • 回答No.3
レベル8

ベストアンサー率 60% (20/33)

CWinAppのメンバ「m_lpCmdLine」を参照すればよいです。 InitInstance内で呼び出せばいいよん。 ...続きを読む
CWinAppのメンバ「m_lpCmdLine」を参照すればよいです。
InitInstance内で呼び出せばいいよん。
補足コメント
nabezo-

お礼率 71% (83/116)

ありがとうございます。
osaosa42 さんには、度々アドバイスして頂き、感謝です。
m_lpCmdLine を参照して確認したのですが、不明な点があります。
呼び出し側のプロセスが CreateProcess() の第2パラメータで
文字列を渡したのですが、m_lpCmdLine はNULLとなっています。
いろいろ試しましたが、文字列の中の最初のスペース以降の部分が
m_lpCmdLine に入っていました。
#こういう仕様???

以下がテスト結果です。
GetCommandLine() もやってみました。

CreateProcess()で起動するプロセスは "c:\temp\test.exe" とします。

<テスト1>
第2パラメータ:NULL
m_lpCmdLine:NULL
GetCommandLine:"c:\temp\test.exe"

<テスト2>
第2パラメータ:"123456"
m_lpCmdLine:NULL
GetCommandLine:"123456"

<テスト3>
第2パラメータ:"12 34 56"
m_lpCmdLine:"34 56"
GetCommandLine:"12 34 56"

パラメータの有無をチェック/解析したいのですが、純粋にパラメータを
取得することはできないのでしょうか?
第2パラメータがNULLの時、GetCommandLine() が NULLになってくれれば
よかったのですが。。。
#第2パラメータの先頭に、ダミーのスペースを入れるのがいいのかなあ。。。
投稿日時 - 2001-07-06 11:44:02
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ