Russian Qt Forum
Июнь 01, 2024, 13:03 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: WinApi как начать?  (Прочитано 7367 раз)
Alchazar
Гость
« : Январь 21, 2010, 13:55 »

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

qt_windows.h
Записан
Alchazar
Гость
« Ответ #2 : Январь 21, 2010, 15:18 »

А дальше что?
Может где-то можно почитать о winApi в QT?
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #3 : Январь 21, 2010, 15:30 »

дальше всё то же, что обычно. Qt - это не язык. Язык - с++, следовательно ничем от написания других программ с винапи, не отличается
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #4 : Январь 21, 2010, 15:38 »

Может есть у кого простой пример использования WinApi?
http://unnstudioreport.googlecode.com/files/Test5.zip
+ trdm добавил:
http://unnstudioreport.googlecode.com/files/Win32_API_ru.zip
« Последнее редактирование: Январь 21, 2010, 16:10 от panAlexey » Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
Alchazar
Гость
« Ответ #5 : Январь 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
Как это исправить?
Записан
developer
Гость
« Ответ #6 : Январь 21, 2010, 17:29 »

Если не ошыбаюсь, ето связано с юникодом, надо подключить директиву UNICODE ну или что-то подобное. Просто уже не помню
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.078 секунд. Запросов: 19.