C++控制光驱舱门开关

      程序实现对计算机光驱舱门的开关进行控制,循环开关动作5次。

      Qt Creator下的代码如下:

#include <QtCore/QCoreApplication>  
#include <windows.h>  
#include <mmsystem.h>  
#include <stdio.h>  
  
void OpenCDRom();  
void CloseCDRom();  
  
int main(int argc, char *argv[])  
{  
    QCoreApplication a(argc, argv);  
  
    printf("Look down on your CDRow's door");  
    for(int i=0; i<5; i++)  
    {  
        OpenCDRom();  
        Sleep(2000);  
        CloseCDRom();  
        Sleep(2000);  
    }  
  
    return a.exec();  
}  
  
void OpenCDRom()  
{  
    WCHAR returnstring[10];  
    mciSendStringW(L"set cdaudio door open", returnstring, 10, NULL);  
}  
  
void CloseCDRom()  
{  
    WCHAR returnstring[10];  
    mciSendStringW(L"set cdaudio door closed", returnstring, 10, NULL);  
}  

      其中,程序中使用的 MciSendString是用来播放多媒体文件的API指令,可以播放MPEG,AVI,WAV,MP3等。该函数共有四个参数,分别是LPCWSTR,LPWSTR,UINT和HWND。其中第一个参数是要发送的命令字符串,字符串的结构是:[命令][设备别名][命令参数];第二个参数是返回信息的缓冲区;第三个参数是缓冲区的大小,就是字符串变量的长度;第四个参数是回调方式,一般设置为NULL。函数如果执行成功,则返回零,否则返回错误代码。有关MciSendString参见http://www.360doc.com/content/10/0509/21/1173434_26833589.shtml或者http://baike.baidu.com/view/1622810.htm#3

      另外一个需要注意的地方是WCHAR的使用,有关WCHAR的相关问题参见http://www.cppblog.com/shongbee2/archive/2009/04/28/81349.html

      在程序的设置过程中,需要将winmm.lib文件添加至工程中。在Qt中,打开工程文件,在工程文件的最后添加“LIBS += -lwinmm”即可。

      在VS2010下进行开发的程序代码基本相同,只是需要添加“#pragma comment(lib, "winmm.lib")”将winmm.lib文件添加到项目中去即可。具体代码如下所示:

#include <windows.h>  
#include <mmsystem.h>  
#include <stdio.h>  
  
#pragma comment(lib, "winmm.lib")  
  
void OpenCDRom();  
void CloseCDRom();  
  
void main()  
{  
    printf("Look down on your CDRow's door");  
    for(int i=0; i<5; i++)  
    {  
        OpenCDRom();  
        Sleep(2000);  
        CloseCDRom();  
        Sleep(2000);  
    }  
}  
  
void OpenCDRom()  
{  
    WCHAR returnstring[10];  
    mciSendStringW(L"set cdaudio door open", returnstring, 10, NULL);  
}  
  
void CloseCDRom()  
{  
    WCHAR returnstring[10];  
    mciSendStringW(L"set cdaudio door closed", returnstring, 10, NULL);  
}

      本人也是初学者,如果存在问题也希望大家能够指出,大家多多交流,共同进步!

转载于:https://www.cnblogs.com/gagexgy/archive/2013/02/24/2924049.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值