Как преобразовать дескриптор, полученный из свойства Handle формы/элемента управления, в IWin32Window ^?Преобразование дескриптора окна IntPtr в IWin32Window^
ответ
(Это получает вас объект управления, который реализует интерфейс IWin32Window.)
Ев.
IntPtr myWindowHandle = IntPtr(someVal);
IWin32Window^ w = Control::FromHandle(myWindowHandle);
Обратите внимание, что это зависит от того, что рукоятка «приобретается из свойства« Ручка формы/управления ». Вы не можете использовать эту технику с помощью дескриптора окна Win32.
Это похоже на то, о чем вы просите. Я никогда не делал это сам, но это, кажется, относительно проста:
Creating a IWin32Window from a Win32 Handle
Успехов!
Существует более простой метод, который поддерживается непосредственно платформой .NET без необходимости создания собственного пользовательского класса. Вы можете использовать это с любым произвольным окном.
Учитывая ptrWindowHandle типа IntPtr:
using System.Windows.Forms;
NativeWindow nativeWindow = new NativeWindow();
nativeWindow.AssignHandle(ptrWindowHandle);
System.Windows.Forms.NativeWindow реализует интерфейс с IWin32Window.
Вы также можете использовать статический 'NativeWindow.FromHandle (ptrWindowHandle);' –
@MattSmith. Я обнаружил, что он должен быть назначен. FromHandle не работает для меня, если AssignHandle не был использован заранее. Например, это работает: NativeWindow nativeWindow = new NativeWindow(); nativeWindow.AssignHandle (GetConsoleWindow()); box.ShowDialog (NativeWindow.FromHandle (GetConsoleWindow())); '(или даже' box.ShowDialog (nativeWindow); ') ... но этот однострочный без назначения не имеет значения:' box.ShowDialog (NativeWindow. FromHandle (GetConsoleWindow())); ' – Jay
- 1. Отладка дескриптора окна в Winforms
- 2. Изменение цвета фона окна, с учетом дескриптора IntPtr
- 3. Поиск дескриптора окна WPF
- 4. Преобразование Pen в IntPtr
- 5. Передайте управляемый параметр дескриптора окна IntPtr в C++ COM dll function expecting HWND
- 6. Преобразование структуры к IntPtr
- 7. Преобразование системы :: IntPtr в HINSTANCE
- 8. Преобразование массива структур в IntPtr
- 9. Преобразование дескриптора дескриптора opencv в матрицу
- 10. C# /. NET ThreadException - Ошибка создания дескриптора окна
- 11. Ошибка Создание дескриптора окна
- 12. «Ошибка создания дескриптора окна»
- 13. Обработка недействительного дескриптора окна
- 14. C# получить родительский процесс из дескриптора окна
- 15. Проверка дескриптора окна Win32
- 16. Получение дескриптора окна в C#
- 17. IWin32Window в C#?
- 18. Преобразование IntPtr в int * в C#?
- 19. Преобразование Дескриптор файла дескриптора
- 20. Преобразование массива указателей в массив IntPtr
- 21. Получить индекс окна z из дескриптора окна
- 22. Получить окно дескриптора вызывающего окна
- 23. «Ошибка при создании дескриптора окна»
- 24. Win32Exception - ошибка создания дескриптора окна?
- 25. Получение дескриптора текущего окна GetWindowText?
- 26. Преобразование массива элементов дескриптора функции в один массив дескриптора функции
- 27. Получить идентификатор родительского процесса с помощью дескриптора окна
- 28. Получение дескриптора дочернего окна в C++
- 29. Как получить имя окна процесса и имя maintitlame с помощью дескриптора окна или идентификатора?
- 30. Marshal.Copy, копируя массив IntPtr в IntPtr
James, я отредактировал квалификацию в вашем ответе, потому что люди, приезжающие сюда из более общего поиска в 'IntPtr' и' IWin32Window', могут читать только заголовок вопроса и не оценивать ограничение в детали вопроса. Надеюсь, все в порядке. – itowlson
Нет, это хорошая редакция. Вероятно, вы спасли какого-то несчастного будущего программиста с часами раскалывания головы, удивляясь, почему он не может магически создать объект Control/IWin32Window из необработанного HWND. :) – 2010-03-20 07:54:28