Получение WindowId из дескриптора окна (HWND) без Windows App SDKC#

Место общения программистов C#
Anonymous
Получение WindowId из дескриптора окна (HWND) без Windows App SDK

Сообщение Anonymous »

Я хочу получить WindowId из HWND из F# и .NET, чтобы иметь возможность вызывать другие API-интерфейсы WinRT, которым нужен WindowID. Я думаю, это сделано в WIL:

Код: Выделить всё

    inline winrt::Windows::UI::WindowId GetWindowIdFromWindow(HWND hwnd)
{
ABI::Windows::UI::WindowId abiWindowId;
winrt::check_hresult(::GetWindowIdFromWindow(hwnd, &abiWindowId));
return winrt::Windows::UI::WindowId{ abiWindowId.Value };
}
Эквивалентная функция Win32Interop.GetWindowIdFromWindow(IntPtr) доступна в Windows App SDK, однако я не могу использовать SDK из проекта F#, поскольку SDK входит в состав WinUI, который не работает с F#.
Мне хотелось бы вызвать некоторую внешнюю функцию из F#, которая заменяет мой HWND на WindowId, но я не знаю, что мне нужно импортировать или вызывать.
 
Возможные обходные пути:
  • Реализовать несколько обходных путей, чтобы разрешить ссылку на Windows App SDK.
  • Создайте отдельный проект C#, который ссылается на Windows App SDK и предоставляет функцию Windows App SDK GetWindowIdFromWindow. (И пометьте все ресурсы как частные.)

Вернуться в «C#»