You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.5 KiB
53 lines
1.5 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: a very simple wrapper to spawn another process based upon the contents of runme.dat |
|
// |
|
//============================================================================= |
|
#include <stdio.h> |
|
#define WIN32_LEAN_AND_MEAN |
|
#include <windows.h> |
|
|
|
int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) |
|
{ |
|
// runme.dat contains the command line to run (passed directly to createprocess() ) |
|
FILE *f = fopen( "runme.dat", "rb" ); |
|
if ( !f ) |
|
return -1; |
|
|
|
char szCommand[MAX_PATH]; |
|
memset( szCommand, 0x0, sizeof(szCommand) ); |
|
fread( szCommand, sizeof(szCommand), 1, f ); |
|
fclose( f ); |
|
int iCh = 0; |
|
while ( iCh < sizeof(szCommand) && szCommand[ iCh ] && szCommand[ iCh ] != '\r' && szCommand[ iCh ] != '\n' ) |
|
{ |
|
iCh++; |
|
} |
|
szCommand[ iCh ] = ' '; |
|
szCommand[ iCh + 1 ] = 0; |
|
strncpy( &szCommand[ iCh + 1 ], lpCmdLine, sizeof(szCommand) - iCh - 1 ); |
|
szCommand[ sizeof(szCommand) - 1 ] = 0; |
|
|
|
STARTUPINFO si; |
|
PROCESS_INFORMATION pi; |
|
memset(&si, 0x0, sizeof(si)); |
|
si.cb = sizeof(si); |
|
memset(&pi, 0x0, sizeof(pi)); |
|
|
|
// run the command |
|
if(!CreateProcess(NULL, szCommand, 0, 0, FALSE, NORMAL_PRIORITY_CLASS, 0, 0,&si, &pi)) |
|
{ |
|
return -1; |
|
} |
|
|
|
// Wait until child process exits. |
|
WaitForSingleObject( pi.hProcess, INFINITE ); |
|
|
|
// Close process and thread handles. |
|
CloseHandle( pi.hProcess ); |
|
CloseHandle( pi.hThread ); |
|
|
|
return 0; |
|
} |
|
|
|
|
|
|