Справочник советов и примеров по C++Builder

       

Устройства


  • Открытие привода CD-ROM

    // Чтобы программно открыть привод CD-ROM, подключите

    // после vcl.h заголовочный файл mmsystem.h



    // и вызовите функцию mciSendString:

    void __fastcall TForm1::Button1Click(TObject *Sender)

    {

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

    }

  • Закрытие привода CD-ROM

    // Чтобы программно закрыть привод CD-ROM, подключите

    // после vcl.h заголовочный файл mmsystem.h

    // и вызовите функцию mciSendString:

    void __fastcall TForm1::Button1Click(TObject *Sender)

    {

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

    }

  • Программное выключение монитора

    // Следующий код выключит монитор

    SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 2);

  • Программное включение монитора

    // Следующий код включит монитор

    SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, -1);

  • Как выключить/перезагрузить компьютер

    // Для включения/перезагрузки компьютера вызовите

    // функцию ExitWindowsEx

    // выключить компьютер

    ExitWindowsEx(EWX_SHUTDOWN, 0);

    // перезагрузить компьютер

    ExitWindowsEx(EWX_REBOOT, 0);

    // завершить сеанс пользователя

    ExitWindowsEx(EWX_LOGOFF, 0);

  • Сколько оперативной памяти

    // Для того чтобы узнать сколько оперативной

    // памяти на компьютере введите следующий код:

    MEMORYSTATUS mem;

    memset((void*)&mem,0,sizeof(mem));

    mem.dwLength=sizeof(mem);

    GlobalMemoryStatus(&mem);

    MessageDlg("Total memory:"+IntToStr(mem.dwTotalPhys),

    mtInformation, TMsgDlgButtons()

  • Как определить, подключена ли мышь

    // Введите следующий код:

    if(GetSystemMetrics(SM_MOUSEPRESENT))

    MessageDlg("Мышь подключена!", mtInformation, TMsgDlgButtons()

    else

    MessageDlg("Мышь не найдена!", mtError, TMsgDlgButtons()

  • Название процессора

    // Введите следующий код:

    AnsiString ProcessorName="Unknown";

    TRegistry *reg = new TRegistry;

    try {

    reg->RootKey = HKEY_LOCAL_MACHINE;

    reg->OpenKey("Hardware\\Description"

    "\\System\\CentralProcessor\\0", false);


    ProcessorName=reg->ReadString("ProcessorNameString");

    }

    __finally

    {

    delete reg;

    }

    MessageDlg(ProcessorName, mtInformation, TMsgDlgButtons()


  • Определение набора расширенных инструкций поддерживающий процессором

    // Введите следующий код:

    Memo1->Lines->Add("Поддерживаемые инструкции:"); DWORD brt; bool AMD,MMX; __asm { mov eax,1 cpuid mov brt,edx } if(brt&(1Lines->Add("MMX"); } if(brt&(1Lines->Add("SSE"); } __except(EXCEPTION_EXECUTE_HANDLER){} if(brt&(1Lines->Add("SSE2"); } __except(EXCEPTION_EXECUTE_HANDLER){} } } } __asm { mov eax,0x80000000 cpuid cmp eax,0x80000000 jc notamd mov eax,0x80000001 cpuid mov brt,edx mov AMD,1 notamd: } if(AMD) if((MMX)&&(brt&(1Lines->Add("3DNOW!");

    Автор:

  • Определение тактовой частоты CPU

    // При помощи этой функции можно определить тактовую частоту CPU:

    double CPUSpeed(void) { DWORD dwTimerHi, dwTimerLo; double dRes; asm

    { DW 0x310F mov dwTimerLo, EAX mov dwTimerHi, EDX }

    Sleep (500); asm

    { DW 0x310F sub EAX, dwTimerLo sub EAX, dwTimerHi mov dwTimerLo, EAX mov dwTimerHi, EDX } dRes = dwTimerLo/(1000.0*500); return dRes; }



  • Содержание раздела