[英]Need help with RegisterWindowMessage and SendMessage from c++ to c#
我在C#中有以下代码:
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
static extern uint RegisterWindowMessage(string lpProcName);
[DllImport("user32.dll")]
private static extern IntPtr SendMessage(
IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);
我需要将其从C ++转换为C#:
UINT UWM_UART_CTRL_TRS = ::RegisterWindowMessage(_T("BT_UARTCTRL_TRANSFER"));
::SendMessage(HWND_BROADCAST, UWM_UART_CTRL_TRS, 0, 0);
和这个:
UINT UWM_UART_CTRL_TRS = ::RegisterWindowMessage(_T("BT_UARTCTRL_TRANSFER"));
::SendMessage(HWND_BROADCAST, UWM_UART_CTRL_TRS, 1, 0);
提前致谢
应该很简单。 您需要将PInvoke定义更改为包含它们的类内的public
:
public class Win32Api
{
[DllImport("user32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
public static extern uint RegisterWindowMessage(string lpString);
[DllImport("user32.dll", SetLastError = true)]
public static extern IntPtr SendMessage(
IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
}
然后,对于呼叫,它们将如下所示:
uint UWM_UART_CTRL_TRS = Win32Api.RegisterWindowMessage("BT_UARTCTRL_TRANSFER");
Win32Api.SendMessage(HWND_BROADCAST, UWM_UART_CTRL_TRS, (IntPtr)0, (IntPtr)0);
和这个:
uint UWM_UART_CTRL_TRS = Win32Api.RegisterWindowMessage("BT_UARTCTRL_TRANSFER");
Win32Api.SendMessage(HWND_BROADCAST, UWM_UART_CTRL_TRS, (IntPtr)1, (IntPtr)0);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.