home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 September / Chip_2001-09_cd1.bin / servis / start / start.c < prev    next >
C/C++ Source or Header  |  2001-05-08  |  2KB  |  75 lines

  1. #include <windows.h>
  2. #include <shellapi.h>
  3.  
  4. int APIENTRY WinMain(HINSTANCE hInstance,
  5.                      HINSTANCE hPrevInstance,
  6.                      LPSTR     lpCmdLine,
  7.                      int       nCmdShow)
  8. {
  9.     LPTSTR lpCL=GetCommandLine(), lpFile, lpParams, lpFilePart;
  10.     TCHAR lpDirectory[MAX_PATH];
  11.     DWORD n, m;
  12.  
  13.     // get our file name
  14.     if (lpCL[0]==TEXT('\"')) {
  15.         lpCL++;
  16.         for (n=0; lpCL[n] && lpCL[n]!=TEXT('\"'); n++);
  17.     } 
  18.     else for (n=0; lpCL[n] && lpCL[n]!=TEXT(' '); n++);
  19.     lpCL[n]=0;
  20.  
  21.     // get first command line parameter
  22.     n++;
  23.     while (lpCL[n]==TEXT(' ')) n++; // skip any spaces
  24.     m=n;
  25.     if (lpCL[n]==TEXT('\"')) {
  26.         n++; m++;
  27.         while (lpCL[n] && lpCL[n]!=TEXT('\"')) n++;
  28.     } 
  29.     else while (lpCL[n] && lpCL[n]!=TEXT(' ')) n++;
  30.     lpFile=&lpCL[m];
  31.     lpCL[n]=0;
  32.  
  33.     // the rest are the parameters
  34.     lpParams=&lpCL[n+1];
  35.  
  36.     if (GetFullPathName(lpCL, MAX_PATH, 
  37.         lpDirectory, &lpFilePart) <= MAX_PATH) 
  38.     {
  39.         SHELLEXECUTEINFO sei;
  40.  
  41.         // truncate the file name, we only need the directory
  42.         lpFilePart[0]=0; 
  43.  
  44.         memset(&sei, 0, sizeof(sei));
  45.         sei.cbSize=sizeof(sei);
  46.         sei.lpFile=lpFile;
  47.         sei.lpParameters=lpParams;
  48.         sei.lpDirectory=lpDirectory;
  49.         
  50.         ShellExecuteEx(&sei);
  51.         return 0;
  52.     }
  53.     return 1;
  54. }
  55.  
  56. /*
  57.         {
  58.         TCHAR buf[400];
  59.         wsprintf(buf, TEXT("Starting: [%s]\n")
  60.             TEXT("Parameters: [%s]\n")
  61.             TEXT("Path: [%s]\n"), 
  62.             sei.lpFile, sei.lpParameters, sei.lpDirectory);
  63.         MessageBox(0, buf, TEXT("Executing..."), MB_OK);
  64.         }
  65.  
  66. */        
  67. /*        PROCESS_INFORMATION pi;
  68.         STARTUPINFO si;
  69.  
  70.         memset(&si, 0, sizeof(STARTUPINFO));
  71.         si.cb=sizeof(STARTUPINFO);*/
  72. /*        CreateProcess(NULL, lpCmdLine, NULL, NULL, FALSE,
  73.             0, NULL, lpBuffer, &si, &pi);*/
  74.  
  75.