用VC++编程控制计算机和光驱
(1)重新启动计算机
先获取操作系统版本,然后调用ExitWindowsEx函数重新启动计算机。为IDC_RESTARTCOMPUTER按钮添加BN_CLICKED消息处理函数如下:
void CControlDlg::OnRestartcomputer()
{ OSVERSIONINFO OsVersionInfo;//包含操作系统版本信息的数据结构
OsVersionInfo.dwOSVersionInfoSize= sizeof(OSVERSIONINFO);
GetVersionEx(&OsVersionInfo);//获取操作系统版本信息
if( OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS )
{//Windows98,调用ExitWindowsEx()函数重新启动计算机
DWORD dwReserved ;
ExitWindowsEx(EWX_LOGOFF,dwReserved);}}
实际上,通过改变函数ExitWindowsEx的第一个参数可以实现注销用户、关机、关闭电源等操作。
(2)关闭计算机
此功能是通过shell32.dll中一个索引号为60的API函数调用,显示“关闭Windows”对话窗口实现的。
具体方法为IDC_SHUTDOWNCOMPUTER按钮添加BN_CLICKED消息处理函数:
void CControlDlg::OnShutdowncomputer()
{HINSTANCE hInst=LoadLibrary(″shell32.dll″);//装入shell32.dll
SHUTDOWNDLG ShutDownDialog;//指向shell32库中显示关机对话框函数的指针
if(hInst!=NULL)
{//获得函数的地址并调用之
ShutDownDialog=(SHUTDOWNDLG)GetProcAddress(hInst,(LPSTR)60);//
(*ShutDownDialog)(0);}}
函数中的SHUTDOWNDLG定义如下:
typedef int (CALLBACK *SHUTDOWNDLG)(int);//显示关机对话框函数的指针
(3)打开CD_ROM与关闭CD_ROM
方法是先向工程中加入多媒体组件。选择“Project/Add to Project/Components and Controls”菜单项,在弹出的Components and Controls Gallery对话框中选择Visual C++ Components文件夹,然后选择Windows Multimedia library项,按Insert按钮。在之后的消息框中按“是”。这样,在工程中加入了了多媒体组件,在stdafx.h文件中加入了两行语句:
#include <MMSystem.h>
// CG: The following line was added by the Windows Multimedia component.
#pragma comment(lib,"winmm.lib")
然后分别为IDC_OPENCDROM和IDC_CLOSECDROM按钮添加BN_CLICKED消息处理函数如下:
void CControlDlg::OnOpencdrom() //打开光驱
{mciSendString(″Set cdAudio door open wait″,NULL,0,NULL); }
void CControlDlg::OnClosecdrom() //关闭光驱
{mciSendString(″Set cdAudio door closed wait″,NULL,0,NULL);}
本程序在中文Windows 98、Visual C++6.0下通过。