Оболочка C # для функции C ++ — Запускать один раз, работает нормально. Запустить дважды, программа зависает

Поэтому я работаю с оболочкой c # в библиотеке C ++ и пытаюсь добавить еще одну функцию. Я создал объявление функции в C #, и она работает. Но это работает только один раз. Когда я пытаюсь запустить его во второй раз, программа зависает.

Определения и декларации взаимодействия https://github.com/joshglenn/interception-cs/blob/master/kchordr/Program.cs

код, который я запускаю, находится здесь: https://github.com/joshglenn/interception-cs/blob/master/kchordr/InterceptionDemoForm.cs

Функция, которая работает в первый раз, но зависает при втором запуске, называется GetHardwareID ().

Мой вопрос, как я могу устранить это? Кажется ли это утечка памяти?

0

Решение

чтобы получить код ошибки из вызова WinAPI, используйте Marshal.GetLastWin32Error ();
Также не забудьте украсить ваш звонок с помощью «Set Last Error = true»;

Вот пример, который я имею для вызова всплывающего окна на значке панели задач:

[DllImport("shell32.dll",SetLastError=true)]
public static extern bool Shell_NotifyIcon(uint dwMessage, [In] ref NotifyIconData pnid);

использование:

//call your code like you usually call the method
bool callResult = Caller.Shell_NotifyIcon((uint)NotifyIconMessage.NIM_ADD, ref n);

//afther that call the GetLastError to get the error code
int errorCode = Marshal.GetLastWin32Error();

гугли код ошибки и посмотри что это значит

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]