Другие языки программирования и технологии
Как написать программу на C++, используя Win API?
Требуется написать программу, считывающую информацию о диске (функция GetVolumeInformation) и вывести в консоль (функция WriteConsole). Как это делается?
#include <windows.h>
#include <string>
#include <iostream>
int main() {
std::wcin.imbue(std::locale(".866"));
std::wcout.imbue(std::locale(".866"));
int const q = 26;
const DWORD size = MAX_PATH + 1; // DWORD и const переписать вручную
LPCWSTR diskletter[q] = { L"A:\\", L"B:\\", L"C:\\", L"D:\\", L"E:\\", L"F:\\", L"G:\\", L"H:\\", L"I:\\", L"J:\\", L"K:\\", L"L:\\", L"M:\\", L"N:\\", L"O:\\", L"P:\\", L"Q:\\", L"R:\\", L"S:\\", L"T:\\", L"U:\\", L"V:\\", L"W:\\", L"X:\\", L"Y:\\", L"Z:\\" };
WCHAR diskletterbuff[size], systemnamebuff[size];
ULONG serial;
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
const size_t sizeInWords = 0x1000;
LPWSTR buffer = NULL;
BOOL flag;
for (int n = 0; n < q; ++n) {
flag = GetVolumeInformationW(diskletter[n], diskletterbuff, size, &serial, NULL, NULL, systemnamebuff, size);
if (!flag) continue;
else {
if (diskletterbuff[0] == NULL) { diskletterbuff[0] = L'-'; diskletterbuff[1] = 0; }
std::wstring temp = L"";
temp = L" Буква диска: ";
temp += diskletter[n];
temp += L"\n Имя диска: ";
temp += diskletterbuff;
temp += L"\n Серийный номер диска: ";
temp += std::to_wstring((unsigned long long)serial);
temp += L"\n Файловая система: ";
temp += systemnamebuff;
temp += L"\n\n";
rsize_t size = temp.size() + 2;
if (buffer = new (std::nothrow) WCHAR [sizeInWords]) {
wcscpy_s(buffer, size, temp.c_str());
WriteConsoleW(hOut, buffer, size - 2, NULL, NULL);
delete[] buffer;
buffer = NULL;
}
}
}
getchar();
return 0;
}
#include <string>
#include <iostream>
int main() {
std::wcin.imbue(std::locale(".866"));
std::wcout.imbue(std::locale(".866"));
int const q = 26;
const DWORD size = MAX_PATH + 1; // DWORD и const переписать вручную
LPCWSTR diskletter[q] = { L"A:\\", L"B:\\", L"C:\\", L"D:\\", L"E:\\", L"F:\\", L"G:\\", L"H:\\", L"I:\\", L"J:\\", L"K:\\", L"L:\\", L"M:\\", L"N:\\", L"O:\\", L"P:\\", L"Q:\\", L"R:\\", L"S:\\", L"T:\\", L"U:\\", L"V:\\", L"W:\\", L"X:\\", L"Y:\\", L"Z:\\" };
WCHAR diskletterbuff[size], systemnamebuff[size];
ULONG serial;
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
const size_t sizeInWords = 0x1000;
LPWSTR buffer = NULL;
BOOL flag;
for (int n = 0; n < q; ++n) {
flag = GetVolumeInformationW(diskletter[n], diskletterbuff, size, &serial, NULL, NULL, systemnamebuff, size);
if (!flag) continue;
else {
if (diskletterbuff[0] == NULL) { diskletterbuff[0] = L'-'; diskletterbuff[1] = 0; }
std::wstring temp = L"";
temp = L" Буква диска: ";
temp += diskletter[n];
temp += L"\n Имя диска: ";
temp += diskletterbuff;
temp += L"\n Серийный номер диска: ";
temp += std::to_wstring((unsigned long long)serial);
temp += L"\n Файловая система: ";
temp += systemnamebuff;
temp += L"\n\n";
rsize_t size = temp.size() + 2;
if (buffer = new (std::nothrow) WCHAR [sizeInWords]) {
wcscpy_s(buffer, size, temp.c_str());
WriteConsoleW(hOut, buffer, size - 2, NULL, NULL);
delete[] buffer;
buffer = NULL;
}
}
}
getchar();
return 0;
}
подключай <windows.h> и вперед
Похожие вопросы
- Помогите написать программу на C/C++
- Написал программу в c++. Отправил на другой компьютер. Выдало ошибку потому
- Помогите написать программу по C++
- помогите написать программу на c++
- Помогите пожалуйста! нужно написать программу на C++
- Помогите пожалуйста написать программу на c++.
- Привет всем! Помогите, пожалуйста, написать программу в C++.
- Напишите программу на C++. Только начал учить и не смог разобраться
- Помогите написать программу в C++
- Помогите, пожалуйста, написать программу на C++.