用VC++编程控制计算机和光驱

SWM
  通常有些程序在初次使用使用时,要进行一些象安装特定字体的设置,之后需要重新启动计算机使之生效;而在一些多媒体软件编程中会用到用程序操纵CD_ROM的开与关的情况。为了说明在VC中实现这两项功能的方法,我们创建一个基于对话框、名为Control的工程。对话框的外观如图1所示,其中四个按钮(Button)属性设置见下表,
  ID Caption
  IDC_SHUTDOWNCOMPUTER 关闭计算机...
  IDC_RESTARTCOMPUTER 重新启动计算机
  IDC_OPENCDROM 打开CD-ROM
  IDC_CLOSECDROM 关闭CD-ROM
  图1 IDD_CONTROL_DIALOG对话框

  (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
  // 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下通过。 
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值