« ◇イルカは魚にしては賢い | トップページ | ◇格助詞「に」と「を」の違い »

VC++プログラムで自分自身の起動パス名を得る。

メモです。

Win32のコンソールアプリexeをVC++作って、Hello-Worldを出す。ついでにexeのパスを得る具体的プログラム記述です。

簡単な物なのですが少し触っていないとすぐ忘れる、かつ、 忘れると"具体的"記述法(ヘッダ名だとか、変数の型だとか、プロジェクトの作成 法だとか)を見つけるのに非常に時間がかかるものです。

 具体的コード

次のコードで、

  • コンソールへの表示(pfintfでないことに注意)
  • コマンド引数(ここではargv[0]のみ)の表示
  • 起動されたコマンドのフルパス名の表示
を行っています。

#include "stdafx.h"
#include <WINDOWS.h>
int _tmain(int argc, _TCHAR* argv[]){
   _TCHAR buf[1024];
   GetModuleFileName(0,buf,1024);
   _tprintf(_T("hello world;argv[0]=%s %s\n"),argv[0],buf);
   return 0;
   }
//青色の部分が利用者記述

注意すべきは

  • 文字は必ず_TCHARを使う。charは絶対に使ってはならない
  • 文字列は必ず_T("...")で囲む
  • char*を引数とする関数(printfなど)は絶対に使ってはならない
ことです。

出力はこんな感じになります。(パス名は途中省略しました)

hello world;argv[0]=commander D:\--省略--\Release\commander.exe

 VisualStudio2008でのプロジェクト生成/設定

次のように行います。

[ファイル]
    [新規作成]
       ->[プロジェクト]
          VC++ 
             Win32 コンソールアプリケーション
        (場所とプロジェクト名設定)
          「アプリケーション設定ウィザード」
            [次へ]
                           ・コンソールアプリケーションにチェック
                [完了]
[ビルド]
    [構成マネージャ]
        アクティブソリューション構成で「Release」選択
[ビルド]
    [ソリューションのビルド]
        .exeがReleaseフォルダの下にできることを確認
(_tmain関数でhelloWorldを出す形にして動作確認も行う方がよい)

 ###

本当はこんなもの(VC++)は使わずに済めばそれにこした ことはないんだけど、 dllや.netframeworkなどのシステム非標準を避けること を考えると仕方ない。

javaは起動が大変だし(jar起動だと引数が受けられない) batは無能すぎるし。。。

|

« ◇イルカは魚にしては賢い | トップページ | ◇格助詞「に」と「を」の違い »

トラックバック


この記事へのトラックバック一覧です: VC++プログラムで自分自身の起動パス名を得る。:

« ◇イルカは魚にしては賢い | トップページ | ◇格助詞「に」と「を」の違い »