我有一段代码显示了在python中使用ctype lib实现的消息框。 我的问题是有一种方法可以在创建多个ctype消息框时取消关闭全部或右键单击吗?
def msgbox(self,hwnd,msg,thid,pid):
MB_OK = 0x0
MB_OKCXL = 0x01
MB_YESNOCXL = 0x03
MB_YESNO = 0x04
MB_HELP = 0x4000
ICON_EXLAIM=0x30
ICON_INFO = 0x40
ICON_STOP = 0x10
MB_TOPMOST=0x40000
MB_SYSTEMMODAL=0x1000
"""
HEX VALUE LINK
https://www.autoitscript.com/autoit3/docs/functions/MsgBox.htm
"""
writeLogs = WriteLogs(
pathLog = app_config['path_logs'] +"\\"+strftime("%Y_%m_%d")+".log",
timedate = time.strftime("%m/%d/%Y %I:%M:%S %p")
)
writeLogs.appendLogA(msg)
ctypes.windll.user32.MessageBoxA(hwnd, msg+str(operatorMessage), "[Error]", MB_OK | ICON_STOP | MB_SYSTEMMODAL)
答案 0 :(得分:1)
您可以发送win32con.WM_CLOSE
来关闭消息框:
import win32con
ctypes.windll.user32.PostMessageA(hwnd, win32con.WM_CLOSE, 0, 0)
要禁用右键单击任务栏,您可以将消息框附加到没有图标的窗口,以便它在任务栏上不可见(无右键单击)。
import ctypes
import win32con
import win32gui
style = win32con.MB_OK
wc = win32gui.WNDCLASS()
wc.lpszClassName = "TaskbarDemo"
rclass = win32gui.RegisterClass(wc)
hwnd = win32gui.CreateWindow(rclass, "Taskbar Demo", style, \
0, 0, win32con.CW_USEDEFAULT, win32con.CW_USEDEFAULT, \
0, 0, None, None)
MessageBox = ctypes.windll.user32.MessageBoxA
MessageBox(hwnd, 'Message', 'Window title', 0)
编辑:
def main(name):
try:
...
wc.lpszClassName = name
...
用以下方式调用:
main("TaskbarDemo")
main("zefaz")
...
依旧......