|
![]() | 作者: ziaichen [ziaichen]
![]() |
登录 |
通常有些程序在初次使用使用时,要进行一些象安装特定字体的设置,之后需要重新启动计算机使之生效;而在一些多媒体软件编程中会用到用程序操纵CD_ROM的开与关的情况。为了说明在VC中实现这两项功能的方法,我们创建一个基于对话框、名为Control的工程。对话框的外观如图1所示,其中四个按钮(Button)属性设置见下表, ID Caption IDC_SHUTDOWNCOMPUTER 关闭计算机... IDC_RESTARTCOMPUTER 重新启动计算机 IDC_OPENCDROM 打开CD-ROM IDC_CLOSECDROM 关闭CD-ROM 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下通过。 [此贴被 ziaichen(ziaichen) 在 12月10日11时22分 编辑过] [此贴被 坤(ziaichen) 在 02月12日18时28分 编辑过] |
地主 发表时间: 12/10 11:07 |
![]() | 回复: jiantan [jiantan] ![]() |
登录 |
技术帖! 顶一下! 大家来看! |
B1层 发表时间: 12/10 19:55 |
![]() | 回复: Sn-D [sn_d] ![]() |
登录 |
ding |
B2层 发表时间: 12/10 20:20 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号