ほにゃらら.eneからほにゃほにゃらら.exeを起動できない

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
プラム
記事: 164
登録日時: 11年前
住所: 東海地方

ほにゃらら.eneからほにゃほにゃらら.exeを起動できない

#1

投稿記事 by プラム » 11年前

たとえばゲームの設定で反映して実行みたいなのあるじゃないですか。
それでやってみたんですが起動できす、そのまま終了してしまい、デバックでやってもそれ関係のものは何も表示されてなく、実行できませんでした。誰か教えてください。
その場所のコードは

コード:

    system("GamePlay.exe");

です。

わかる人教えてください。
最後に編集したユーザー プラム on 2014年3月24日(月) 16:50 [ 編集 1 回目 ]

初級者
記事: 200
登録日時: 14年前

Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない

#2

投稿記事 by 初級者 » 11年前

何だか開きカッコが足りないような
気がするのはさておき...

system()
で実行したいexeファイルのパスは
正しく通っていますか?

アバター
プラム
記事: 164
登録日時: 11年前
住所: 東海地方

Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない

#3

投稿記事 by プラム » 11年前

GamePlay.exeがある場所は設定.exeと同じ段階です。
これでできるはずですが・・・

N.R

Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない

#4

投稿記事 by N.R » 11年前

カレントディレクトリ(恐らくハルルンさんの言う"段階")は実行ファイルと同じとは限らないですが

他の問題かもしれないのでまずはフルパス指定でテストしてみてはどうでしょう

アバター
プラム
記事: 164
登録日時: 11年前
住所: 東海地方

Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない

#5

投稿記事 by プラム » 11年前

フルパス指定?
C:・・・・・・
ってやってくの?

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない

#6

投稿記事 by みけCAT » 11年前

ハルルン さんが書きました:フルパス指定?
C:・・・・・・
ってやってくの?
はい。
別にDドライブ上のファイルでもいいですけどね。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
プラム
記事: 164
登録日時: 11年前
住所: 東海地方

Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない

#7

投稿記事 by プラム » 11年前

でもできません

アバター
usao
記事: 1889
登録日時: 12年前
連絡を取る:

Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない

#8

投稿記事 by usao » 11年前

とりあえず Cドライブ直下に適当にhello.txtとかいう名前のテキストファイルでも置いて

コード:

system( "C:\\hello.txt" ); //\を重ねて書くとかいう点で間違ってたりしないよね?
とかやってみてもダメでしょうか.

アバター
プラム
記事: 164
登録日時: 11年前
住所: 東海地方

Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない

#9

投稿記事 by プラム » 11年前

同じフォルダにあるので/とか¥とか¥¥とか書かの¥なくてもいいと思うのですが・・・(フルパス指定で¥¥でやったけどできなかった)

アバター
プラム
記事: 164
登録日時: 11年前
住所: 東海地方

Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない

#10

投稿記事 by プラム » 11年前

今やったら
Application "\??\C:\WINDOWS\system32\cmd.exe" found in cache
スレッド 'Win32 スレッド' (0x24) はコード 0 (0x0) で終了しました。
って出ました

N.R

Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない

#11

投稿記事 by N.R » 11年前

そんなに難しいものではないので
環境依存でなければパスが間違っているか GamePlay.exe がおかしいかとかないと思います。

パスの概念を正しく理解されていないようなのでパスが合っているという確証も持てないですね。

system の戻り値はどうなってますでしょうか

アバター
milfeulle
記事: 47
登録日時: 11年前
住所: マリーランド
連絡を取る:

Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない

#12

投稿記事 by milfeulle » 11年前

まず初めに、プログラミングをする際、慣れない場合は日本語を入力するとき以外はIMEをいわゆる「直入力モード」にして下さい。
> フルパス指定で¥¥でやったけどできなかった
が文字通り「¥¥」と入力されたように受け取られてしまいます。数字も1234567890といわゆる半角で入力しましょう。スペースも常に半角にしておきましょう。ミスが減ります。或いは、見やすいフォントがたくさんありますのでご検討下さい。「コーディング フォント」などで検索すると出てきます。

> 同じフォルダにあるので/とか¥とか¥¥とか書かの¥なくてもいいと思うのですが
これは難しい問題です。確かにほとんどの場合は同じフォルダにあれば、その実行ファイルと同じフォルダが「作業フォルダ」になります。そのため、同じフォルダにあるファイルを参照する場合は、/とか\とか書かなくても済みます。なお、ご存じとは思いますが、\\と書くのは、C言語では\をエスケープシーケンスとしているからです。詳しくは「エスケープシーケンス C言語」で検索して下さい。

Windowsではフォルダといいますが、以下で述べるような、ハードディスクなどに実在する階層の名前としてはディレクトリと言います。詳しくは「フォルダ ディレクトリ 違い」などで検索して下さい。

カレントディレクトリは、アプリケーションが変更できますし、起動時も指定できます。Windowsのコマンドプロンプトでcdというコマンドを使うとカレントディレクトリが変更できますが、この変更された状態で適当な階層にある.exeを起動すると、カレントディレクトリは変更されたままです。.exeと同じディレクトリではありません
オフトピック
(コマンドプロンプトの例) C:\test\a.exeがあったとします。
cd C:\test
とすると、カレントディレクトリはC:\testになります。ここで
a.exe
と入力すると実行でき、カレントディレクトリはC:\testです。
さて、
cd ..\
とすると親のディレクトリに移ります。このときカレントディレクトリはC:\となります。ここでa.exeとしても実行できないので、test\a.exeとしてあげることで実行できます。このときのカレントディレクトリはC:\のままです!

(ショートカットファイルを作って、作業ディレクトリを指定した例) C:\test\a.exeがあったとします。このexeファイルのショートカット「a.exeへのショートカット」を作りました。このショートカットファイルを右クリックして、プロパティから「作業フォルダー」の部分をC:\とすると、このショートカットから実行したときに、カレントディレクトリが「作業フォルダー」のパスになっています。
さて、現在のカレントディレクトリーを表示することを考えてみましょう。WindowsAPIを用いて

コード:

#include <stdio.h>
#include <Windows.h>

int main(void) {
	CHAR buffer[1024];
	GetCurrentDirectory(1024, buffer);
	printf("%s;", buffer);
	getchar();
}
と書けます。これを実行して表示されたものがカレントディレクトリのパスと言うことになります。ご確認下さい。この表示されたパスもご期待通りだったらファイル名を疑って下さい。(うまくいかなければマルチバイトモードでビルドして下さい……)

そして、systemはそのアプリケーションが終了するまで待機します。従って、systemが戻り値を返したときは、その問題のアプリケーションが正常・異常にかかわらず終了したことを意味しています。問題はそのアプリケーションにあるかもしれません。

以上をまとめると、
1. ファイルパスが間違っているかもしれないと思い、確実に合っているだろうと考えられる絶対パス(\とか入っているもの)を指定する。特に、C(やDなどの)ドライブ直下に置いて確かめる。
2. できたらカレントディレクトリが間違っている可能性を疑い、カレントディレクトリを取得・必要なら設定する。(設定はSetCurrentDirectory関数でできます。)
3. カレントディレクトリに適当なテキストファイルなど、確実に開けるものを置き、System関数で開く。(テキストファイルなど拡張子によって関連づけられたアプリケーションが起動します。終了することでメインスレッドに処理が戻ります。)
4. 3までできたらGamePlay.exeをカレントディレクトリに置き、実行してみる。これで一瞬で終了してしまうなど不具合があれば原因はGamePlay.exeにあるため、そちらをなんとかする。
ζ*'ヮ')ζプログラミングはみんなで奏でるシンフォニー

アバター
プラム
記事: 164
登録日時: 11年前
住所: 東海地方

Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない

#13

投稿記事 by プラム » 11年前

ほんとになんでなんだろうログにも何も残らずデバックしても何も残らない。
コード全体は↓(設定処理は抜いてあります)
Con.cpp

コード:

#include "main.h"

int End;

void Con(){//こんふてぃっくの略です
//略

if(End==2){ //1は反映して終了です。だから2です。

 system("GamePlay.exe");


}

}
int ConEnd(){

return End;

}

main.cpp

コード:

#include "main.h" //ここに関数など定義が書いてあります。

int WINAPI WinMain( HINSTANCE , HINSTANCE, LPSTR , int nCmdShow ){
	
ChangeWindowMode( TRUE ) ;

DxLib_Init();

SetDrawScreen( DX_SCREEN_BACK ) ;
	// ESCキーが押されるか、ウインドウが閉じられるまでループ
	while(ConEnd()==0 && ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ){

		// 裏画面の内容を表画面に反映
		ScreenFlip() ;

		// 画面をクリア
		ClearDrawScreen() ;
	
		Con();
	
	}
	
DxLib_End();       

return 0;

}
とかいう感じです。
なにかわかったら教えてください。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない

#14

投稿記事 by みけCAT » 11年前

まずインデントがおかしいですね。
あと、「//略」の部分の処理が間違っていて、Endが2でない可能性が考えられますね。
あと、「こんふてぃっく」という言葉を私もGoogle大先生も知らないのですが、どういう意味ですか?
[search=google]"こんふてぃっく"[/search]
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
プラム
記事: 164
登録日時: 11年前
住所: 東海地方

Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない

#15

投稿記事 by プラム » 11年前

ごめんなさい 余分に文字などが入ってましたね。打ち間違えです。
コンフィグです。

アバター
プラム
記事: 164
登録日時: 11年前
住所: 東海地方

Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない

#16

投稿記事 by プラム » 11年前

インデントがおかしいのは僕の書き方なのですいません。
あと略の場所は(他もかなり省略してますが)

コード:

if(MOUS(MOUSE_INPUT_LEFT)==1&&x>15&&x<80&&y>440&&y<455){ //MOUSはマウスの入力を渡す関数でxとyマウスの座標です。

End=2;


}
です。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない

#17

投稿記事 by みけCAT » 11年前

「何も残らない」とはどういうことですか?
MessageBoxなどで、system関数(を含むブロックの処理)が実行されていることは確認しましたか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
へにっくす
記事: 634
登録日時: 13年前
住所: 東京都

Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない

#18

投稿記事 by へにっくす » 11年前

ハルルン さんが書きました:今やったら
Application "\??\C:\WINDOWS\system32\cmd.exe" found in cache
スレッド 'Win32 スレッド' (0x24) はコード 0 (0x0) で終了しました。
って出ました
まさかとは思うけど、「コマンドプロンプト」って開けますか。
(スタートメニュー→アクセサリ→コマンドプロンプトとやって、「コマンドプロンプト」のタイトルをもったウィンドウが開けるかどうか)
system関数は、「コマンドプロンプト」の実体であるcmd.exeを呼び出す関数なので。
開けない(ショートカットのエラーがでるとか)のであれば、標準でついてくるはずのcmd.exeがないということなので、システムが壊れてるかもしれません。
system関数 - C言語関数辞典

あとN.Rさん(No.11)、milfeulleさん(No.12)のコメント見てますか。
無視しているように見えるのですが。
無視していないのであれば、ちゃんと返事を書いてください。
written by へにっくす

アバター
プラム
記事: 164
登録日時: 11年前
住所: 東海地方

Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない

#19

投稿記事 by プラム » 11年前

開けますよ!!!!!!!!!!!!!!!
コマンドプロント使ってるよ!!!!!!!!!!!!!!!

アバター
プラム
記事: 164
登録日時: 11年前
住所: 東海地方

Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない

#20

投稿記事 by プラム » 11年前

みけCATさん>>ちゃんと反映して実行や反映して終了の描画したところをクリックすると終了します。

アバター
へにっくす
記事: 634
登録日時: 13年前
住所: 東京都

Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない

#21

投稿記事 by へにっくす » 11年前

ハルルン さんが書きました:開けますよ!!!!!!!!!!!!!!!
コマンドプロント使ってるよ!!!!!!!!!!!!!!!
よしok

コード:

int ret = system(NULL);
として、retの値はどうなりましたか?
これで0以外が返ってくれば、環境としては問題ないです。
文字コードがUnicodeになってるとかではないですかね。ググってください。
0が返ってくる場合は、環境変数まわりを疑います。
オフトピック
しつこいですがNo.11、No.12をスルーしてるのは意図的ですか?
written by へにっくす

アバター
プラム
記事: 164
登録日時: 11年前
住所: 東海地方

Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない

#22

投稿記事 by プラム » 11年前

文字コードは
Dxの設定の時にやってます。
戻り値は0が来たけど・・・なんでロゴにもデバックにも残らないんだろう・・・
あっあとなんかコマンドプロントのようなウィンド出るようになりました!!!!!!!

アバター
プラム
記事: 164
登録日時: 11年前
住所: 東海地方

Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない

#23

投稿記事 by プラム » 11年前

あと無視しているつもりでは・・・

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない

#24

投稿記事 by みけCAT » 11年前

system関数の利用を諦め、CreateProcess関数を利用するのはどうですか?
ただし、起動したプロセスの終了を待つには別にコードを書く必要があります。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
へにっくす
記事: 634
登録日時: 13年前
住所: 東京都

Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない

#25

投稿記事 by へにっくす » 11年前

ハルルン さんが書きました:文字コードは
Dxの設定の時にやってます。
戻り値は0が来たけど・・・なんでロゴにもデバックにも残らないんだろう・・・
あっあとなんかコマンドプロントのようなウィンド出るようになりました!!!!!!!
戻り値が0?

コード:

int ret = system(NULL);
のretが0なのであれば、cmd.exeが呼び出せていないってことですけど。
環境変数はどうなってますか。

オフトピック
ハルルン さんが書きました:あと無視しているつもりでは・・・
私に言うのではなくて、No.11、No.12のレスをしてください。いい気分ではないのは確かです。
非表示エリア
この非表示エリアを表示するには、登録し、ログインする必要があります。
written by へにっくす

閉鎖

“C言語何でも質問掲示板” へ戻る