C/C++ - [решено] Определение частоты процессора, видеопамяти и др.

Аватара пользователя
Virtyaluk

C/C++ - [решено] Определение частоты процессора, видеопамяти и др.

Сообщение Virtyaluk »

Как сделать чтоб в окне программы отображалась тактовая частота процессора, информация о видеопамяти, оперативной памяти, ОС и др.?




Код здесь!




Код программы:



Код:

Код: Выделить всё

//---------------------------------------------------------------------------
#include 
#pragma hdrstop
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
	: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Label1Click(TObject *Sender)
{
}
//---------------------------------------------------------------------------

Определения частоты процессора:



Код:

Код: Выделить всё

double CPUSpeed(void) 
 { 
   DWORD dwTimerHi, dwTimerLo; 
   asm
    { 
       DW 0x310F 
       mov dwTimerLo, EAX 
       mov dwTimerHi, EDX 
     } 
   Sleep (500); 
   asm
    { 
       DW 0x310F 
       sub EAX, dwTimerLo 
       sub EDX, dwTimerHi 
       mov dwTimerLo, EAX 
       mov dwTimerHi, EDX 
    } 
   return dwTimerLo/(1000.0*500); 
 }

Определения частоты обновления экрана:



Код:

Код: Выделить всё

HDC hDCScreen = GetDC(NULL);
int RefreshFrequency = GetDeviceCaps(hDCScreen, VREFRESH);
ReleaseDC(NULL, hDCScreen);

Определение размеры экрана:



Код:

Код: Выделить всё

TRect rect;
if( SystemParametersInfo(SPI_GETWORKAREA,0,&rect,0) ) {
// получили размер рабочей области
ShowMessage("WorkArea size is "+AnsiString(rect.Width())+"x"+AnsiString(rect.Height()));
} else {
// не удалось получить размер рабочей области
ShowMessage("GetWorkArea failed");
}

Изменения разрешения экрана:



Код:

Код: Выделить всё

DEVMODE dm;
dm.dmSize = sizeof(DEVMODE);
int index = 0;
while (EnumDisplaySettings(NULL, index, &dm))
{
 if (dm.dmPelsWidth == 800 && dm.dmPelsHeight == 600)
 {
   dm.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT;
   LONG result = ChangeDisplaySettings(&dm, CDS_TEST);
   if (result == DISP_CHANGE_SUCCESSFUL)
   {
     ChangeDisplaySettings(&dm, 0);
     break;
   }
   else if (result == DISP_CHANGE_RESTART)
   {
     ShowMessage("Требуется перезагрузка");
     break;
   }
   else
   {
     ShowMessage("Установка не поддерживается монитором");
     break;
   }
 }
 index++;
}

Знаю не все коды...пишите еще, необходимые!!





Помогите, пожалуйста, осуществить это!

И можно это же проделать на Делфи?Если да то на сколько будет отличаться код?
Аватара пользователя
Virtyaluk

Re: C/C++ - [решено] Определение частоты процессора, видеопамяти и др.

Сообщение Virtyaluk »

Admiral,

спасибо за ссылку на не решенною тему

но мне нужно в одном окне отобразить не только количество RAM и количество видеопамяти,

а всю информацию о системе + все это организовать на C++!!

И желательно чтоб кто-то помог т.е. написал полностью рабочий код.
Аватара пользователя
Drongo

Re: C/C++ - [решено] Определение частоты процессора, видеопамяти и др.

Сообщение Drongo »

qE+, У меня такой код есть.



1. Разрешение монитора



Код:

Код: Выделить всё

...
// Узнаём разрешение монитора
   Label1->Caption = String(Screen->Monitors[0]->Width) + "x" +Screen->Monitors[0]->Height;
...

2. Узнаём количество оперативной памяти



Код:

Код: Выделить всё

...
// Узнаём количество оперативной памяти
   TMemoryStatus MS;
   MS.dwLength = sizeof(MS);
   GlobalMemoryStatus(&MS);
   Label2->Caption = String("Всего памяти:                         ") + FormatFloat("#,###' МБ'", MS.dwTotalPhys / 1024);
   CHAR lpMemLoad[5];
   sprintf(lpMemLoad, "%d %%", MS.dwMemoryLoad);
   Label3->Caption = String("Использование ОЗУ:               ") + lpMemLoad;
...

3. Всего памяти.



Код:

Код: Выделить всё

 ...
   MEMORYSTATUS mem;
   memset((void*)&mem, 0, sizeof(mem));
   mem.dwLength = sizeof(mem);
   GlobalMemoryStatus(&mem);
   Label4->Caption = String("Всего памяти: ") + IntToStr(mem.dwTotalPhys);
...

И проект прикреплю, честно скажу, не мой, скачал с другого форума, но в своё время мне этот проект немного помог.
Вложения
[Проект]BCB6.0-Устройства.rar
(13.31 КБ) 0 скачиваний
[Проект]BCB6.0-Устройства.rar
(13.31 КБ) 0 скачиваний
Аватара пользователя
Virtyaluk

Re: C/C++ - [решено] Определение частоты процессора, видеопамяти и др.

Сообщение Virtyaluk »

Drongo,

спасибо за код.

если можно, напишите еще для определения ОС и VRAM

И поместите все это в одно окошко в окне всей программы т.е. сюда:

Код:

Код: Выделить всё

//---------------------------------------------------------------------------
#include 
#pragma hdrstop
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
	: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Label1Click(TObject *Sender)
{
}
//---------------------------------------------------------------------------

P.S. Программа из прикрепленного файла не запустилась, просит vcl60.bpl - ОСь у меня Win7U
Аватара пользователя
Virtyaluk

Re: C/C++ - [решено] Определение частоты процессора, видеопамяти и др.

Сообщение Virtyaluk »

Цитата qE+:



P.S. Программа из прикрепленного файла не запустилась, просит vcl60.bpl
C/C++ - [решено] Определение частоты процессора, видеопамяти и др.




Это потому что при компиляции не снята галка "использовать пакеты" Вот рабочая прога.


Цитата qE+:



И поместите все это в одно окошко в окне всей программы т.е. сюда:
C/C++ - [решено] Определение частоты процессора, видеопамяти и др.




Ну, поместить вы впринципе и сами можете, дело в том, что я не знаю структуры вашей программы, что и куда должно выводиться у вас... В моём примере всё выводится на Label1, Label2, и т.д...


Цитата qE+:



если можно, напишите еще для определения ОС и VRAM
C/C++ - [решено] Определение частоты процессора, видеопамяти и др.




Боюсь, здесь тоже ничем не смогу помочь. Изображение
Вложения
Project1.7z
(182.46 КБ) 0 скачиваний
Project1.7z
(182.46 КБ) 0 скачиваний
Аватара пользователя
Virtyaluk

Re: C/C++ - [решено] Определение частоты процессора, видеопамяти и др.

Сообщение Virtyaluk »

Drongo,

исходя из прикрепленного вами файла:

- как сделать чтоб информация отображалась не при нажатии кнопки?

- можно ли как-то MessageDlg(Information_String, mtInformation, TMsgDlgButtons()
Аватара пользователя
Drongo

Re: C/C++ - [решено] Определение частоты процессора, видеопамяти и др.

Сообщение Drongo »

Цитата qE+:

- как сделать чтоб информация отображалась не при нажатии кнопки?

можно ли как-то MessageDlg(Information_String, mtInformation, TMsgDlgButtons()
Аватара пользователя
Virtyaluk

Re: C/C++ - [решено] Определение частоты процессора, видеопамяти и др.

Сообщение Virtyaluk »

Всем спасибо за помощь, сам решил все!

На сайте Майкрософт есть специальная утилита, которая показывает код для нужного устройства.
Аватара пользователя
Drongo

Re: C/C++ - [решено] Определение частоты процессора, видеопамяти и др.

Сообщение Drongo »

Цитата Virtyaluk:



На сайте Майкрософт есть специальная утилита, которая показывает код для нужного устройства
C/C++ - [решено] Определение частоты процессора, видеопамяти и др.




Скинь название проги и ссылку на неё.



Решением поделиться можешь?
Ответить

Вернуться в «Программирование и базы данных»