获取屏保控制窗口显示模式的实现(屏保应用)
#include <scrnsave.h>
enum SCRMODE { SMNONE, SMCONFIG, SMPASSWORD, SMPREVIEW, SMSAVER };
//-----------------------------------------------------------------------------
SCRMODE GetScrMode(HWND &hWnd)
{
SCRMODE ScrMode = SMNONE;
hWnd = NULL;
TCHAR *pc = ::GetCommandLine();
if (*pc == _T('\"'))
{
pc++;
while (*pc != _T('\0') && *pc != _T('\"'))
pc++;
}
else
{
while (*pc != _T('\0') && *pc != _T(' '))
pc++;
}
if (*pc != _T('\0'))
pc++;
while (*pc == _T(' '))
pc++;
if (*pc == _T('\0'))
{
ScrMode = SMCONFIG;
hWnd = NULL;
}
else
{
if (*pc == _T('-') || *pc == _T('/'))
pc++;
if (*pc == _T('s') || *pc == _T('S'))
{
ScrMode = SMSAVER;
}
else
if (*pc == _T('p') || *pc == _T('P') ||
*pc == _T('l') || *pc == _T('L'))
{
pc++;
while (*pc == _T(' ') || *pc == _T(':'))
pc++;
ScrMode = SMPREVIEW;
hWnd = reinterpret_cast<HWND>(::_ttoi(pc));
}
else
if (*pc == _T('c') || *pc == _T('C'))
{
pc++;
while (*pc == _T(' ') || *pc == _T(':'))
pc++;
ScrMode = SMCONFIG;
hWnd = *pc == _T('\0')
? ::GetForegroundWindow()
: reinterpret_cast<HWND>(::_ttoi(pc));
}
else
if (*pc == _T('a') || *pc == _T('A'))
{
pc++;
while (*pc == _T(' ') || *pc == _T(':'))
pc++;
ScrMode = SMPASSWORD;
hWnd = reinterpret_cast<HWND>(::_ttoi(pc));
}
}
return ScrMode;
}
本文介绍了一个用于确定屏幕保护程序运行模式的函数实现。该函数通过解析命令行参数来判断当前是否处于配置模式、预览模式、密码模式或是启动屏幕保护程序模式,并据此返回相应的枚举值。
&spm=1001.2101.3001.5002&articleId=8209619&d=1&t=3&u=8b3d006f4208488db10a558ea9ccac86)
1767

被折叠的 条评论
为什么被折叠?



