Нужен C Sharp win32, PInvoke API - PullRequest
       12

Нужен C Sharp win32, PInvoke API

1 голос
/ 23 сентября 2010

Долгое время слушатель, впервые звонящий. Кто-нибудь знает хорошую библиотеку взаимодействия для Win32API?

Я нашел pinvok.net, который в порядке. (FWIW Я получил надстройку для работы с MSVS 2010, следуя инструкциям здесь: http://www.red -gate.com / SupportCenter / GeneralContent.aspx? С = * База знаний 1005 * \ PInvoke \ KB200711000198.htm и используя 10,0 вместо 9,0)

... и Windows API Code Pack 1.1 от MSDN, кажется, не имеет базовых возможностей Win32 из user32.dll или я что-то упустил?

Подробнее ... Я пытаюсь взять внешнее окно и сделать его дочерним элементом элемента управления в моей управляемой System.Windows.Form (встроенный графический интерфейс в панели или вкладке моей основной формы) Исследования здесь и в Google, кажется, что Win32 / user32.dll путь. Мое приложение - это фреймворк, который запускает сторонние графические интерфейсы (dll и exes). Все сторонние коды / формы являются неуправляемым (в основном MSVC) кодом. Эти неуправляемые формы запускаются из моей иерархии процессов. Я бы предпочел остаться в .NET, если это возможно.

Ответы [ 2 ]

2 голосов
/ 23 сентября 2010

Лучшей доступной библиотекой взаимодействия является .NET Framework. User32.dll очень хорошо упакован Windows Forms.

Пакет кода Windows API концентрируется на добавлении API-интерфейсов в Vista и Win7. Это не были дополнения к user32, в основном оболочка.

Вы, вероятно, получите лучший ответ, если будете точно знать, какие именно API-интерфейсы user32 вы хотите использовать.


После просмотра редактирования: то, что вы пытаетесь сделать, явно запрещено документацией Win32 SDK. Родитель окна должен принадлежать тому же процессу. Однако в Windows есть некоторые взломы приложений, разработанные для поддержки программ Windows 3.x, в которых такого ограничения не было. Потому что он не поддерживает многопоточность.

Вы можете попробовать, но будьте осторожны, вы аннулируете гарантию. P / Invoke SetParent (). Посетите pinvoke.net, чтобы получить необходимую декларацию.

1 голос
/ 23 сентября 2010

Большая часть API-интерфейса Windows 32 предоставляется в .NET в самой структуре - поэтому редко требуется P / Invoke в user32.dll. Вам лучше использовать управляемые версии фреймворка.

Когда вам нужно настроить вызов P / Invoke, pinvoke.net - отличный ресурс для конкретного API, необходимого для вызова в большинстве Win32 API.

...