是否可以禁用右键单击并关闭messagebox ctype python上的所有内容?

时间:2016-02-15 08:08:36

标签: python python-2.7 messagebox right-click ctype

我有一段代码显示了在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)

enter image description here

1 个答案:

答案 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")
...

依旧......