MFCサンプルのchkbook.exe呼び出しについて

このQ&Aのポイント
  • WinMain関数にchkbook.exeの呼び出しコードを追加しても正常に動作しない場合、修正方法を教えてください。
  • コンソールプログラムでは簡単にchkbook.exeを呼び出せますが、MFCサンプルではどのように修正すれば良いのでしょうか?
  • MFCサンプルのchkbook.exeを呼び出す方法について、修正の手順を教えてください。
回答を見る
  • ベストアンサー

spawnl

#include "stdafx.h" #include <process.h> int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { // TODO: この位置にコードを記述してください。 _spawnl(_P_WAIT, "chkbook.exe",...); return 0; } 上のようにして、MFCサンプルの ckhbook.exe  (引数はありません。) を呼び出そうとしましたが、上手く動きません。  どのように修正すれば良いのでしょうか?  コンソールプログラムの場合は、 簡単に呼び出せます。  よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • asuca
  • ベストアンサー率47% (11786/24626)
回答No.2

末尾近くに "p" をもつ型 (spawnlp()、 spawnlpe()、 spawnvp()、 および spawnvpe()) は、プログラム file を探すために 環境変数 PATH を利用します。環境変数が (次の段で述べる spawn*e() 型関数で) 置き換えられる場合、環境変数は PATH を決定する上の情報源として使われます。 その他の型、spawnl()、 spawnle()、 spawnv()、 および spawnve() では、実行 コードを探すために PATH を使いません。 path には適切に設定された絶対パスまたは相対パスが 入っていなくてはなりません。 とありますがPATHの設定は正しく行われていますか? 一度spawnlが何を返しているか確認してみてはどうでしょう。

uyama33
質問者

お礼

int ret = _spawnl(_P_WAIT, "chkbook.exe", "chkbook.exe", NULL); としたら、動きました。 お世話になりました。 ありがとうございました。

その他の回答 (1)

  • asuca
  • ベストアンサー率47% (11786/24626)
回答No.1

spawnl(_P_WAIT, "chkbook.exe", などのように記述してもだめでしょうか?

参考URL:
http://www.sist.ac.jp/~suganuma/cpp/man/function/spawnl.htm
uyama33
質問者

お礼

コンパイラは通りますが、 動きは同じで、 一瞬黒い画面がでて まるで、コンソールプログラムではないから 終了したかのように その黒い画面は消えてしまいます。

関連するQ&A

  • HINSTANCEの型

    LPSTR は char* なので、 int WINAPI WinMain(HINSTANCE hInstance ,HINSTANCE hPrevInstance , LPSTR lpCmdLine ,int nCmdShow ) を int WINAPI WinMain(HINSTANCE hInstance ,HINSTANCE hPrevInstance , char* lpCmdLine ,int nCmdShow ) と書き換えてもコンパイルできます。 HINSTANCEはvoid *型だという記述を見たのですが、void *で書き換えてもエラーがでてしまいます。 どうしたらよいのでしょうか。

  • lpCmdLineについて

    #include<windows.h> int WINAPI WinMain( HINSTANCE hInstance , HINSTANCE hPrevInstance , PSTR lpCmdLine , int nCmdShow ) { MessageBox(NULL , lpCmdLine , TEXT("Kitty") , MB_ICONINFORMATION); return 0; } とやったのですが、lpCmdLineのパスが表示されません。なぜでしょうか?

  • Windowsアプリケーションをどうしても作りたいのですが

    /* OS==XP コンパイラー==Borland C++5.5 */ #include<windows.h> int WINAPI WinMain( HINSTANCE hInstance , HINSTANCE hPrevInstance , LPSTR lpCmdLine , int nCmdShow ) { return 0; } で Error: 外部シンボル '_main' が未解決(C:\BORLAND\BCC55\LIB\C0X32.OBJ が参照) となるのでexeファイルができません。 解決法を是非教えてください。 C言語歴2日+1H

  • 画像が出力されません

    画像出力するには int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow); から引数"lpCmdLine"を使うことにより画像が出力できる事を聞いたのですが本当でしょうか? うまく出力できません どのようにしたらよいのか具体的にソースをつけて教えてください。 画像はraw画像で出力します

  • Windowsゲームプログラミングを始めたのですが

    最近ゲームのプログラムを始めた者です。 C言語でWindowsプログラムを書き始めたのですが、最初の宣言を行った時点でコンパイル時に大量のエラーが出てしまいました。 ↓が内容です。 #include<windows.h> #include<stdio.h> #include<stdlib.h> int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ){ } 使用OSはVistaです。 急いではいないので、どなたか解決法を知っている方、ご指導お願いします。

  • 外部シンボル "_main"は未解決です

    「LIBC.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です」というエラーが発生しましたが、何をみればいいのかわかりません。int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )がソースについています。

  • DEVICECHANGE() の受け取り

    常駐し、USBメモリなど追加された場合を検出したいです。 どうしたらいいでしょうか? 次のソースでwin32空きプロジェクトを作成します。 #include<windows.h> int WINAPI WinMain( HINSTANCE hInstance , HINSTANCE hPrevInstance , LPSTR lpCmdLine , int nCmdShow ) { return 0; } ON_WM_DEVICECHANGE() というメッセージを受け取るそうですがどうしたらいいでしょうか? 例えば、USBドライブを検出した場合、メッセージを表示するようにしたいです。

  • AppleScriptでプログラミング

    私は最近C言語のプログラミングに興味を持ち、Mac os 10.3.9に入っていた「AppleScript」の中の「スクリプトエディタ」で、インターネットで見つけた文字列、例えば下の #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){ if( DxLib_Init() == -1 ) return -1; WaitKey() ; DxLib_End() ; return 0 ; } などを打ち込んでみたのですが、さっぱりコンパイルできません。 なにしろ初心者なもので、何がなんだかさっぱり分からず困っています

  • VS2019でWinMainエラー発生

    以下メッセージを表示するだけのプログラムですが、以前はビルドできたのですが、VS2019になってからWinMainで「整合性のないインスタンス・・・」とエラーが出ます。なんででしょうか。 お願いします。 またVCをVBSみたいに黒い画面が出ずに引数を使用したいですが、その他アドバイスもお願いします。 #include <windows.h> int WINAPI WinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { MessageBox( NULL, TEXT("Hello, world!"), TEXT("Hello"), MB_OK | MB_ICONINFORMATION ); return 0; }

  • EXEでMessageBoxを作る方法

    Microsoft visual c++でメッセージボックスを作りました。 それをEXEの形にしたいのですが、どうすれば良いのでしょうか? 詳しく教えていただけるととても助かります。 ちなみに下記がVisual c++で作ったメッセージボックスのソースです。 #include<windows.h> int WINAPI WinMain( HINSTANCE hInstance , HINSTANCE hPrevInstance , PSTR lpCmdLine , int nCmdShow ) { MessageBox(NULL , TEXT("how are you?") , TEXT("メッセージボックス") , MB_OK); return 0; }

専門家に質問してみよう