Win32API函数

Win32API函数

Tim 29 2024-10-22
https://learn.microsoft.com/zh-cn/windows/win32/api/

sendMessage

将指定的消息发送到一个或多个窗口。 官方文档 参考文档

语法

C++

LRESULT SendMessage(
  [in] HWND   hWnd,
  [in] UINT   Msg,
  [in] WPARAM wParam,
  [in] LPARAM lParam
);

C#

[DllImport("User32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam); 

参数

第一个是窗口句柄,窗口可以是任何类型的屏幕对象

第二个是用于区别其他消息的常量值

第三个通常是一个与消息有关的常量值,也可能是窗口或控件的句柄。可选参数

第四个通常是一个指向内存中数据的指针。在C#中消息需要定义成windows系统中的原始的16进制数字,比如 const int WM_Lbutton = 0x201; 定义了鼠标的左键点击消息

hWnd

窗口的句柄,其窗口过程将接收消息。 如果此参数 HWND_BROADCAST ( (HWND) 0xffff) ,则消息将发送到系统中的所有顶级窗口,包括禁用或不可见的无所有者窗口、重叠窗口和弹出窗口;但消息不会发送到子窗口。

消息发送受 UIPI 约束。 进程线程只能将消息发送到完整性级别较低或相等进程的线程的消息队列。

Msg

要发送的消息。系统定义的消息

wParam

其他的消息特定信息。

ShowWindowAsync

设置指定窗口的显示状态。 官方文档

语法

C++

BOOL ShowWindow(
  [in] HWND hWnd,
  [in] int  nCmdShow
);

C#

  /// <summary>
  /// 设置由不同线程产生的窗口的显示状态
  /// </summary>
  /// <param name="hWnd">窗口句柄</param>
  /// <param name="cmdShow">窗口如何显示</param>
  /// <returns></returns>
 [DllImport("User32.dll")]
 private static extern bool ShowWindowAsync(IntPtr hWnd, int cmdShow);

SetForegroundWindow

将创建指定窗口的线程引入前台并激活窗口。 键盘输入将定向到窗口,并为用户更改各种视觉提示。 系统为创建前台窗口的线程分配的优先级略高于其他线程。 官方文档

语法

C++

BOOL SetForegroundWindow(
  [in] HWND hWnd
);

C#

/// <summary>
/// 把创建给定窗口的线程放到前台并激活该窗口                                 
/// </summary>
/// <param name="hWnd">窗口句柄</param>
/// <returns></returns>
[DllImport("User32.dll")]
private static extern bool SetForegroundWindow(IntPtr hWnd);