解決していないのに締め切られてしまったようなので再度質問します
前はこちらです https://oshiete.goo.ne.jp/qa/9419545.html
windows7でいくつかのプログラムを実行しているときにあるプログラムを実行するとたまに
{
問題が発生したため、プログラムが正しく動作しなくなりました。
プログラムは閉じられ、解決策がある場合はWindowsから通知されます。
}
と表示されます
これが表示されると処理がそこで止まってしまい次のプログラムが実行されないためどうしたらこれが表示されないようにできますか
それかこれが表示されても処理を続けるにはどうしたらよいでしょうか
例えば以下のプログラムを実行した時
#include <cstdio>
#include <process.h>
int main(int argc, char** argv)
{
int ret;
ret = system("test.exe 1 2 3");
printf("%d\n", ret);
ret = system("test.exe 4 5 6");
printf("%d\n", ret);
ret = system("test.exe 7 8 9");
printf("%d\n", ret);
return 0;
}
system("test.exe 1 2 3");でエラーが起きると、エラー表示されたダイアログを閉じないと以降の処理が実行されません
これをダイアログを出さないで処理するか自動的に処理を継続する方法はありますか
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
こんにちは。
system関数ではなく、Win32APIのCreateProcess関数を使ってみてはどうでしょうか。
http://www.ne.jp/asahi/hishidama/home/tech/c/win …
CreateProcessで起動後、test.exeのプロセスが起動中である事を監視するループを作成し、
プロセスが終了したら次の起動を行う構造にしておきます。
監視ループ中では以下案の処理を行い、test.exeを終了させます。
<案①>
test.exeの起動推定時間を超過したら、
Win32APIのTerminateProcess関数を実行してtest.exeを強制終了する。
(一番実現性が高い方法と考えられます)
<案②>
Win32APIのFindWindow関数を用いてエラーダイアログの出現を監視し、出現したら、
TerminateProcess関数を実行してtest.exeを強制終了する。
(これはちょっと上手く行かないかもしれません)
※別の方法として
昔あったチューチューマウスの様なフリーソフトをインストールし、
エラーダイアログが出現したらそのボタンをクリックする設定にして実行しておく。
(これが可能であればプログラムの改訂が要らず、一番楽だと思います。)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- C言語・C++・C# 未解決の外部シンボル _printfが関数_mainで参照されました 1 2022/09/18 15:28
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「読み込み違反」が起きたとき...
-
Visual Studio 「AnyCpu」について
-
C#VB、exeに埋め込んだexeの実行
-
excel vbaから実行するexe実行...
-
外部exe呼び出しの方法 ShellEx...
-
Delphi 閉じてないウインドウを...
-
Windows PowerShellでC言語を実...
-
JP1/File Transmission Server/...
-
ACCESSランタイムでエラー
-
実行ファイル(.exe)が別のPC...
-
mscorlib.dllの初回例外について
-
VB6 EXEとプログラムの違い
-
VBAでコマンドプロンプトを呼び...
-
Format 関数のバグ?
-
C言語に詳しい人に質問です。
-
C++初心者です。 debug asserti...
-
エスケープ・シーケンスによる...
-
shell関数には二重引用符を渡せ...
-
VBにてDLLをデバックする方法。
-
vba 時間の引き算 例えば 15:00...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Visual Studio 「AnyCpu」について
-
「読み込み違反」が起きたとき...
-
Windows PowerShellでC言語を実...
-
excel vbaから実行するexe実行...
-
C++初心者です。 debug asserti...
-
実行ファイル(.exe)が別のPC...
-
ActiveDirectoryから値を取得
-
VB6.0 exe作成時に実行時エラー...
-
外部exe呼び出しの方法 ShellEx...
-
Format 関数のバグ?
-
ActiveX → VB を起動するとCre...
-
androidで.exeを実行できますか?
-
C#VB、exeに埋め込んだexeの実行
-
system関数(Windows)の戻り値!!
-
Eclipse CDT MinGWによるC言語
-
Pythonのコードをexe化
-
VBAでコマンドプロンプトを呼び...
-
VisualStudioでC#が実行できない
-
VB.NetのWinsockについて
-
mscorlib.dllの初回例外について
おすすめ情報
> 自身のプログラムが呼び出した外部関数等がエラー終了して来ても処理を続ければよいだけです。
エラーが発生してもダイアログが表示されると制御が戻ってこないので、処理が続けられません。
> 自身のプログラムが呼び出した外部関数等の先で独自にエラーダイアログを表示している場合、その外部関数等の引数などに「ダイアログ表示をしない」指定が無い限り抑止出来ません。
質問にある通り独自のエラーダイアログではなく勝手に表示されるダイアログです。
CreateProcessをつかってみましたがエラーダイアログは表示されるようでした
処理は並行して行われるようなのでそれを利用できるか試してみます
最後の案については他に手段がない場合に検討してみようと思います、ありがとうございます
Windowsの設定を変更することで解決しました。