溫馨提示×

?C#中RegisterWindowMessage和PostMessage怎么用

?C#
小億
117
2023-10-30 13:31:28
欄目: 編程語言

在C#中,可以使用RegisterWindowMessagePostMessage來進(jìn)行窗口消息的注冊和發(fā)送。

  1. 注冊窗口消息:
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern uint RegisterWindowMessage(string lpString);

// 注冊窗口消息
uint message = RegisterWindowMessage("MY_CUSTOM_MESSAGE");
  1. 發(fā)送窗口消息:
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern bool PostMessage(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam);

// 發(fā)送窗口消息
IntPtr hWnd = IntPtr.Zero; // 目標(biāo)窗口的句柄
IntPtr wParam = IntPtr.Zero; // 消息的wParam參數(shù)
IntPtr lParam = IntPtr.Zero; // 消息的lParam參數(shù)
bool result = PostMessage(hWnd, message, wParam, lParam);

需要注意的是,PostMessage函數(shù)是異步發(fā)送消息,即發(fā)送消息后不會等待目標(biāo)窗口的處理結(jié)果。如果需要等待目標(biāo)窗口處理完畢并獲取返回結(jié)果,可以使用SendMessage函數(shù)進(jìn)行同步發(fā)送消息。

另外,RegisterWindowMessage函數(shù)用于注冊一個(gè)自定義的窗口消息,返回值為消息的唯一標(biāo)識符。這個(gè)唯一標(biāo)識符可以用于區(qū)分不同的窗口消息,確保消息的唯一性。

0