Устройства

  1. Открытие привода CD-ROM
  2. Закрытие привода CD-ROM
  3. Программное выключение монитора
  4. Программное включение монитора
  5. Как выключить/перезагрузить компьютер
  6. Сколько оперативной памяти
  7. Как определить, подключена ли мышь
  8. Название процессора
  9. [+] Определение набора расширенных инструкций поддерживающий процессором
  10. [+] Определение тактовой частоты частоты CPU
  1. Открытие привода CD-ROM

    // Чтобы программно открыть привод CD-ROM, подключите
    // после vcl.h заголовочный файл mmsystem.h
    // и вызовите функцию mciSendString:
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    mciSendString("Set cdaudio door open wait", NULL, 0, Handle);
    }

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

    // Чтобы программно закрыть привод CD-ROM, подключите
    // после vcl.h заголовочный файл mmsystem.h
    // и вызовите функцию mciSendString:
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    mciSendString("Set cdaudio door closed wait", NULL, 0, Handle);
    }

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

    // Следующий код выключит монитор
    SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 2);

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

    // Следующий код включит монитор
    SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, -1);

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

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


    // выключить компьютер
    ExitWindowsEx(EWX_SHUTDOWN, 0);
    // перезагрузить компьютер
    ExitWindowsEx(EWX_REBOOT, 0);
    // завершить сеанс пользователя
    ExitWindowsEx(EWX_LOGOFF, 0);

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

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

    MEMORYSTATUS mem;
    memset((void*)&mem,0,sizeof(mem));
    mem.dwLength=sizeof(mem);
    GlobalMemoryStatus(&mem);
    MessageDlg("Total memory:"+IntToStr(mem.dwTotalPhys),
    mtInformation, TMsgDlgButtons() << mbOK, 0);

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

    // Введите следующий код:
    if(GetSystemMetrics(SM_MOUSEPRESENT))
    MessageDlg("Мышь подключена!", mtInformation, TMsgDlgButtons() << mbOK, 0);
    else
    MessageDlg("Мышь не найдена!", mtError, TMsgDlgButtons() << mbOK, 0);

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

    // Введите следующий код:
    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() << mbOK, 0);

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

    // Введите следующий код:
    Memo1->Lines->Add("Поддерживаемые инструкции:");
    DWORD brt;
    bool AMD,MMX;
    __asm
     {
      mov  eax,1
      cpuid
      mov brt,edx
     }
    if(brt&(1<<23))
     {
      MMX=true;
      Memo1->Lines->Add("MMX");
     }
    if(brt&(1<<25))
     {
      if(brt&(1<<24))
       {
        __try
         {
          __asm xorps xmm0, xmm0
          Memo1->Lines->Add("SSE");
         }
        __except(EXCEPTION_EXECUTE_HANDLER){}
        if(brt&(1<<26))
         {
          __try
           {
            __asm xorpd xmm0,xmm0
            Memo1->Lines->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&(1<<31)))
    	Memo1->Lines->Add("3DNOW!");

    Автор: ant47

  10. Определение тактовой частоты 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; 
    }
Наверх
Hosted by uCoz