سؤال

لدي تطبيقي الرئيسي، من تطبيقي الرئيسي، سأتسمم وحدة نمطية أخرى (طرف ثالث) لأداء عملية صغيرة في تطبيقي الرئيسي، عندما أتصل بهذه الوحدة .. وفقا لوقت معين يقول 5 Sec.while يوضح العملية في نافذة العلامة مع بعض المعلومات مع بعض المعلومات .. لا ينتظر تطبيقي الرئيسي حتى تنتهي الوحدة النمطية المعمول بها. createProcess ولكن يبدو أنه لا يعمل ...

على سبيل المثال: تطبيقي الرئيسي هو العملية الأصل والتطبيق المسمى هو عملية الطفل .. يجب أن تكون عملية التفاف مستقلة عن عملية الطفل .. تحقق من مثالي أدناه

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


}

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

بالنظر الآن في ما ورد أعلاه إذا قمت بتشغيل البرنامج الأول ... سيظهر الإخراج في نفس نافذة الأوامر (لا ينبغي أن يكون هكذا) ... أريد التطبيق الرئيسي لإنشاء العملية ولكن لا ينبغي أن يتأثر عملية الطفل.

هل كانت مفيدة؟

المحلول

يمر CREATE_NO_WINDOW في ال dwCreationFlags معلمة من CreateProcess.

نصائح أخرى

تحدثت عن "نافذة الأوامر"، لذلك أفترض أن الطفل هو تطبيق وحدة التحكم. في هذه الحالة، يمكنك إنشاء العملية في CONOLE منفصلة وفرض اختياريا على وحدة التحكم الجديدة لتكون معلقة أو مخفية. يطلق التعليمات البرمجية التالية عملية تفسير قائمة تفسير ملف دفعي (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;
}

يبدو أنك تريد إخراج عملية الطفل لإظهار نافذة منفصلة. إذا كان الأمر كذلك، فأنت تريد الاتصال CreateProcess ونقلها CREATE_NEW_CONSOLE العلم، بدلا من استخدام exec*.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top