Все вопросы: [pinvoke]
253 вопросов
Как класс .NET Framework вызывает API платформы?
Мы знаем, что класс .NET Framework инкапсулирует Win32 API, теперь мне интересно, как класс .NET Framework вызывает Win32 API? На данный момент мне известно: Через P / Invoke VC ++ / CLI И 1, и 2 Кто-нибудь знает ответ?
C # Marshal / Pinvoke CBitmap?
Я не могу понять, как маршалировать CBitmap C ++ в класс C # Bitmap или Image. Мой импорт выглядит так: [DllImport (@ "test.dll", CharSet = CharSet.Unicode)] общедоступный статический extern IntPtr GetBitmap (System.IntPtr hwnd, int nBMPWIDTH, int nBMPHEIGHT); Раздел H-файла выг...
Вызов CreateFile на пути к физическому устройству в цикле
У меня есть код C #, который вызывает CreateFile на другом пути к физическому устройству каждый раз через цикл (например, \. \ PhysicalDrive1, затем \. \ PhysicalDrive2, ...) через pInvoke, а затем, используя возвращенный дескриптор,другие вещи низкого уровня Windows.В конце цикла он вызывает Cl...
Свернуть / Восстановить со скрытой панелью заголовков увеличивает окно форм Windows
Я столкнулся с этой проблемой в Windows Forms после использования PInvoke SetWindowLongPtr для удаления заголовка (WS_CAPTION) из окна Sizable. После этого всякий раз, когда окно свернуто или развернуто, а затем восстановлено до нормального состояния, оно увеличивается (по границе CaptionHeight ...
WTSQueryUserToken не работает, getlasterror () возвращает 1723
У меня есть служба Windows, работающая под учетными данными системной учетной записи. Служба периодически опрашивает окна на предмет идентификатора активного сеанса консоли, то есть интерактивного пользователя, вошедшего в систему Windows, а затем извлекает токен пользователя, связанный с иденти...
C #: передача массива строк в C ++ DLL
Я пытаюсь передать несколько строк из массива в свою библиотеку C ++. Функция библиотеки C ++: extern "C" _declspec(dllexport) void printnames(char** ppNames, int iNbOfNames) { for(int iName=0; iName < iNbOfNames; iName++) { OutputDebugStringA(ppNames[iName]); } } ...
C #: проблема с загрузкой C ++ DLL
В моем коде я могу загрузить «MessageBoxA» из user32.dll и использовать его, но если я попытаюсь загрузить и использовать функцию из моей DLL, у меня произойдет сбой. Мой код C #: [DllImport("SimpleDLL.dll")] static extern int mymean(int a, int b, int c); [DllImport("user32.dll")] static e...
C # - получить событие из SetWindowText
Мы пишем плагин для существующего приложения VB6 (через COM-взаимодействие), и нам требуются некоторые функции, которые они не поддерживают.Мы могли бы легко получить требуемую функциональность, если бы могли каким-то образом получать событие, когда текст определенного элемента управления в их о...
Как мне вызвать эту встроенную функцию dll из C #?
Вот собственная функция (Delphi 7): function Foo(const PAnsiChar input) : PAnsiChar; stdcall; export; var s : string; begin s := SomeInternalMethod(input); Result := PAnsiChar(s); end; Мне нужно вызвать это из C #, но имя библиотеки не известно во время компиляции, поэтому я дол...
Как я могу игнорировать поле при маршалинге структуры с помощью P / Invoke
Я хочу маршалировать структуру для использования с P / Invoke, но эта структура содержит поле, которое имеет отношение только к моему управляемому коду, поэтому я не хочу, чтобы он маршалировался, поскольку он не принадлежит собственномуструктура.Это вообще возможно?Я искал атрибут, похожий на N...
Логический маршаллинг с LayoutKind.Explicit, это сломано или не соответствует задумке?
Во-первых, считается, что тип логического типа имеет тип маршала по умолчанию, состоящий из четырехбайтовых значений. Итак, следующий код работает: struct A { public bool bValue1; public int iValue2; } struct B { public int iValue1; pu...
Как мне объявить эту структуру C для взаимодействия?
Мне нужно использовать устаревшую подпрограмму C в разрабатываемом приложении. Код здесь работает, но мне нужно преобразовать почти все поля в массивы символов, чтобы использовать его. Есть способ лучше? Я пробовал какую-то версию с использованием строк, но безрезультатно. Это код, найденный ...
Невозможно использовать pinvoke для отправки WM_CLOSE в окно проводника Windows
У меня есть приложение C #, которое использует метод Pinvoke SendMessage для отправки сообщения «закрыть окно» (WM_CLOSE / 16) в различные окна вне приложения.Это отлично работает, за исключением случаев, когда рассматриваемое окно является окном Windows Explorer.У меня нет исключения, но окно н...
Синтаксис F # для подписи P / Invoke с использованием MarshalAs
Я не уверен в синтаксисе этого.Я пытаюсь перевести этот код C # на F #. struct LASTINPUTINFO { public uint cbSize; public uint dwTime; } public class IdleTimer { [DllImport("User32.dll")] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool GetLastInputInfo(...
Поймать исключение DllNotFoundException из P / Invoke
Найдено сообщение с решением : Как сделатьЯ обрабатываю неудачный DllImport? Я пишу приложение, которое проверяет версию ОС, чтобы делать разные вещи в зависимости от того, использует ли хост версию Windows Vista или NT.В Vista-серии загружаются некоторые библиотеки DLL (с помощью DllImpor...
Есть ли управляемый API для kernel32.searchpath?
Есть ли управляемый API для kernel32.searchpath? т.е. не использовать пинвок. http://www.pinvoke.net/default.aspx/kernel32.searchpath
В чем разница между экземпляром делегата и указателем метода?
Я думал, что экземпляр делегата взаимозаменяем с экземпляром функции. Возьмите следующий код: delegate int AddDelegate(int a, int b); AddDelegate DelegateInstance; public void DoStuff() { //I can call this without a delegate "instance": MethodThatTakesAdd(Add); //I can also ...
Структура маршаллинга со встроенным указателем с C # на неуправляемый драйвер
Я пытаюсь связать C # (.NET Compact Framework 3.5) с драйвером потока Windows CE 6 R2 с помощью вызовов P / Invoked DeviceIoControl (). Для одного из кодов IOCTL драйверу требуется входной буфер DeviceIoControl, который представляет собой следующую неуправляемую структуру, содержащую встроенный ...
PInvoke на платформе Windows Mobile
Итак, я пытаюсь вызвать функцию, которая есть в моей неуправляемой dll C ++. void foo(char* in_file, char * out_file) В моем приложении C # я объявляю ту же функцию, что и [DllImport("dll.dll")] public static extern void foo(byte[] in_file, byte[] out_file); Фактические параметры, ...
Отправить сообщение в адресную строку проводника Windows
Как отправить сообщение в адресную строку проводника Windows на C #?
Получение заголовка / описания кода системной ошибки Windows из его шестнадцатеричного числа
Я возился с некоторыми функциями Windows, используя p / invoke.Иногда я получаю код ошибки, отличный от ERROR_SUCCESS (такое странное имя). Есть ли способ найти их в программе?Например, если я получаю ошибку 1017. Могу ли я сообщить пользователю Система попыталась загрузить или восста...
Вызов неуправляемого кода из C # - возврат структуры с массивами
[РЕДАКТИРОВАТЬ] Я изменил источник, как предложил Стивен Мартин (выделено жирным шрифтом). И также добавил исходный код C ++. Я хотел бы вызвать неуправляемую функцию в самописной dll C ++. Эта библиотека считывает общую память машины для получения информации о состоянии стороннего программно...
Может ли кто-нибудь найти эквивалентный код С #
Это код C ++ CreateImageSnapshot, (int, eImageFormat, BYTE**) в VC ++, который мы реализуем BYTE** PlayerLib::CreateImageSnapshot (iPlayerRef,static_cast<eImageFormat>(lFormat), &pBuffer); здесь мне нужно импортировать dll и проделать тот же процесс в C # .. Может ли кт...
Разъяснение, как правильно объявлять интерфейсы взаимодействия
Это просто вопрос о том, как написать код для импорта COM. Насколько я понимаю, правильная реализация интерфейсов взаимодействия состоит в следующем: Все сигнатуры методов должны соответствовать совместимым образом. Методы должны появляться в интерфейсе .Net в том же порядке, что и в не...
EntryPointNotFoundException при использовании TaskDialog в C #
Я использую следующий код для вызова TaskDialog. [DllImport("ComCtl32", CharSet = CharSet.Unicode, PreserveSig = false)] internal static extern void TaskDialogIndirect( [In] ref TASKDIALOGCONFIG pTaskConfig, [Out] out int pnButton, [Out] out int pnRadioButton, ...
Ошибка SetWindowsHookEx на beta2 x64
Вздох, у меня есть код из codeproject ( http: //www.codeproject.com / KB / cs / globalhook.aspx ) для перехвата глобальных событий клавиатуры и мыши.Неожиданно теперь, когда я установил бета-версию 2 Visual Studio 2010 и .NET framework 4.0, я ломаюсь на этот код: hKeyboardHook = S...
Открыть / закрыть соединение с UNC без учетных данных
У меня есть клиентское приложение .NET, которое периодически теряет соединение с общим ресурсом UNC, где пользователь либо находится в домене, либо имеет локальную учетную запись с такими же учетными данными на сервере.И SO, и Google имеют множество примеров использования LogonUser и WNetAddConn...
PInvoke - чтение значения строкового поля - «Попытка чтения или записи в защищенную память»
У меня проблемы с доступом к некоторым строковым полям в COM-интерфейсе.Вызов целочисленных полей не приводит к ошибке.При попытке вызвать clientID(), deviceID() или key() я получаю старую ошибку «Попытка чтения или записи в защищенную память» . Вот исходный код интерфейса: (код взят из з...
PInvoke - как представить поле из COM-интерфейса
Я имею в виду структуру COM, которая начинается следующим образом: [scriptable, uuid(ae9e84b5-3e2d-457e-8fcd-5bbd2a8b832e)] interface nsICacheSession : nsISupports { /** * Expired entries will be doomed or evicted if this attribute is set to * true. If false, expired entries wi...