WinMain支持命令行参数的代码

WinMain支持命令行参数的代码

 

#include  " stdafx.h "
#include 
< STRING.h >
#include 
< STDIO.H >
int  APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     
int        nCmdShow)
{
     
//  TODO: Place code here.
     char   * pCmdLine  =  GetCommandLine();
    
char   sep[]  =   "   " ;
    
char   * token  =  NULL;
    
char   argv[ 10 ][ 10 =  { 0 };
    
int       argc  =   0 ;
    
    token 
=  strtok(pCmdLine,sep);
    
while  (token  !=  NULL)
    {
        strcpy(argv[argc
++ ],token);
        OutputDebugString(token);
        token 
=  strtok(NULL,sep);
    }
    
return   0 ;
}


WinMain支持命令行参数的代码

#include  < windows.h >
#include 
< stdio.h >

int  WINAPI WinMain(HINSTANCE hInstance, HINSTANCE prevInstance, LPSTR lpCmdLine,  int  nShowCmd)
{
        
// for the command line;
        
        
int  argc  =   0 ;
        
        LPWSTR 
* lpszArgv  =  NULL;

        
        LPWSTR szCmdLine 
= (LPWSTR)::GetCommandLineW();  // 获取命令行参数;
        
        lpszArgv 
=  ::CommandLineToArgvW(( const  unsigned  short   * )szCmdLine,  & argc);  // 拆分命令行参数字符串;
        

        
        
if  (lpszArgv  ==  NULL)
        {
        
                MessageBox(NULL, 
" Unable to parse command line " " Error " , MB_OK);
                
return   10 ;
        }
        
        
for ( int  i  =   0 ; i  <  argc; i ++ )

        {
                
char    str[MAX_PATH];
                memset(str,
0 ,MAX_PATH);
        
// 将LPWSTR转换为char *:
        WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK,lpszArgv[i],  - 1 ,str, 200 ,NULL,NULL);
        MessageBox(NULL,str, 
" Arglist contents " , MB_OK);
            
        }
        
        LocalFree(lpszArgv);
        
return   0 ;
}


一个简单的 方法用stdlib.h中的__argc,__argv

#include  < windows.h >
#include 
< stdlib.h >

int  WINAPI WinMain(HINSTANCE hInstance, HINSTANCE prevInstance, LPSTR lpCmdLine,  int  nShowCmd)
{
        
// for the command line;
         for ( int  i  =   0 ; i  < __argc; i ++ )

        {
                
char    str[MAX_PATH];
                
char   *  str1;
                memset(str,
0 ,MAX_PATH);
                
// 下面是获取命令行参数值的典型用法:
            lstrcpy(str,__argv[i]);
                str1
= strdup(__argv[i]);
            
// MessageBox(NULL,str, "Arglist contents", MB_OK);
                MessageBox(NULL,str1,  " Arglist contents " , MB_OK);
            
        }
        
return   0 ;
}





 

你可能感兴趣的:(WinMain支持命令行参数的代码)