コマンドライン引数で、aviファイル名の指定の、しかたを教えてください。
1 Dosプロンプトを開く。
2 ソースの、exeファイルを、
Dosプロンプトに、ドラック&ドロップで、フルパスを渡す。
3 半角スペースをあけて、a.aviと入力
4 Enterキーを押す。
これでエラーになります。
やり方を教えてください。お願いします。
BCC Developer Borland C++ Compiler を使っています。
PSTR strFile; //コマンドライン引数を、受け取る変数
LRESULT CALLBACK WndProc(HWND hWnd , UINT msg , WPARAM wp , LPARAM lp) {
static MCI_ANIM_OPEN_PARMS maop;
static MCI_ANIM_PLAY_PARMS mapp;
TCHAR strErr[1024];
switch (msg) {
case WM_DESTROY:
mciSendCommand(maop.wDeviceID , MCI_CLOSE , 0 , 0);
PostQuitMessage(0);
return 0;
case WM_CREATE:
maop.lpstrDeviceType = NULL;
maop.lpstrElementName = strFile;
maop.dwStyle = WS_CHILD | WS_VISIBLE;
maop.hWndParent = hWnd;
mciSendCommand(0 , MCI_OPEN , MCI_OPEN_ELEMENT |
MCI_ANIM_OPEN_PARENT | MCI_ANIM_OPEN_WS ,
(DWORD)&maop);
mciSendCommand(maop.wDeviceID , MCI_PLAY , 0 , (DWORD)&mapp);
return 0;
}
return DefWindowProc(hWnd , msg , wp , lp);
}
int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance ,
PSTR lpCmdLine , int nCmdShow ) {
HWND hWnd;
MSG msg;
WNDCLASS winc;
strFile = lpCmdLine; //コマンドライン引数を渡す
以下ソース省略
lpCmdLineに実行ファイル名が含まれているとか。
lpCmdLineの値を調べてみてください。
ちなみに,CommandLineToArgvWなんてAPIもあります。
カレントディレクトリにa.aviがないとか
回答どうもありがとうございます。
ソースは、以下アドレスの
ページの一番下のソースを使いました。
http://wisdom.sakura.ne.jp/system/winapi/media/mm3.html
a.aviファイルは、exeファイルと同じ、
Debugフォルダに入ってます。
どこが間違ってるんでしょうか。
もしも解りましたら、教えてください。
フルパスでファイル名を指定しないと、パスが通っているところにファイルがあるもの
として解釈されます。
コマンドプロンプトを開いて CDコマンド 等でディレクトリを移動していない場合、
単に a.avi と指定すると、
C:\Documents and Settings\ゆーざめい
のところにあるものとみなしてしまいます。
(実際はPATHに設定されているフォルダはいかにあるものとみなすけど)
実際
C:\Documents and Settings\ゆーざめい>xxxx.exe
で実行しようとすると、
'xxxx.exe' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
と実行できないのはそういうわけで。
exeと同じフォルダにあると解釈させるにはプログラム側でそう解釈しないとダメです。
exeのあるフォルダのフルパスは GetModuleFileName でとれるので、
そこから _splitpath, _makepath(ともにVC用ですので対応するBCCのを使ってください)
でフルパスを求めてください。
>BCC Developer Borland C++ Compiler を使っています。
一応、ここは VC(=Microsoft Visual C++)の掲示板ですので、
ここで聞くのであれば、「VCではなくBCCの質問になってしまいますが」
等の断りを入れておいたほうがいいでしょう。
それが面倒なら BCCの掲示板や、VCのように限定していない掲示板で質問してくださ
い。
回答どうもありがとうございます。
>プログラム側でそう解釈しないとダメです。
そうなんですか。
なかなか難しいそうですね。
いろいろ参考になります!
本当にどうもありがとうございました。
回答どうもありがとうございます。
>プログラム側でそう解釈しないとダメです。
そうなんですか。
なかなか難しいそうですね。
いろいろ参考になります!
本当にどうもありがとうございました。