GWL_EXSTYLE
时间: 2023-07-14 16:01:07 浏览: 251
GWL_EXSTYLE是SetWindowLong函数中用于指定窗口的扩展样的窗口属性索引。通过修改GWL_EXSTYLE属性,可以改变窗口的扩展样式,例如窗口的透明度、窗口的层级、窗口的阴影效果等。
常见的GWL_EXSTYLE属性值包括:
- WS_EX_TRANSPARENT:使窗口透明,可以透过窗口看到后面的内容。
- WS_EX_LAYERED:使窗口支持透明度,可以通过设置透明度来调整窗口的不透明度。
- WS_EX_TOPMOST:使窗口总是置顶显示,无论其他窗口是否激活。
- WS_EX_TOOLWINDOW:将窗口显示为工具窗口,通常没有任务栏按钮。
- WS_EX_WINDOWEDGE:在窗口边缘显示一个边框。
- WS_EX_CLIENTEDGE:在窗口客户区域显示一个凸起的边框。
可以通过使用SetWindowLong函数,将修改后的扩展样式值传递给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")
```
我希望这可以帮助您解决问题。
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 常量也需要根据系统进行相应的修改。
阅读全文