2011-08-01 6 views
0

これはデバッグを目的としたもので、MSVC(2008)vsのMSVCで動作しているときにC++コンソールアプリケーションを少し動かす必要があります。MSVCの下で[コンソール]アプリケーションが実行されていることを検出する簡単な方法

msvcで動作することを検出する簡単な方法はありますか?デバッガの下で実行されているとき

おかげ

+1

デバッグ時の動作が変更されるアプリケーションは...ええと...本当にデバッグは難しいです。これは良いアイデアですか? –

+0

@Bo:[それは意図かもしれません。](http://en.wikipedia.org/wiki/Debugging#Anti-debugging) –

+0

右、YMMV。私は、テスト時には動作するが、プロダクションでは動作しない社内アプリケーションでは、ひどい経験があります。 :-( –

答えて

2

IsDebuggerPresent APIを使用してデバッグ中であるかどうかは簡単にわかります。

http://msdn.microsoft.com/en-us/library/ms680345(v=vs.85).aspx

次に、あなたは、Visual Studioのウィンドウが存在するかどうかを確認するためのFindWindowを行うことができ...

それともベンあなたはProcess32FirstとProcess32Nextが得るtlhelp32.h機能を使用しているプロセスを列挙することができると言いましたようにアプリケーションの親プロセス(PID)を使用してGetModuleFileNameExを使用して プロセス名をVisual Studioの実行可能ファイルと同じにチェック...

+0

偽陽性の可能性がある「FindWindow」でゲームするのではなく、親プロセスをチェックするのはなぜですか? –

+0

より良いアイデアを投稿します。 – opc0de

+0

デバッグを開始すると親プロセスはMSVCになりません – MSalters

関連する問題