0

だから私は私が開始するアプリケーションを持っているという問題があります。次に、テストを通じて、オフにしてから再開する必要があります。ただし、ハードコーディングせずに実行する必要があります。

では、プロセスがどこから実行されたかを見つける方法はありますか?実行中のすべてのプロセスのリストを見つけることができますが、これが可能かどうかさえわかりません。

編集:それはWindows7OS上にあります。

4

3 に答える 3

1

QueryFullProcessImageName()は、プロセスの実行可能イメージへのパスを提供します。

#include <windows.h>
#include <iostream>

int main()
{
    char exe_path[MAX_PATH];
    DWORD exe_path_size = MAX_PATH;
    if (QueryFullProcessImageName(GetCurrentProcess(),
                                  0,
                                  exe_path,
                                  &exe_path_size))
    {
        std::cout << exe_path << "\n";
    }

    return 0;
}
于 2012-04-26T15:30:08.580 に答える
1

簡単で移植性の高い方法は、argv[0] を使用することです。必要なのは完全な.exeファイルパスを返します

于 2012-04-26T19:12:30.083 に答える
0

まず、「プロセスが実行されている場所を見つける」とはどういう意味ですか? 親のプロセスIDを意味していると思いますが、現在の作業ディレクトリ、リモート呼び出しのIPなどを意味する可能性があります...

親のプロセス ID を見つけるには、getppid()を調べます。

編集:これは、あなたが(正気のプログラマーのように)UNIXのようなマシンを使用していることを前提としています。

編集#2:あなたはWindowsを使用しているので、わかりません。

編集 #3: 実行中のプログラムへのパスを探しているので、argv[0] を使用します。int main(int argc, char* argv[]) への最初のコマンド ライン引数は、常にバイナリへのパスです。

于 2012-04-26T15:26:00.590 に答える