2

私はメインアプリケーションを持っています。メインアプリケーションから別のモジュール(サードパーティ)を呼び出して、メインアプリケーションで小さな操作を実行します。そのモジュールを呼び出すと、処理中に特定の時間、たとえば5秒間処理されます。コマンドウィンドウにいくつかの情報とともにプロセスが表示されます。これで、メインアプリケーションは、呼び出されたモジュールがプロセスを終了するまで待機します。今、私の質問は、プロセスを中断せずにこのコマンドウィンドウを非表示にする方法です。 createprocessですが、機能しないようです...

例:私のメインアプリケーションは親プロセスであり、呼び出されたアプリケーションは子プロセスです。親プロセスは子プロセスから独立している必要があります。以下の私の例を確認してください。

int main()
{
  execl("c:\\users\\rakesh\\Desktop\\calledapplication.exe","c:\\users\\rakesh\\Desktop    \\calledapplication.exe",0);


}

code in calledapplication
int main
{
  printf("Rakesh");
}

上記を考慮して、最初のプログラムを実行すると...出力は同じコマンドウィンドウに表示されます(そのようにすべきではありません)...メインアプリケーションにプロセスを作成させたいのですが、子プロセスの影響を受けないようにする必要があります。

4

3 に答える 3

4

CREATE_NO_WINDOWdwCreationFlagsパラメータを渡しますCreateProcess

于 2010-03-10T05:08:06.940 に答える
1

あなたは「コマンドウィンドウ」について話していたので、子はコンソールアプリケーションだと思います。その場合、別のコノールでプロセスを作成し、オプションで新しいコンソールを強制的にアイコン化または非表示にすることができます。次のコードは、バッチファイル(mytest.bat)を解釈する子プロセスを起動します。お役に立てば幸いです。よろしく。

#include <windows.h>
#include <stdio.h>

int main(int argc, char **argv)
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
BOOL rv = FALSE;
WCHAR cmdline[] = TEXT("cmd.exe /c mytest.bat");

    memset(&si,0,sizeof(si));
    si.cb = sizeof(si);
// Add this if you want to hide or minimize the console
    si.dwFlags = STARTF_USESHOWWINDOW;
    si.wShowWindow = SW_HIDE; //or SW_MINIMIZE
///////////////////////////////////////////////////////
    memset(&pi,0,sizeof(pi));
    rv = CreateProcess(NULL, cmdline, NULL, NULL,
                           FALSE, CREATE_NEW_CONSOLE,
                           NULL, NULL, &si, &pi);
    if (rv) {
        WaitForSingleObject(pi.hProcess, INFINITE);
                printf("Done! :)\n");
    }
        else {
                printf("Failed :(\n");

    }

        return rv ? 0 : 1;
}
于 2010-03-10T09:31:39.387 に答える
0

子プロセスの出力を別のウィンドウに表示したいようです。その場合は、を使用するのではなく、フラグを呼び出しCreateProcessて渡す必要があります。CREATE_NEW_CONSOLEexec*

于 2010-03-10T06:38:08.240 に答える