البرمجة

كيفية بدء عملية تنفيذ في C++

لبداية، يجب عليك استخدام دالة CreateProcess لبدء عملية التنفيذ. يمكنك استخدام الشيفرة التالية كمثال لكيفية فعل ذلك:

cpp
#include #include void startProcess() { // Get the current directory char currentDir[MAX_PATH]; GetCurrentDirectoryA(MAX_PATH, currentDir); // Build the path to the executable std::string exePath = currentDir; exePath += "\\Data\\Common\\PPI.exe"; // Start the process STARTUPINFOA si; PROCESS_INFORMATION pi; ZeroMemory(&si, sizeof(si)); si.cb = sizeof(si); ZeroMemory(&pi, sizeof(pi)); if (!CreateProcessA(NULL, (LPSTR)exePath.c_str(), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { std::cerr << "Failed to start process. Error code: " << GetLastError() << std::endl; return; } // Wait for the process to finish WaitForSingleObject(pi.hProcess, INFINITE); // Close process and thread handles CloseHandle(pi.hProcess); CloseHandle(pi.hThread); } int main() { startProcess(); return 0; }

يرجى ملاحظة أن هذا المثال يفترض أن الـ DLL الخاص بك موجود في نفس المجلد الذي يحتوي عليه ملف PPI.exe.

المزيد من المعلومات

بالتأكيد! الشيفرة السابقة تقوم بالتالي:

  1. تحديد مسار ملف الـ DLL الحالي باستخدام GetCurrentDirectoryA.
  2. بناء مسار كامل لملف التنفيذ PPI.exe باستخدام المسار الحالي للـ DLL.
  3. بدء عملية التنفيذ باستخدام CreateProcessA.
  4. انتظار انتهاء عملية التنفيذ باستخدام WaitForSingleObject.
  5. إغلاق مقابض العملية والخيط.

يُفترض أن هذا الكود يعمل بشكل صحيح إذا كانت المسارات صحيحة. ومع ذلك، يُرجى ملاحظة أن استخدام الأمر GetCurrentDirectoryA يعتمد على مكان تنفيذ الـ DLL، وإذا تم تحريك الـ DLL إلى مجلد آخر فإنه يجب تغيير المسار المستخدم لبناء مسار PPI.exe بما يتناسب مع الموقع الجديد.

زر الذهاب إلى الأعلى