Russian Qt Forum

Программирование => Общий => Тема начата: Alchazar от Январь 21, 2010, 13:55



Название: WinApi как начать?
Отправлено: Alchazar от Январь 21, 2010, 13:55
Мне надо узнать конфигурацию пк (Ram, HDD, CPU), как я понял всё это можно сделать при помощи WinApi. Но я не могу найти ни описания ни какого нибуть простого примера, как пользоваться WinApi в QT.
С чего начать, какие файлы подключать?
Может есть у кого простой пример использования WinApi?


Название: Re: WinApi как начать?
Отправлено: crossly от Январь 21, 2010, 13:57
qt_windows.h


Название: Re: WinApi как начать?
Отправлено: Alchazar от Январь 21, 2010, 15:18
А дальше что?
Может где-то можно почитать о winApi в QT?


Название: Re: WinApi как начать?
Отправлено: Авварон от Январь 21, 2010, 15:30
дальше всё то же, что обычно. Qt - это не язык. Язык - с++, следовательно ничем от написания других программ с винапи, не отличается


Название: Re: WinApi как начать?
Отправлено: panAlexey от Январь 21, 2010, 15:38
Может есть у кого простой пример использования WinApi?
http://unnstudioreport.googlecode.com/files/Test5.zip
+ trdm добавил:
http://unnstudioreport.googlecode.com/files/Win32_API_ru.zip


Название: Re: WinApi как начать?
Отправлено: Alchazar от Январь 21, 2010, 17:13
Нашёл пример в гугле. Вот что у меня получилось:
Код
C++ (Qt)
void MainWindow::getRamInfo()
{
   QString ramCount;
 
   // Get memory status
   MEMORYSTATUS theStatus;
   ZeroMemory(&theStatus,sizeof(theStatus));
   theStatus.dwLength = sizeof(theStatus);
   GlobalMemoryStatus(&theStatus);
 
   DWORD dwRAM = (DWORD)(theStatus.dwTotalPhys/(1024*1024));
   if(theStatus.dwTotalPhys != dwRAM*1024*1024)  
       ++dwRAM;
   DWORD dwUsedRAM = (DWORD)(theStatus.dwMemoryLoad);
 
   /******************/
   int mem = dwRAM;
   QString sMem;
   sMem.setNum(mem);
   label_ramAmountI->setText(sMem + " Mb"); // Total RAM
   progressBar_ramUsage->setValue(dwUsedRAM); // USED RAM in %
   /********************/
}

Только есть пару вопросов,
1. Не понимаю в чём смысл этих строчек?
Код
C++ (Qt)
if(theStatus.dwTotalPhys != dwRAM*1024*1024)  
       ++dwRAM;
2. MSDN пишет, что вместо GlobalMemoryStatus лучше использовать GlobalMemoryStatusEx. Вот только у меня не компилируется с GlobalMemoryStatusEx
error: `MEMORYSTATUSEX' was not declared in this scope
Как это исправить?


Название: Re: WinApi как начать?
Отправлено: developer от Январь 21, 2010, 17:29
Если не ошыбаюсь, ето связано с юникодом, надо подключить директиву UNICODE ну или что-то подобное. Просто уже не помню