Как передать нулевой указатель на Win32 API в C # .Net? - PullRequest
9 голосов
/ 24 марта 2010

Я смотрю на функцию RegisterHotKey:

http://msdn.microsoft.com/en-us/library/ms646309(VS.85).aspx

BOOL RegisterHotKey(
  __in  HWND hWnd,
  __in  int id,
  __in  UINT fsModifiers,
  __in  UINT vk
);

Я использовал IntPtr для передачи первого аргумента, который в большинстве случаев работает нормально. Но теперь мне нужно сознательно передать нулевой указатель в качестве первого аргумента, что IntPtr (намеренно) не подойдет. Я новичок в .Net, и это меня озадачило. Как я могу это сделать?

1 Ответ

18 голосов
/ 24 марта 2010

Используйте IntPtr.Zero для NULL

Например:

public void Example() {
  ...
  RegisterHotKey(IntPtr.Zero, id, mod, vk);
}

[DllImportAttribute("user32.dll", EntryPoint="RegisterHotKey")]
[return: MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.Bool)]
public static extern bool RegisterHotKey(
  IntPtr hWnd, 
  int id, 
  uint fsModifiers, 
  uint vk);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...