none
Как узнать значение константы Win32 API? RRS feed

  • Вопрос

  • Добрый день.

    Я не программирую на C++, поэтому не могу воспользоваться инструментами языка C++.

    Подскажите, что мне сделать, чтобы у меня всегда под рукой были значения всех констант?

    Напишите, пожалуйста, порядок действий, который мне надо сделать, чтобы у меня появились константы.

    Нужно установить какую-то программу?

    Можно ли устанавливать не весь пакет, а например, какой-нибудь один компонент?

    Есть какой-то SDK, можно ли мне его использовать без Visual Studio? Или надо обязательно установить Visual Stidio и сделать по умолчанию язык C++?

    Схожая тема тс



    • Изменено Alexander A RusinovModerator 12 июля 2019 г. 19:50 Добавил линк на схожую тему тс https://social.msdn.microsoft.com/Forums/ru-RU/e78970e7-9465-4497-83f1-73d5044f12ab/win32-api-1092109110851082109410801080-106310901086?forum=desktopprogrammingru
    11 июля 2019 г. 6:34

Ответы

Все ответы

  • 1. Загружайте и устанавливайте SDK:

    https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk

    2. Находите нужные константы в файлах заголовков любым средством которое может искать в текстовых файлах. Типично они заголовки ставятся в районе "C:\Program Files (x86)\Microsoft SDKs\Windows\<версия>\Include" 

    Пример: найдем значение 

    ERROR_INSUFFICIENT_BUFFER

    Результат поиска:

    #define ERROR_INSUFFICIENT_BUFFER   122 /* Some call require the  */


    This posting is provided "AS IS" with no warranties, and confers no rights.

    11 июля 2019 г. 6:50
    Модератор
  • Там же есть Windows 7 SP1 в поддерживаемых ОС.

    Кстати, есть еще вот такой онлайн-сервис для поиска констант: https://www.magnumdb.com

    • Предложено в качестве ответа Alexander A RusinovModerator 11 июля 2019 г. 8:34
    • Помечено в качестве ответа MSDN Member 11 июля 2019 г. 19:26
    11 июля 2019 г. 8:22
  • Как искать в гугле SDK для Windows 7? Какой запрос сделать?

    Или SDK по ссылке, которая во втором сообщении, подходит и для Windows 7?

    Я могу её скачать и установить на Windows 7 без каких-либо проблем?

    Приветствую.

    Вам линк дали постом выше

    https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk


    Я не волшебник, я только учусь. MCTS, CCNA. Если Вам помог чей-либо ответ, пожалуйста, не забывайте нажать на кнопку "Отметить как ответ" или проголосовать за "полезное сообщение". Disclaimer: Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции работодателя. Вся информация предоставляется как есть, без каких-либо на то гарантий. Блог IT Инженера, Яндекс Дзен, YouTube, GitHub.

    11 июля 2019 г. 9:07
    Модератор
  • Я сама тоже не разбираюсь в API и C++, но нашла сайт, который помогает быстро найти ответы на такие как у Вас вопросы.
    11 июля 2019 г. 9:18
  • А каталог C:\Program Files (x86)\Windows Kits\10 у вас есть?
    11 июля 2019 г. 11:20
  • VadimTagil, да есть такой каталог. Я в нём искал константу "ERROR_INSUFFICIENT_BUFFER".

    Нашлось много файлов с расширением "h". Я зашёл в один из таких файлов, но там просто упоминается константа и нет её значения.

    Вот здесь я искал:

    C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0

    Ну замечательно, файлы заголовков у вас есть. Теперь заходите во все найденные файлы пока в одном из них не найдете определение. 


    This posting is provided "AS IS" with no warranties, and confers no rights.

    11 июля 2019 г. 16:43
    Модератор
  • "В этой теме предложено решение здесь: VadimTagil1. Но здесь тоже подводные камни: не известно, кто этот сайт составляет"

    https://github.com/smourier, если это имеет значение

    "Остаётся тогда установить Visual Studio и нужно сделать язык C++ по умолчанию?

    Или не обязательно настраивать C++ по умолчанию?

    Можете описать порядок действий по работе с Visual Studio, чтобы увидеть значения констант Win32 API, при этом учитывая, что я не программирую на C++?"

    Для начала установить походящую версию VS. Я рекомендую VS 2012 Express For Desktop (https://visualstudio.microsoft.com/ru/vs/older-downloads/). Можно конечно и VS2017, но она довольно тяжелая. 

    После этого, создайте в ней проект С++ (например, консольный), допишите в нем в начале файла #include <windows.h>, далее напишите имя нужной константы, щелкните правой кнопкой и выберите "Перейти к определению". Как-то так.

    12 июля 2019 г. 7:06
  • "То есть нет кода константы."

    Вообще то есть, вы сами его только что привели. Не любая константа задается явно числом, она может быть производной от других констант. Как я уже написал в другой теме, если вы совсем не знаете С++, то вы не разберетесь. 

    12 июля 2019 г. 8:37
  • Навести мышью нет, но вы можете использовать простую программу для вывода значений констант на экран:

    #include <stdio.h>
    #include <Windows.h>
    
    int main(int argc, char* argv[]){
    
       printf("%d\n",(int) CONST_NAME);
    
       getchar();
    
    }

    Создаете консольный проект, вставляете в него этот код, заменяете CONST_NAME на нужную константу, собираете и запускаете. Значение будет в консоли.

    12 июля 2019 г. 9:33
  • VadimTagil, в Visual Studio константа IOCTL_STORAGE_GET_MEDIA_TYPES_EX будет иметь значение или нужно собирать это значение по частям, т.к. эта константа производная?

    То есть если я в Visual Studio наведу мышь на константу IOCTL_STORAGE_GET_MEDIA_TYPES_EX появится нужное мне значение, которое я смогу подставить в свою программу?

    Приветствую.

    Смысл использования того что вы не знаете, язык с, с++ могуч и труден в изучении...

    Если вы изучаете с#, Delphi - используйте их встроенные функции.

    Надеюсь следующий ваш пост не будет звучать так:

    Мне нужно написать программу выполняющую такой то функционал - как мне это сделать.

    Прошу прощения за оффтоп


    Я не волшебник, я только учусь. MCTS, CCNA. Если Вам помог чей-либо ответ, пожалуйста, не забывайте нажать на кнопку "Отметить как ответ" или проголосовать за "полезное сообщение". Disclaimer: Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции работодателя. Вся информация предоставляется как есть, без каких-либо на то гарантий. Блог IT Инженера, Яндекс Дзен, YouTube, GitHub.

    12 июля 2019 г. 14:44
    Модератор
  • "Я думаю, что не все программисты знают C++."

    Я бы сказал больше, многие из тех, кто пишет на С++, не знают С++.  Современный С++ - многопарадигменный язык с кучей возможностей, так что часто люди знают лишь какое-то его подмножество, и не знаю другие части языка. Словом, это зависит от того, какой именно смысл вкладывать в слово "знать" (см. ниже)

    "Да и можно ли знать язык, не программируя на нём. Я думаю, что через год уже забудешь его."

    Если под "знать" подразумевается "знать полностью", то да, нельзя. Но я вам в другой теме специально писал - Знать С++ на уровне чтения С++ 03 - в этой фразе каждое слово важно. Для того, чтобы читать код, далеко не обязательно знать язык полностью, тем более такой обширный по возможностям, как С++. Windows API и примеры к нему в документации не используют возможности новых версий языка, поэтому их знать необязательно. 

    Мне вот приходилось учиться читать Фортран, так как пример реализации нужного мне алгоритма (численное решение сложной системы дифференциальных уравнений) был только на нем.

    Да, конечно, если изучить язык и им не пользоваться, он забудется, но в случае С++ это вряд ли будет так. Существует очень большая кодовая база решений разных задач именно на С++: в виде ответах на форумах и stackoverflow, примеров в документациях к библиотекам, open-source ПО и т.п. Знание С++ редко остается невостребованным.

    12 июля 2019 г. 16:30
  • Win32 api функции можно использовать в других языках программирования. Это может потребоваться, если в языке программирования чего-то не хватает.

    Я думаю, что не все программисты знают C++. Да и можно ли знать язык, не программируя на нём. Я думаю, что через год уже забудешь его.

    Но так придумано кем-то, что можно использовать Win32 api функции в различных языках программирования. Зачем это было сделано? Не известно. Принадлежали бы Win32 api функции только для C++ и не было таких тем, которые я создаю.

    Нет, целую программу я не буду просить написать. Для этого есть платные услуги. Я задаю точечные вопросы.


    Это было сделано чтоб программисты достаточно высокой квалификации которые хорошо знают не только C++, но и детали работы ОС и конкретного процессора могли реализовывать нужный функционал в этих языках. Программисты средней квалификации воспользоваться готовыми определениям, например взятыми с PInvoke.net или же использовать C++, это обычно проще.

    Смотрите, вы даже не можете значение константы узнать, это слишком сложно... А что будет когда вы дойдете до реально сложных структур переменного размера, с указателями на другие структуры и с интересным выравниванием? 



    This posting is provided "AS IS" with no warranties, and confers no rights.

    12 июля 2019 г. 18:47
    Модератор
  • Непонятно в итоге что вы хотите получить?

    Вы уточните конечную цель и результат, возможно вам предложат иные способы реализации.

    По сути контекста темы, попахивает флудом и флеймом, так как не понятно что вы в итоге хотите получить, какой результат... просто знание Win API, не зная как и что с чем работает вам ничего не даст

    Если речь идет о дипломном проекте, то пишите его на том что хорошо знаете, а иначе как вы его защищать будете.

    Если речь идет о заказной разработки то по сути вам с готовым ПО отдадут его исходники и документацию по коду...

    Если речь идет об изучении c++, вам написали выше коллеги, с чего вам стоит начать...


    Я не волшебник, я только учусь. MCTS, CCNA. Если Вам помог чей-либо ответ, пожалуйста, не забывайте нажать на кнопку "Отметить как ответ" или проголосовать за "полезное сообщение". Disclaimer: Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции работодателя. Вся информация предоставляется как есть, без каких-либо на то гарантий. Блог IT Инженера, Яндекс Дзен, YouTube, GitHub.

    12 июля 2019 г. 19:35
    Модератор
  • В данной теме я хочу получить следующее. У меня есть имя константы win32 api, я хочу узнать её значение.

    Больше в этой теме ничего нет.

    Вам стоит начать с изучения раздела справки  Windows API Index

    Я не волшебник, я только учусь. MCTS, CCNA. Если Вам помог чей-либо ответ, пожалуйста, не забывайте нажать на кнопку "Отметить как ответ" или проголосовать за "полезное сообщение". Disclaimer: Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции работодателя. Вся информация предоставляется как есть, без каких-либо на то гарантий. Блог IT Инженера, Яндекс Дзен, YouTube, GitHub.

    12 июля 2019 г. 19:44
    Модератор