はじめまして、ただいまVC++について勉強しているところです。
しかし解らないところが出てきたので少し教えていただけないでしょうか?
BOOL bRet = CreateProcess(
NULL, "EXE_NAME\ OPTION,
NULL,
NULL,
TRUE,
NORMAL_PRIORITY_CLASS,
NULL,
NULL,
&StartUpInfo, &PI );
このように記述したのですが、どうしても実行されないのです。(bRetが0になってしまう。)
exeファイルのパスを絶対パスで設定したらよいのかそれとも、コマンドラインの書き方が違うのでしょうか?
というか
"EXE_NAME\ OPTION
って何を表そうとしてます?
コンパイルすらできないと思うんですけど。
とりあえず、
STARTUPINFO si;
memset(&si, 0, sizeof(STARTUPINFO));
PROCESS_INFORMATION pi;
BOOL bRet = CreateProcess(
NULL,
\\winnt\\notepad.exe,
NULL,
NULL,
TRUE,
NORMAL_PRIORITY_CLASS,
NULL,
NULL,
&si,
&pi);
でメモ帳が起動しますが。
ありがとうございます。CdSさん。
早速試してみます。
でもすみません。今日はじめてVC++について勉強しだして、
ほかの人が作ったプログラムを読まないといけなくなってしまったので
僕の力では歯が立たないのでここに投稿させて頂いているという次第です。
やりたいことは、exeファイルを引数オプションつきで起動したいのです。
EXE_NAMEとOPTIONはヘッダファイルでデファインがきってあります。
この書き方だと、コンパイルはとおるのですが、実行すると開けないんです。
オプション付きで実行する方法を教えてください。お願いします。
STARTUPINFO StartUpInfo;
GetStartupInfo(&StartUpInfo);
PROCESS_INFORMATION PI;
BOOL bRet = CreateProcess(
NULL,
"EXE_NAME\ OPTION,
NULL,
NULL,
TRUE,
NORMAL_PRIORITY_CLASS,
NULL,
NULL,
&StartUpInfo,
&PI
);
char szCmd[256] = ";
wsprintf(szCmd,%s %s,EXE_NAME,OPTION);
WinExec(szCmd,SW_SHOW);
起動したいだけならこの方が簡単です。
ありがとうございます。toruさん。
しかし、起動したいだけでなくて、起動されたときにどこの領域に
メモリが取られたかを知りたいのです。
ファイルマッピングって言うのをしているらしくて、僕が書いた方法でないと
うまくいかないらしいのです。
コマンドラインを記述するところが良くわからないので、教えてもらえれば幸いです。
一応考えたのが
\\Program Files\\Test\\EXE_NAME\\ PC2000_OPTION,
多分あっていないと思うのですが、なにせまったく解らないもので・・・。
toruさんが書いておられるszCmdを第2引数にすればいいかと。
#ファイルマッピングについては誰が担当するんですかね。
その人が全部やればいいと思ったりもしますが。
ほかの人が作ったファイルだったので、そこのところをあまり触らないように
していたのですが、動作しないのでコマンドラインのところのデファインを
やめてファイル名と引数にすることにより解決しました。
案外簡単に書けるなら、そういう風に書いておいてほしかったけどしょうがないですね。
100人いれば100通りのプログラムがあるってことを再び実感しました。
CdSさん、toruさんどうもありがとうございました。