Как узнать, что такое оконные константы, такие как WM_MOUSEMOVE и WM_MOUSEDOWN, если я использую C #? - PullRequest
0 голосов
/ 18 апреля 2010

Я пишу код, который использует некоторые неуправляемые вызовы для функций user32, таких как SetWindowsHookEx и т. Д.

Это требует, чтобы я использовал много констант, которые я не уверен, какова их ценность. Например, если я хочу установить хук в качестве низкоуровневого хука мыши, мне нужно знать, что WM_MOUSE_LL = 14.

Где я могу их найти?

Мне нужно знать, что такое WM_MOUSEMOVE, WM_MOUSEDOWN и другие. Когда я имею дело с кодом взаимодействия, какой самый простой способ для меня найти это? Могу ли я импортировать их в C #, чтобы они были определены?

Ответы [ 3 ]

2 голосов
/ 18 апреля 2010

Это на твоей машине. Если у вас VS2008, откройте c: \ program files \ microsoft skds \ windows \ v6.0a \ winuser.h и найдите идентификатор сообщения. Нет, вы не можете использовать этот файл в программе на C #, он написан на C.

Доступен инструмент для перевода этих заголовочных файлов SDK в C #, загрузите P / Invoke Interop Assistant . Перейдите на вкладку «Поиск SigImp» и введите искомый идентификатор. Нажмите Generate, чтобы создать объявление C #. Это нормально для идентификаторов сообщений, но становится уродливым для функций API. Объявления автоматически переводятся, довольно шумные и не всегда оптимальные. Дважды проверьте сгенерированное определение с тем, что доступно на pinvoke.net

1 голос
/ 18 апреля 2010

Знаете ли вы о PInvoke.net ?

0 голосов
/ 18 апреля 2010

Иногда на страницах MSDN их перечисляются, но я считаю, что лучше всего открыть программу на C ++ и щелкнуть правой кнопкой мыши на константе и сказать перейти к определению.

Другой способ мгновенно узнать почти что-либо - использовать Поиск кода Google . Много раз вы найдете ответ в заголовочных файлах WINE.

...