学习(编程技巧_编程知识_程序代码),是学习编程不可多得的学习精验

源代码在线查看: 用vc++6.0控制计算机和光驱.txt

软件大小: 726 K
上传用户: csytml
关键词: 编程 编程技巧 程序 代码
下载地址: 免注册下载 普通下载 VIP

相关代码

				用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编译通过。 
				
				 
				 
							

相关资源