• 收藏
  • 加入书签
添加成功
收藏成功
分享

防止windows熄屏的vc代码的实现及其在机房管理中的应用

李静   
新教育论坛
2018年32期

摘要:本文讨论了在机房管理上存在的一个矛盾问题,就是机房熄屏节能和有些特殊情况下不让电脑熄屏的问题。比如在一些考试过程中就不允许电脑熄屏,以免影响考试正常进行,干扰考生答题。为了找到一种简单的方法来解决这个问题我们利用vc编写了一段代码,在需要的时候远程让计算机执行,这样可以实现不熄屏的目的,达到考试时不熄屏的需求,从而保证考试的正常进行,而其它时候就不需要执行这样的程序,当学生下机不用电脑时可以让电脑自动进入节能状态。经实践检验,这段代码在管理机房时非常方便,解决了两种需求之间的矛盾。

关键词:机房管理;熄屏;计算机休眠;vc

1.前言

目前大部分机房和计算机都采用集中管理方式,而且利用率都很高,不仅仅用于上课做实验还要用于各种考试和培训,在这些应用中,有的不能熄屏,比如计算机考试,在考生进场的时候要按计算机屏幕的信息进行对号入座,如果熄屏了就没办法找到自己的座位。还有一些考试,考试过程中不需要动鼠标键盘,这样考生答题进也会自动熄屏,正在进行的考试就会中止,影响比较大,这类考试有英语cet4,6级口语考试,普通话考试等。在这些特殊情况下不能熄屏外,其它时候又要求学生离开后没关机时能自动熄屏以达到节能的目的。因此这样的矛盾给机房管理者造成了烦恼,为了解决这样的问题我们通过研究发现,如果能在计算机上执行程序代码模拟键盘的动作定时进行按键盘操作是可以防止电脑自动熄屏的,但是在某些情况下,比如电脑被锁屏和屏蔽了热键后就算是用代码模拟键盘操作也不行,还必须先弹出一个顶层窗口,在窗口上再进行按键操作才可以防止电脑熄屏,经过试验,最终给出一个方案,在需要时远程执行这段代码就可以防止电脑休眠了。

2.防止电脑自动休眠熄屏的实现原理和代码

很多机房管理人员防止电脑进入休息状态是在电脑端的电源管理处设置为永不休眠,但是这种管理方式不利于节能,我们需要一种方式,在不能休眠熄屏时才不休眠,其它时候正常休眠。我们利用vc编写了一段程序,执行后让电脑定时模拟键盘按键的行为,这样就可以防止电脑进入休眠状态。

具体实现原理如下:

1)首先产生一个小窗口

2)窗口生成后,激活此窗口并顶层显示,然后两下shift键

3)再将此窗口关闭

具体操作步骤和代码:

1)先创建一个CDialog窗口类,并创建一个小窗口,把此窗口的大小设置为2*2,这样的目的是足够小,并将窗口弹出时显示在左上角,不影响各种应用的进行。

主要代码如下:

SetWindowPos(&wndTopMost,0,0,2,2,SWP_SHOWWINDOW);//设置显示大小和位置

SetForegroundWindow();//指定窗口的线程设置到前台,并且激活该窗口,键盘输入转向该窗口。

extern Dlg *ptr;//定义窗口类指针

ptr=this;//获取本窗口指针

2)检测窗口是否已经构筑成功,如果不成功就等待

while(ptr==NULL)

Sleep(200);

while(!ptr->IsWindowVisible())

{

Sleep(200);

}

3)执行按键模拟操作,这里模拟按两次shift键。

keybd_event( 0x10,

0x45,

KEYEVENTF_EXTENDEDKEY | 0 ,

0

);

keybd_event( 0x10,

0x45,

KEYEVENTF_EXTENDEDKEY | KEYEVEN

TF_KEYUP,

0);

Sleep(200);

keybd_event( 0x10,

0x45,

KEYEVENTF_EXTENDEDKEY | 0 ,

0

);

keybd_event( 0x10,

0x45,

KEYEVENTF_EXTENDEDKEY | KEYEVEN

TF_KEYUP,

0);

4)关闭弹出的窗口

::SendMessage(ptr->m_hWnd,WM_CLOSE,0,0);

3.结束语

将这段代码编译成执行文件后远程让被控制的计算机执行,计算机就不会进入自动休眠状态。经过本单位几百台计算机一年来的实践证明,此方法可以有效的防止各种情况下的计算机休眠。就算考试系统会锁住计算机热键并锁住屏幕,也能有效的防止计算机进入休眠状态,防止熄屏。

参考文献:

[1]Jarres Stangre.CW1 Security Professiona lSutdyGudie [M].李明译.北京:电子工业出版社2,003.291—220.

[2]Microsoft® Windows® Driver Development Kit (DDK)[M/CD]. 2006

[3]http://www.vckbase.com/

[4]http://www.microsoft.com/china/msdn/developercenter/VCPP/VCPPDC.aspx

作者简介:李静(1971-),女,湖南湘阴人,讲师,硕士研究生,研究方向:计算机应用技术、数据库技术。

*本文暂不支持打印功能

monitor