MAKELONG用法

本文介绍了MAKELONG宏的用法,该宏通过组合两个16位值来创建一个32位无符号整数。详细解释了参数含义及返回值,并提供了具体的示例代码。

The   MAKELONG   macro   creates   an   unsigned   32-bit   value   by   concatenating   two   given   16-bit   values.    
   
  DWORD   MAKELONG(  
      WORD   wLow,     //   low-order   word   of   long   value  
      WORD   wHigh     //   high-order   word   of   long   value  
  );  
     
  Parameters  
  wLow    
  Specifies   the   low-order   word   of   the   new   long   value.    
  wHigh    
  Specifies   the   high-order   word   of   the   new   long   value.    
  Return   Values  
  The   return   value   is   an   unsigned   32-bit   value.    
   
  Remarks  
  The   MAKELONG   macro   is   defined   as   follows:    
   
  #define   MAKELONG(a,   b)   /    
          ((LONG)   (((WORD)   (a))   |   ((DWORD)   ((WORD)   (b)))   <<   16))  

 

 

DWORD MAKELONG(
WORD wLow, // low-order word of long value
WORD wHigh // high-order word of long value
);

SendMessage(hWnd,WM_LBUTTONDOWN,NULL,MAKELONG(x*cxBlock,y*cyBlock));

 

处理消息:    x = LOWORD(lParam)/cxBlock;
                        y = HIWORD(lParam)/cyBlock;

### win32gui 和 win32con 库的具体用法 `win32gui` 和 `win32con` 是 Python 的 `pywin32` 扩展库中的两个模块,分别用于与 Windows GUI 进行交互和定义常量。以下是这两个库的详细用法及示例代码。 #### 1. `win32gui` 模块 `win32gui` 提供了与 Windows 图形用户界面(GUI)相关的功能,例如创建窗口、操作窗口句柄、发送消息等[^2]。 - **创建窗口** 使用 `win32gui.CreateWindow` 方法可以创建一个简单的窗口或控件。 ```python import win32gui import win32con hwnd = win32gui.CreateWindow( "STATIC", "Hello World!", win32con.WS_VISIBLE | win32con.WS_CHILD, 10, 10, 200, 50, None, None, None, None ) ``` - **查找窗口** 使用 `win32gui.FindWindow` 或 `win32gui.FindWindowEx` 可以根据窗口类名或标题查找窗口句柄。 ```python hwnd = win32gui.FindWindow(None, "窗口标题") if hwnd: print("找到窗口:", hwnd) else: print("未找到窗口") ``` - **鼠标事件模拟** 结合 `win32api` 和 `win32con`,可以通过 `win32gui.SendMessage` 模拟鼠标点击。 ```python import win32gui import win32api import win32con def click_window(hwnd, x, y): long_position = win32api.MAKELONG(x, y) win32gui.SendMessage(hwnd, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, long_position) win32gui.SendMessage(hwnd, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, long_position) hwnd = win32gui.FindWindow(None, "窗口标题") if hwnd: click_window(hwnd, 100, 100) ``` #### 2. `win32con` 模块 `win32con` 是一个常量定义模块,提供了 Windows API 中使用的各种常量值[^1]。 - **常用常量** - 窗口样式:`win32con.WS_VISIBLE`、`win32con.WS_CHILD` 等。 - 消息类型:`win32con.WM_ACTIVATE`、`win32con.WM_LBUTTONDOWN` 等。 - 键盘按键:`win32con.VK_RETURN`、`win32con.VK_SPACE` 等。 - **示例代码** 下面是一个使用 `win32con` 定义常量并发送键盘消息的示例: ```python import win32api import win32con def send_key(key_code): win32api.keybd_event(key_code, 0, 0, 0) # 按下键 win32api.keybd_event(key_code, 0, win32con.KEYEVENTF_KEYUP, 0) # 释放键 send_key(win32con.VK_RETURN) # 模拟按下回车键 ``` #### 3. 综合示例:模拟鼠标点击和键盘输入 以下代码展示了如何结合 `win32gui` 和 `win32con` 实现鼠标点击和键盘输入。 ```python import win32gui import win32api import win32con def simulate_click(hwnd, x, y): long_position = win32api.MAKELONG(x, y) win32gui.SendMessage(hwnd, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, long_position) win32gui.SendMessage(hwnd, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, long_position) def simulate_key_press(key_code): win32api.keybd_event(key_code, 0, 0, 0) # 按下键 win32api.keybd_event(key_code, 0, win32con.KEYEVENTF_KEYUP, 0) # 释放键 # 示例:点击窗口中的某个位置,并按下回车键 hwnd = win32gui.FindWindow(None, "窗口标题") if hwnd: simulate_click(hwnd, 100, 100) # 点击坐标 (100, 100) simulate_key_press(win32con.VK_RETURN) # 按下回车键 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值