お世話になっております。
過去スレでargvやm_lpCmdLineなど書いておりますが、
Win32 Applicationではどのようにしたら良いのですか?
>> Win32 ApplicationのパラメータつきでVCを起動するには?
もうすこしまじめにタイトルを考えてくださいな。
意味不明ですよ。
おそらく、
Win32 Application でコマンドライン文字列を受け取る方法は?
ということですね。
プロジェクト新規作成のウィザードで自動生成させると、
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow )
{
...
}
が生成されます。
この引数の
LPSTR lpCmdLine
がパラメタ文字列です。
int main( int argc, char * argv[] )
みたいに分割されていません。
コマンドラインに入力した文字列そのものです。
sscanf()
あたりで分割するか、
char * p;
for( p = lpCmdLine; *p; p ++ )
{
}
で左から1文字ずつチェックするか、
ですかね。
この程度のサンプルならWEBでちょっと検索すればゴロゴロしてると思いますので、せっかくインターネットをお使いなのですから、もう少し活用方法を考えてみてはいかがでしょうか。下記は常套ソースです。
#include <windows.h>
#include <stdio.h>
#include "TCHAR.H"
LPCTSTR FindOneOf(LPCTSTR p1, LPCTSTR p2)
{
while (p1 != NULL && *p1 != NULL)
{
LPCTSTR p = p2;
while (p != NULL && *p != NULL)
{
if (*p1 == *p) return CharNext(p1);
p = CharNext(p);
}
p1 = CharNext(p1);
}
return NULL;
}
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow )
{
TCHAR szTokens[] = _T("-/");
LPCTSTR lpszToken = FindOneOf(lpCmdLine, szTokens);
while (lpszToken != NULL){
if (lstrcmpi(lpszToken, _T("A"))==0){
// specified /a option
}
else if (lstrcmpi(lpszToken, _T("ABC"))==0){
// specified /abc option
}
}
return 0;
}
なーめさん、 Toshiさん
お返事ありがとうございます。
ゴメンなさい。初歩的な質問で。。。
いろいろと検索したんですけどね・・・
検索の仕方が悪いと言えばそれまですけど・・・ (^^;
ご指導ありがとうございました。