Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.70/79: Рейтинг темы: голосов - 79, средняя оценка - 4.70
5 / 5 / 1
Регистрация: 10.03.2012
Сообщений: 121

Использование WinAPI функции в приложении Qt

02.04.2013, 15:49. Показов 17246. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вышел спор с преподавателем. Он убеждал меня, что в топку C++ Qt, лучше использовать C#. И вот в пятницу нужно сдать ему программу, которая с помощью WinAPI GetVolumeInformation(), читает серийный номер флешки и выдает и сохраняет! Но вот проблема, не могу ее сделать, чтобы утереть ему нос, Qt только не давно начал изучать!

Как вызвать функцию WinAPI в приложении Qt и записать одна из ее значений в строку?

Вот, что я сделал на Qt:

Кликните здесь для просмотра всего текста
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include "widget.h"
#include <QPushButton>
#include <QApplication>
#include <QGridLayout>
#include <QLabel>
#include <string>
#include <windows.h>
 
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QWidget *window = new QWidget;
 
    QPushButton *button_quit = new QPushButton("Выход");
    QPushButton *button_save = new QPushButton("Сохранить");
    QLabel *serial = new QLabel("Серийный номер: ");
    QLabel *serial_flash = new QLabel;
 
    QObject::connect(button_quit, SIGNAL(clicked()),
                     &app, SLOT(quit()));
 
    QGridLayout *layout = new QGridLayout;
    layout->addWidget(serial, 1, 1);
    layout->addWidget(serial, 1, 2);
    layout->addWidget(button_save, 2, 1);
    layout->addWidget(button_quit, 2, 2);
    window->setLayout(layout);
    window->show();
 
 
    return app.exec();
}


GetVolumeInformation()
Кликните здесь для просмотра всего текста
Code
1
2
3
4
5
6
7
8
9
10
11
12
BOOL WINAPI GetVolumeInformation(
      LPCTSTR lpRootPathName,    //путь к сетевому или локальному
      // тому (пример: "\\MyServer\MyShare\" или "C:\".
      LPTSTR lpVolumeNameBuffer, //буфер - в котором будет храниться
                      // имя тома
      DWORD nVolumeNameSize,     //размер буфера
      LPDWORD lpVolumeSerialNumber, //серийный номер тома
      LPDWORD lpMaximumComponentLength, //размер тома
      LPDWORD lpFileSystemFlags, //тип файловой системы
      LPTSTR lpFileSystemNameBuffer, //название файловой системы
      DWORD nFileSystemNameSize //размер буфера под название ФС
);


Просто покажите как ее правильно вызвать и записать значение серийника флешки в строку, заранее спасибо!

Добавлено через 23 минуты
Изменил код Qt:

Кликните здесь для просмотра всего текста
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include "widget.h"
#include <QPushButton>
#include <QApplication>
#include <QGridLayout>
#include <QLabel>
#include <QString>
#include <windows.h>
 
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QWidget *window = new QWidget;
 
    QPushButton *button_quit = new QPushButton("Выход");
    QPushButton *button_save = new QPushButton("Сохранить");
    QLabel *serial = new QLabel("Серийный номер: ");
    QLabel *serial_flash = new QLabel("Это серийник флешки");
 
    QObject::connect(button_save, SIGNAL(clicked()),
                     serial_flash, SLOT(show()));
 
    QObject::connect(button_quit, SIGNAL(clicked()),
                     &app, SLOT(quit()));
 
    QGridLayout *layout = new QGridLayout;
    layout->addWidget(serial, 1, 1);
    layout->addWidget(button_save, 2, 1);
    layout->addWidget(button_quit, 2, 2);
    window->setLayout(layout);
    window->show();
 
 
    return app.exec();
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.04.2013, 15:49
Ответы с готовыми решениями:

Использование Python скрипта в приложении Qt 5.8
Может кто подскажет как, просто внутри креатора писать python приложения не сложные. Речь не идёт о PyQt и билдингах Qt для python. Имеется...

Использование QtCharts в приложении с формами
Всем доброго времени суток. Мне необходимо построить график в приложении с формами. В Qt5.8 я создал приложение с формой, добавил в него...

Использование функции WinAPI ChildWindowFromPoint
пытаюсь передать символ в открытый блокнот ,но функция ChildWindowFromPoint в лазаре глючит конкретно , в 9 строке компилятор...

20
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 69
23.04.2013, 14:40
Студворк — интернет-сервис помощи студентам
Нужен производитель и номер, т.е. те данные, которые отображаются через F8 при загрузке системы или через Администрирование во вкладке "оборудование".
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.04.2013, 14:40

Использование стандартных компонент в приложении вычисления функции
Создать приложение с заданным количеством страниц диалога (закладками). 1. Первая страница Вычислить значение функции, условие...

WinApi эмуляция клика в стороннем приложении
Решил попробовать сделать обыкновенный кликер ЛКМ для одного приложения, подскажите какие варианты есть осуществления клика в стороннем...

Curl не работает в оконном приложении winapi
Вообщм проблема, в консольном приложении курл работает нормально, в оконном нет, функция curl_easy_perform() возвращает ошибку 23, хз...

Перехват системных сообщений в приложении WinApi
Имеется соответствующее приложение, которое не имеет своего окна и работает в фоне в бесконечном цикле. Соответственно при попытке...

Нажать на кнопку в стороннем приложении, используя WinAPI
Здравствуйте в кратце Нужно на c# и winapi реализовать данное сообщение &quot;WM_PARENTNOTIFY fwEvent:WM_LBUTTONDOWN xPos: 386...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru