用VC++編程式控制制電腦和光碟機

來源:互聯網
上載者:User
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下通過。 
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.