WEB开发网
开发学院软件开发VC 防止用户进行正常的GUI 操作 阅读

防止用户进行正常的GUI 操作

 2006-07-23 11:30:33 来源:WEB开发网   
核心提示: 在实际的范例程序中还包含TRACE诊断代码,这些代码有助于你研究程序执行的过程细节,防止用户进行正常的GUI 操作(3),利用上面的代码行,用户便不能移动窗口以及调整窗口大小了,图四你可能认为这下万事大吉了,但是还有一个漏洞,但事情真是这样吗?你知不知道Windows应用程序中有多少种方法

在实际的范例程序中还包含TRACE诊断代码,这些代码有助于你研究程序执行的过程细节。利用上面的代码行。用户便不能移动窗口以及调整窗口大小了。

但事情真是这样吗?你知不知道Windows应用程序中有多少种方法可以移动窗口和调整窗口大小?如标题框中的最大/最小按钮以及系统菜单中的“移动”、“大小”等命令(见图三),不要跟我说你搞忘了。

图三

所幸的是搞定它们很容易。屏蔽掉标题框中的最大/最小按钮,方法是在PreCreateWindow函数中调整窗口风格:

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
// 在标题框中去掉最大化/最小化按钮
cs.style &= ~(WS_MINIMIZEBOX|WS_MAXIMIZEBOX);
return CFrameWnd::PreCreateWindow(cs);
}

要从系统菜单中去掉那几个不想要的命令,必须在CMainFrame ::OnCreate函数中加上以下代码:

static UINT BadCommands[] = { 
SC_SIZE, SC_MOVE,
SC_MINIMIZE, SC_MAXIMIZE, SC_RESTORE, 0
};
CMenu *pSysMenu = GetSystemMenu(FALSE);
for (int i=0; BadCommands[i]; i++) {
pSysMenu->RemoveMenu(BadCommands[i], MF_BYCOMMAND);
}

现在系统菜单变成了如下图四的样子,

图四

你可能认为这下万事大吉了,但是还有一个漏洞,想一想还有哪里可以让用户移动窗口或调整窗口的大小?记住Windows中是有很多猫腻的!。

上一页  1 2 3 4  下一页

Tags:防止 用户 进行

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接