Страница 14 из 17 Устройства - Открытие привода 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() << mbOK, 0);
- Как определить, подключена ли мышь
// Введите следующий код: if(GetSystemMetrics(SM_MOUSEPRESENT)) MessageDlg("Мышь подключена!", mtInformation, TMsgDlgButtons() << mbOK, 0); else MessageDlg("Мышь не найдена!", mtError, TMsgDlgButtons() << mbOK, 0);
- Название процессора
// Введите следующий код: 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); - Определение набора расширенных инструкций поддерживающий процессором
// Введите следующий код:
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!");
- Определение тактовой частоты 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; } |