windll.user32.GetWindowLongPtr(hwnd, self.GWL_EXSTYLE)
时间: 2024-05-30 10:11:28 浏览: 10
这是一个 Windows API 函数调用,用于获取指定窗口的扩展风格。具体来说,它会返回一个指定窗口的扩展风格值,该值可以用于识别该窗口的一些特殊属性,如是否具有透明度、是否是工具窗口等等。
其中,`hwnd` 表示要获取扩展风格的窗口的句柄,`self.GWL_EXSTYLE` 是一个常量,表示要获取的扩展风格的类型,具体取值可以参考 Windows API 的文档。
需要注意的是,在 64 位 Windows 系统上,`GetWindowLongPtr` 函数会返回一个指针大小的值,而在 32 位系统上则返回一个 32 位的值。因此,为了保证代码的可移植性,建议使用 `GetWindowLongPtr` 而不是 `GetWindowLong`。
相关问题
windll.user32.GetWindowLongPtr(hwnd, self.GWL_EXSTYLE) 这段代码在我的系统上不起作用。我在使用win10
在 Windows 10 上,GetWindowLongPtr 函数被建议替换为 GetWindowLongPtrA 或 GetWindowLongPtrW 函数,并且需要在代码中使用条件编译指令。
请尝试使用以下代码:
```python
import sys
import ctypes
if sys.platform.startswith('win32'):
GWL_EXSTYLE = -20
if sys.maxsize > 2**32:
user32 = ctypes.WinDLL('user32', use_last_error=True)
GetWindowLongPtr = user32.GetWindowLongPtrW
else:
user32 = ctypes.windll.user32
GetWindowLongPtr = user32.GetWindowLongPtrA
GetWindowLongPtr.restype = ctypes.c_long
GetWindowLongPtr.argtypes = (ctypes.c_void_p, ctypes.c_int)
hwnd = ...
exstyle = GetWindowLongPtr(hwnd, GWL_EXSTYLE)
```
这里我们先根据系统位数选择使用 GetWindowLongPtrA 或 GetWindowLongPtrW 函数,然后设置返回值类型和参数类型并调用函数即可。注意 GWL_EXSTYLE 常量也需要根据系统进行相应的修改。
windll.user32.GetWindowLongPtrW(hwnd, self.GWL_EXSTYLE) 这段代码在我的系统上报错。我在使用win10
这个问题可能是因为在 Windows 10 中,GetWindowLongPtrW 函数已被标记为弃用。您可以使用 GetWindowLongPtrA 或 GetWindowLongW 函数来代替。
您可以尝试以下代码,它将使用 GetWindowLongW 函数:
```
import ctypes
user32 = ctypes.windll.user32
gdi32 = ctypes.windll.gdi32
# 定义常量
GWL_EXSTYLE = -20
WS_EX_LAYERED = 0x00080000
# 获取窗口句柄
hwnd = user32.GetDesktopWindow()
# 获取窗口扩展样式
style = user32.GetWindowLongW(hwnd, GWL_EXSTYLE)
# 检查窗口是否启用了 WS_EX_LAYERED 扩展样式
if style & WS_EX_LAYERED:
print("Enabled")
else:
print("Not enabled")
```
如果您需要使用 GetWindowLongPtrW 函数,您可以使用 ctypes.wintypes 模块中的 LONG_PTR 数据类型来指定函数返回值的类型。例如:
```
import ctypes
from ctypes import wintypes
user32 = ctypes.windll.user32
gdi32 = ctypes.windll.gdi32
# 定义常量
GWL_EXSTYLE = -20
WS_EX_LAYERED = 0x00080000
# 获取窗口句柄
hwnd = user32.GetDesktopWindow()
# 获取窗口扩展样式
style = user32.GetWindowLongPtrW(hwnd, GWL_EXSTYLE)
# 检查窗口是否启用了 WS_EX_LAYERED 扩展样式
if style & WS_EX_LAYERED:
print("Enabled")
else:
print("Not enabled")
```
我希望这可以帮助您解决问题。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)