アプリケーション起動時の引数を取得する方法 – プログラミング – Home

アプリケーション起動時の引数を取得する...
 
通知
すべてクリア

[解決済] アプリケーション起動時の引数を取得する方法


たま
 たま
(@たま)
ゲスト
結合: 23年前
投稿: 50
Topic starter  

すみませんが教えてください。

現在、Windows XP の VC++ .NET( MFC )ダイアログベースで開発していますが、アプリ
ケーション起動時にコマンドラインからの引数の取得方法がわかりません。CWinApp ク
ラスの m_lpCmdLine にある・・・というところまではわかったのですが、どのように取
得するのかに困っています。
C 言語と同じで「 コマンド名 個数 arg1 arg2 ... 」というフォーマットで格納される
のでしょうか。
どうやって、Visual Studio で引数を指定するのか操作方法も一緒に教えていただける
と幸いです。

お手数ですが、よろしくお願いいたします。


引用未解決
トピックタグ
euro2004
 euro2004
(@euro2004)
ゲスト
結合: 22年前
投稿: 37
 

AfxGetApp()でCWinAppのポインタを得られます。

>Visual Studio で引数を指定するのか
これはデバッグ時に引数を渡すということでしょうか?
そうでしたら「プロジェクト」-「xxxのプロパティ」から
「デバッグ」を選択して「コマンド引数」に設定してやります。


返信引用
たま
 たま
(@たま)
ゲスト
結合: 23年前
投稿: 50
Topic starter  

たとえば、コマンドプロンプトを使ってコマンド引数を取得することは可能なのでしょ
うか?


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 21年前
投稿: 600
 

コマンドプロンプトから起動する ってことですか?
だったらやってみればいい。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

MFCを使用しているのであれば、コマンドライン解析の仕組みが既にありますので
そこに個々のアプリ用の処理をインプリメントすれば解析の実装は簡単に出来ます。

MSDNでCCommandLineInfoクラスとCWinApp::ParseCommandLineメソッドを調べれば、
その辺の解説をしているページへのリンクがあるのではないかと思います。
この辺の実装を知らない、もしくは使わない人が多いみたいなので
なんで使わないのか私は不思議なんですけれどね。


返信引用
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

GetCommandLine();をCXXXXVIEWクラス OnInitialUpdateの中でも使えるよ

AA.EXE /P
の場合
/P
が取得できます

ただし
AA.EXE P
の場合 NULLになるケースもあります

ここの検索でCreateProcessをキーワードに検索すると
起動がわ、受け取り側のサンプル いっぱいあります

ちょっと前にフルでソース載せた覚えあるんだけどな


返信引用
たま
 たま
(@たま)
ゲスト
結合: 23年前
投稿: 50
Topic starter  

皆様方、たくさんのレスどうもありがとうございます。
以下のように対応してみました。

BOOL CxxxxApp::InitInstance()
{
....... 省略
CWinApp::InitInstance();
AfxEnableControlContainer();
SetRegistryKey(_T(アプリケーション ウィザードで生成されたローカル アプリケ
ーション));

CxxxxDlg dlg;
// あらかじめ CxxxxDlg クラス内に public なメンバ変数を持っといて・・・
// m_lpCmdLine を丸々コピーした
strcpy( &m_szxxxx[0] , m_lpCmdLine ) ; // * あとは CxxxxDlg 内で
// m_szxxxx[] を使っています。

....... 省略
return FALSE;
}

>これはデバッグ時に引数を渡すということでしょうか?
>そうでしたら「プロジェクト」-「xxxのプロパティ」から
>「デバッグ」を選択して「コマンド引数」に設定してやります。
この方法も試してみて、動的に引数を取得したかったので上記の手順にて行いました。


返信引用
MASATO
 MASATO
(@MASATO)
ゲスト
結合: 22年前
投稿: 53
 

__argc、__argvを使うと言う方法もあります。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました