扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:佚名 来源:blog 2007年10月16日
关键字: Visual C++ 编写 屏幕保护程序
//用enum定义五种调用方式: enum SaverMode { sm_config, sm_preview, sm_full, sm_test, sm_passwordchange }; //命令行过滤函数,命令行获得函数是用API GetCommandLine( )。 SaverMode ParseCommandLine( TCHAR* pstrCommandLine ) { g_hWndParent = NULL; //全局变量(global varibale) 在头函数或主文件开始处定义。 // 跳过长文件名中的路径和空格。 if (*pstrCommandLine == TEXT('\"')) { pstrCommandLine++; while (*pstrCommandLine != TEXT('\0') && *pstrCommandLine != TEXT('\"')) pstrCommandLine++; If( *pstrCommandLine == TEXT('\"') ) pstrCommandLine++; } else { while (*pstrCommandLine != TEXT('\0') && *pstrCommandLine != TEXT(' ')) pstrCommandLine++; if( *pstrCommandLine == TEXT(' ') ) pstrCommandLine++; } // 跳过"/" 或 "-" while ( *pstrCommandLine != TEXT('\0') && *pstrCommandLine != TEXT('/') && *pstrCommandLine != TEXT('-') ) pstrCommandLine++; // 如果没有任何参数,为设置模式。 if ( *pstrCommandLine == TEXT('\0') ) return sm_config; // 如果有参数,查看参数内容。 switch ( *(++pstrCommandLine) ) { case 'c': case 'C': pstrCommandLine++; while ( *pstrCommandLine && !isdigit(*pstrCommandLine) ) pstrCommandLine++; if ( isdigit(*pstrCommandLine) ) { #ifdef _WIN64 //考虑64位编译情况。 CHAR strCommandLine[2048]; DXUtil_ConvertGenericStringToAnsiCb( strCommandLine, pstrCommandLine, sizeof(strCommandLine)); //该函数仅在64位编译情况下使用。 g_hWndParent = (HWND)(_atoi64(strCommandLine)); #else g_hWndParent = (HWND)LongToHandle(_ttol(pstrCommandLine)); //数字串变为 /Window句柄 #endif } else { g_hWndParent = NULL; } return sm_config; case 't': case 'T': return sm_test; case 'p': case 'P': //预览模式,后面有Window句柄,为十进制数字 pstrCommandLine++; while ( *pstrCommandLine && !isdigit(*pstrCommandLine) ) pstrCommandLine++; if ( isdigit(*pstrCommandLine) ) { #ifdef _WIN64 CHAR strCommandLine[2048]; DXUtil_ConvertGenericStringToAnsiCb(strCommandLine, pstrCommandLine, sizeof(strCommandLine)); g_hWndParent = (HWND)(_atoi64(strCommandLine)); #else g_hWndParent = (HWND)LongToHandle(_ttol(pstrCommandLine)); #endif } return sm_preview; case 'a': case 'A': //密码设置模式,后面有Window句柄,为十进制数字 pstrCommandLine++; while ( *pstrCommandLine && !isdigit(*pstrCommandLine) ) pstrCommandLine++; if ( isdigit(*pstrCommandLine) ) { #ifdef _WIN64 CHAR strCommandLine[2048]; DXUtil_ConvertGenericStringToAnsiCb(strCommandLine, pstrCommandLine, sizeof(strCommandLine)); g_hWndParent = (HWND)(_atoi64(strCommandLine)); #else g_hWndParent = (HWND)LongToHandle(_ttol(pstrCommandLine)); #endif } return sm_passwordchange; default: //其他选项,屏保实际运行模式(通常/s) return sm_full; } } /////////////////////// |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者