在DOS 系统中我们常使用命令行参数来实现用户对程序功能的控制, 如: dir /w 列举当前目录下的所有文件及文件夹, format c: /q 对C盘进行快速格式化等;  而在Windos平台中它一样非常有用,正如大家常操作的,双击一个关联文件test.doc或在开始->运行中输入notepad.exe c:\test.txt 都会启动对应的软件并打开所操作的文件,事实上,后面的实现无不与commandline 有关;  因此今天我们就来演示它的实现过程:


#define CONSOLE_PARAM_MAIN

#ifndef CONSOLE_PARAM_MAIN

    void main()
    {
        TCHAR szCmdLineInfo[MAX_PATH * 3]    = {0};
        _stprintf(szCmdLineInfo, _T("command line: \n %s"), GetCommandLine());
        MessageBox(GetDesktopWindow(), szCmdLineInfo, _T("I Come from < void main() > function"), MB_OK);
    }

#else

    void main(int argc, char* argv[])
    {
        TCHAR szTmp[MAX_PATH]                = {0};
        TCHAR szCmdLineInfo[MAX_PATH * 3]    = {0};

        _tcscpy(szCmdLineInfo, _T("command line: "));
        for (int ii = 0; ii < argc; ii++)
        {
    #ifdef _UNICODE
            TCHAR szBuf[MAX_PATH];
            mbstowcs(szBuf, argv[ii], MAX_PATH);
            _stprintf(szTmp, _T("\n%d: %s "), ii + 1, szBuf);
    #else
            _stprintf(szTmp, _T("\n%d: %s "), ii + 1, argv[ii]);
    #endif
            _tcscat(szCmdLineInfo, szTmp);
        }

        MessageBox(GetDesktopWindow(), szCmdLineInfo,  _T("I Come from < void main(int, char*) > function"), MB_OK);

        return;
    }
#endif

BOOL WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPreInstance, LPTSTR lpszCmdLine, int nShowCmd)
{
    TCHAR szCmdLineInfo[MAX_PATH * 3];
    if (NULL != lpszCmdLine && NULL != *lpszCmdLine)
    {
        _stprintf(szCmdLineInfo, _T("command line:  [ %s ]"), lpszCmdLine);
    } else {
        _tcscpy(szCmdLineInfo, _T("hav't set the command line!"));
    }

    MessageBox(GetDesktopWindow(), szCmdLineInfo,  _T("I Come from < BOOL _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int) > function"), MB_OK);

    //==: if this cmdline is exe file path, will startup it
    if (NULL != lpszCmdLine && NULL != *lpszCmdLine && NULL != _tcsstr(lpszCmdLine, _T(".exe")))
    {
        ShellExecute(NULL, _T("open"), lpszCmdLine, NULL, NULL, SW_SHOWNORMAL);
    }

    return TRUE;
}

相关文章:

  • 2021-08-05
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-12
  • 2022-03-03
  • 2022-02-21
猜你喜欢
  • 2021-10-27
  • 2021-10-10
  • 2021-12-28
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案