Использование Windows LockResource для доступа к данным двоичных ресурсов - PullRequest
0 голосов
/ 11 марта 2010

Во-первых, мой конкретный вопрос: при попытке получить доступ к необработанным данным курсора мой вызов LockResource завершается успешно, но вызов SizeOfResource сообщает мне, что данные имеют размер всего 20 байт, что слишком мало ...

Что я действительно пытаюсь сделать: я изучаю возможности для перемещения курсоров из приложения сервера смешанного кода в клиентское приложение CLR. Моя (вполне возможно, наивная) идея - использовать LockResource для доступа к двоичным данным ресурса (встроенного в собственную dll), передавать эти данные клиенту и обрабатывать их так же, как данные ресурса, которые были получены из локального сборка с использованием Assembly.GetManifestResourceStream для получения потока ресурсов и Resources.ResourceSet для итерации по ресурсам. Я надеюсь, что, поскольку .NET, несомненно, делает те же системные вызовы, что и нативный код, это имеет смысл. С другой стороны ...

У кого-нибудь есть комментарии или лучшие идеи? (Конечно, было бы проще просто предоставить совместимый пакет ресурсов на клиенте и удалить некоторый идентификатор курсора, но у нас, похоже, есть требование динамического добавления курсоров во время выполнения.)

Любые комментарии с благодарностью получены!

1 Ответ

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

В конце концов, я использовал вызовы Win32, чтобы получить растровое изображение курсора, сериализовал это и местоположение горячей точки для клиента и заново создал курсор там, используя Win32 API. Получив HCURSOR cient-side, вы можете, если хотите, создать из него .NET WinForms Cursor (но такой объект не может быть сериализован с использованием простого .NET - иначе это было бы намного проще, чем удаленно!) ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...