簡體   English   中英

從C ++到C#需要RegisterWindowMessage和SendMessage的幫助

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM