如何使用 wxPython 将 Windows UAC Shield 覆盖层放在按钮上?

发布于 2024-09-06 12:15:29 字数 519 浏览 7 评论 0原文

我有一个按钮将启动一个需要 UAC 提升的进程。我想在按钮上显示 Windows UAC 屏蔽覆盖层,如何在 wxPython 中执行此操作? 该应用程序只能在 Windows 上运行,因此我无需担心它无法在其他系统上运行。

编辑2: 明白了:

BCM_SETSHIELD = 0x0000160C
btn_apply = wx.Button(self, wx.ID_APPLY, "Apply",
                      wx.DefaultPosition, wx.DefaultSize, 0)
response = win32gui.SendMessage(btn_apply.GetHandle(), BCM_SETSHIELD, None, True)

我把 true 放在了 SendMessage 的 wparam 中,而不是 lparam 中,现在可以了。现在我只是想知道 BCM_SETSHIELD 是否在 pywin32 中的某个库中声明,但如果必须的话,我可以自己声明该常量。

I have a button that will launch a process that requires UAC elevation. I want to display the Windows UAC shield overlay on the button, how do I do this in wxPython?
The application is only going to run on Windows, so I don't need to worry about it not working on other systems.

edit 2:
Got it:

BCM_SETSHIELD = 0x0000160C
btn_apply = wx.Button(self, wx.ID_APPLY, "Apply",
                      wx.DefaultPosition, wx.DefaultSize, 0)
response = win32gui.SendMessage(btn_apply.GetHandle(), BCM_SETSHIELD, None, True)

I put true in the wparam, not lparam of SendMessage, this works now. Now I'm just wondering if BCM_SETSHIELD is declared in some library somewhere in pywin32, but I'm fine with declaring the constant myself if I have to.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

鹊巢 2024-09-13 12:15:29

我不知道如何用 Python 发送 Windows 消息,但我想你知道。您需要发送以 true 作为参数的 BCM_SETSHIELD。在 XP 及更早版本中它将被忽略。还要确保按钮样式设置为 FlatStyle.System。 BCM_SETSHIELD 的数值为 0x0000160C。

I don't know how to send a Windows message in Python, but I assume you do. You need to send BCM_SETSHIELD with true as the parameter. It will be ignored on XP and earlier. Also make sure the button style is set to FlatStyle.System. The numerical value of BCM_SETSHIELD is 0x0000160C.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文