Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 июня!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Давно заметил, что всё-таки языки С/C++ это не самый лучший вариант программирования под Windows. Сейчас появилась масса более современных и удобных языков, например тот же Python - кроссплатформенный язык, очень легок в изучение. Я его изучил буквально за несколько дней по этому курсу - ссылка. Автор постарался, там видеоуроки на удивление легкие и понятные.

Устройства

  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;
     
     }


<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS