关于在四川省计算机一级考试系统中使用计算器的研究

      鉴于计算机一级考试临近,今天就谈谈一级考试系统这东东吧。"进制转换"及其相关内容是每一次一级考试必考的内容,对于这种题,我们都会习惯性的打开Windows自带的计算器(calc.exe)来解决,但是省教育局的童鞋们不会傻到就让你打开计算器在那里点吧,所以呢,他们必定在一级考试系统中对计算器这个工具进行了相应的限制。

      所谓知己知彼,百战不殆嘛,下面我们就来对传说中的一级考试系统进行小小的分析吧(之所以说是小小的分析,是因为我们这里只分析窗口属性,没进行反汇编及代码分析)。

1.这个一级系统是用C#写的(一看到C#我就笑了,看到C#写的桌面程序,我笑的更放荡了),下面两张图就是证据。


图1 从Spy++的Class一栏可以看出这是典型的C#窗体

图2 用PEID分析主程序,C#这两个YD的字眼出现了(此图是被"红色特卫队"汉化过的PEID)

2.我们登录一级考试系统后,再运行计算器,会没有任何效果,其实呢,这个时候计算器已经运行起来了,那为什么我们看不见呢?因为被一级考试系统的主窗口"挡住了",聪明的人会试着用"ALT+TAB"这个组合键来切换窗口,但是仍然没有效果,好像一级考试系统的主窗体永远都在最前面,对!它确实永远都在最前面,因为它的窗体是具有TopMost属性的,何为TopMost?说简单些就是窗口置顶,举个例子:我们在看视频的时候,很多播放器上都有一个类似于图钉的按钮,点一下,这个窗口就永远在最前面了,这个时候,即使我们干其它的事情,也不会影响到我们看视频。一级考试系统的主窗体就是具有TopMost属性的,而且是全屏窗体,所以呢,其它程序的窗体都被它挡在后面了!

3.我们如何解决这个问题呢?这也是这篇文章的重点了,要解决这个问题,顺利使用计算器程序,有下面两种方案:

(1)去掉一级考试系统主窗体的TopMost属性

(2)给计算器程序的窗体加上TopMost属性,微软规定:两个具有TopMost属性的窗体是可以互相切换的,那么这个 时候"ALT+TAB"这个组合键就可以派上用场了

      要操作一个窗体,我们首先要得到这个窗体的窗口句柄(Windows系统中窗体的唯一标识符),因为计算器程序是C++写的,属于本地代码,得到它的窗口句柄比较简单,而一级考试系统是用C#写的,属于托管代码,得到它的窗口句柄比较复杂,所以这里我们选用第二种方案。

那么,是时候上代码了:

 


注:本程序在Visual C++ 6.0 + Windows XP Sp3下编译调试通过,请不要试图用C#和Java编译本程序,那样必定会出错,请使用C++编译器进行编译

 

运行过后效果图如下:

 

图3 加上了TopMost属性的计算器窗口,即使已经失去焦点,但它仍然在其它窗口的前面

声明:本文旨在介绍Windows窗体的操作,无其它意义,如果本文给你带来了不便,请联系作者删除,作者不承担任何法律及连带责任!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值