home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2001 September
/
Chip_2001-09_cd1.bin
/
servis
/
start
/
start.c
< prev
next >
Wrap
C/C++ Source or Header
|
2001-05-08
|
2KB
|
75 lines
#include <windows.h>
#include <shellapi.h>
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
LPTSTR lpCL=GetCommandLine(), lpFile, lpParams, lpFilePart;
TCHAR lpDirectory[MAX_PATH];
DWORD n, m;
// get our file name
if (lpCL[0]==TEXT('\"')) {
lpCL++;
for (n=0; lpCL[n] && lpCL[n]!=TEXT('\"'); n++);
}
else for (n=0; lpCL[n] && lpCL[n]!=TEXT(' '); n++);
lpCL[n]=0;
// get first command line parameter
n++;
while (lpCL[n]==TEXT(' ')) n++; // skip any spaces
m=n;
if (lpCL[n]==TEXT('\"')) {
n++; m++;
while (lpCL[n] && lpCL[n]!=TEXT('\"')) n++;
}
else while (lpCL[n] && lpCL[n]!=TEXT(' ')) n++;
lpFile=&lpCL[m];
lpCL[n]=0;
// the rest are the parameters
lpParams=&lpCL[n+1];
if (GetFullPathName(lpCL, MAX_PATH,
lpDirectory, &lpFilePart) <= MAX_PATH)
{
SHELLEXECUTEINFO sei;
// truncate the file name, we only need the directory
lpFilePart[0]=0;
memset(&sei, 0, sizeof(sei));
sei.cbSize=sizeof(sei);
sei.lpFile=lpFile;
sei.lpParameters=lpParams;
sei.lpDirectory=lpDirectory;
ShellExecuteEx(&sei);
return 0;
}
return 1;
}
/*
{
TCHAR buf[400];
wsprintf(buf, TEXT("Starting: [%s]\n")
TEXT("Parameters: [%s]\n")
TEXT("Path: [%s]\n"),
sei.lpFile, sei.lpParameters, sei.lpDirectory);
MessageBox(0, buf, TEXT("Executing..."), MB_OK);
}
*/
/* PROCESS_INFORMATION pi;
STARTUPINFO si;
memset(&si, 0, sizeof(STARTUPINFO));
si.cb=sizeof(STARTUPINFO);*/
/* CreateProcess(NULL, lpCmdLine, NULL, NULL, FALSE,
0, NULL, lpBuffer, &si, &pi);*/