⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 用vc++6.0控制计算机和光驱.txt

📁 学习(编程技巧_编程知识_程序代码),是学习编程不可多得的学习精验
💻 TXT
字号:
用VC++6.0控制计算机和光驱
 

--------------------------------------------------------------------------------
 
第八军团 时间:2003-7-25 17:02:50 
   
          

 摘 要 简单演示用VC++6.0怎样实现“关闭计算机”、“重新启动计算机”、“打开CD-ROM”、“关闭CD-ROM”。 

关键字  VC,MCI,Windows API 

一、引言 

VC++6.0是Microsoft公司推出的开发Win32环境(Windows95/98/NT/2000)程序,面向对象的可视化集成编程系统。它具有很强的系统操作能力,可开发多种程序,如应用程序、动态连接库、ActiveX控件等。Windows API 是Windows系列软件为程序开发人员提供的用于进入操作系统核心的途径,进行高级编程的途径。在VC++6.0中有效的利用这些API函数,我们可以很容易的控制我们的计算机和计算机的其他设备。 

二、预备知识

      首先,要实现“打开CD-ROM”、“关闭CD-ROM”这两个功能要用到MCI。我们先介绍一下用MCI 来控制的方法。 

 MCI(Media Control Interface)媒体控制接口是MircroSoft提供的一组多媒体设备和文件的标准接口,它的好处是可以方便地控制绝大多数多媒体设备包括音频、视频、影碟、录像等多媒体设备,而不需要知道它们的内部工作状况。 

   一般说来,程序员使用两个函数就可以与MCI打交道了: 

MCIERROR mciSendCommand(MCIDEVICEID wDeviceID, UINT uMsg,DWORD dwFlags, DWORD dwParam );命令字符串方式,用接近于日常生活用语的方式发送控制命令,适用于高级编程如VB、TOOLBOOK等 

mciSendCommand命令参数说明: 

WDeviceID:指定了设备标识,这个标识会在程序员打开MCI设备时由系统提供。 

uMsg:指定将如何控制设备,详细请查阅后面“MCI指令”一栏。 

DwFlags:访问标识。 

DwParam:一般是一个数据结构,标识程序在访问MCI时要的一些信息。 

MCIERROR mciSendString(LPCTSTR lpszCommand,LPTSTR lpszReturnString, UINT cchReturn, HANDLE hwndCallback);命令消息方式,用专业语法发送控制消息,适用于VC等语言编程,此方式直接与MCI设备打交道。对于mciSendString命令参数说明: 

LpszCommand:一串控制字符串。 

LpszReturnString:返回信息由系统填入第二个参数。 

cchReturn:指明返回信息的最大长度,若对MCI装置设定了"notify"标志则需要在第四个参数hwndCallback填上返回窗口句柄。 

        要实现“关闭计算机”、“重新启动计算机”的功能必须要调用Windows API函数ExitWindowsEx()和LoadLibrary()。还需要用到shell.dll动态连接库。 

三、具体实现步骤: 

1.   创建一个Dialog based的MFC应用程序。 

2.   在资源里插入对话框并添加按扭: 

3.   对应对话框中的按扭添加相应的代码: 

void CControlDlg::OnRestartcomputer() 

{ 

  

   OSVERSIONINFO OsVersionInfo;   //包含操作系统版本信息的数据结构 

   OsVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); 

   GetVersionEx(&OsVersionInfo);    //获取操作系统版本信息 

   if(OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) 

   { 

            //Windows98,调用ExitWindowsEx()函数重新启动计算机 

            DWORD dwReserved; 

            ExitWindowsEx(EWX_REBOOT,dwReserved);  //可以改变第一个参数,实现注销用户、关机、关闭电源等操作 

            // 退出前的一些处理程序 

   } 

} 

   

void CControlDlg::OnShutdowncomputer() 

{ 

   typedef int (CALLBACK *SHUTDOWNDLG)(int);   //显示关机对话框函数的指针 

   HINSTANCE hInst = LoadLibrary("shell32.dll");  //装入shell32.dll 

   SHUTDOWNDLG ShutDownDialog;    //指向shell32.dll库中显示关机对话框函数的指针 

   if(hInst != NULL) 

   { 

            //获得函数的地址并调用之 

            ShutDownDialog = (SHUTDOWNDLG)GetProcAddress(hInst,(LPSTR)60); 

            (*ShutDownDialog)(0); 

   } 

} 

void CControlDlg::OnOpencdrom()      //打开CD-ROM 

{ 

   mciSendString("Set cdAudio door open wait",NULL,0,NULL); 

} 

void CControlDlg::OnClosecdrom()     //关闭CD-ROM 

{ 

   mciSendString("Set cdAudio door closed wait",NULL,0,NULL); 

} 

四、小结 

通过学习MCI的各个属性,我们可以随意操作相关多媒体外围设备。读者如果有兴趣可以用MCI来完成很多多媒体操作,如播放音频,播放视频等等。本程序在Windows98/2000环境及VC++6.0编译通过。 

 
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -