I´m not shure what exactly your Problem is.
If you want to start other Processes from your own GUI and that should depend on Win32-API (only), here is a skeletton:
1. First create an Win32 App with the Wizard
2. Create some PushButtons
enum WinButtons {IDC_WIN1=1, IDC_WIN2, IDC_WIN3, IDC_WIN4};
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
static HWND hwndButton[2] ;
static int cxChar, cyChar ;
switch (message){
case WM_CREATE :
cxChar = LOWORD (GetDialogBaseUnits ()) ;
cyChar = HIWORD (GetDialogBaseUnits ()) ;
hwndButton[0] = CreateWindow ( TEXT("Button"), TEXT("Notepad"),
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
cxChar, cyChar, 20 * cxChar, 7 * cyChar / 4,
hWnd, (HMENU)IDC_WIN1,
((LPCREATESTRUCT) lParam)->hInstance, NULL) ;
hwndButton[1] = CreateWindow ( TEXT("Button"), TEXT("CMD"),
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
cxChar, cyChar*3, 20 * cxChar, 7 * cyChar / 4,
hWnd, (HMENU)IDC_WIN2,
((LPCREATESTRUCT) lParam)->hInstance, NULL) ;
break;
Then wait for the Button and execute something with CreateProcess
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
switch (wmId)
{
case IDC_WIN1:
CreateMyProzess(TEXT("c:\\windows\\notepad.exe"));
break;
case IDC_WIN2:
CreateMyProzess(TEXT("c:\\windows\\system32\\cmd.exe"));
break;
For more look into Win32-API Book from Charles Petzold