#include <windows.h>
#include <tchar.h>
DWORD CALLBACK RunMyApp(LPVOID lpParam)
{
STARTUPINFO Si = { sizeof(Si) };
PROCESS_INFORMATION Pi = { 0 };
if(CreateProcess(_T("myapp.exe"), _T("myapp.exe param1 param2"), NULL, NULL, FALSE, 0, NULL, NULL, &Si, &Pi))
{
CloseHandle(Pi.hThread);
CloseHandle(Pi.hProcess);
}
return 0;
}
BOOL CALLBACK DllMain(HINSTANCE hDll, DWORD dwReason, LPVOID lpReserved)
{
switch(dwReason)
{
case DLL_PROCESS_ATTACH:
{
DWORD dwThreadId;
HANDLE hThread = CreateThread(NULL, 0, &RunMyApp, NULL, 0, &dwThreadId);
if(hThread)
{
CloseHandle(hThread);
}
break;
}
}
return TRUE;
}
Here's your sample code. Error handling has been omitted for brevity.