لبداية، يجب عليك استخدام دالة 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.
المزيد من المعلومات
بالتأكيد! الشيفرة السابقة تقوم بالتالي:
- تحديد مسار ملف الـ DLL الحالي باستخدام
GetCurrentDirectoryA
. - بناء مسار كامل لملف التنفيذ
PPI.exe
باستخدام المسار الحالي للـ DLL. - بدء عملية التنفيذ باستخدام
CreateProcessA
. - انتظار انتهاء عملية التنفيذ باستخدام
WaitForSingleObject
. - إغلاق مقابض العملية والخيط.
يُفترض أن هذا الكود يعمل بشكل صحيح إذا كانت المسارات صحيحة. ومع ذلك، يُرجى ملاحظة أن استخدام الأمر GetCurrentDirectoryA
يعتمد على مكان تنفيذ الـ DLL، وإذا تم تحريك الـ DLL إلى مجلد آخر فإنه يجب تغيير المسار المستخدم لبناء مسار PPI.exe
بما يتناسب مع الموقع الجديد.
الوسوم
c++ CreateProcess DLL