如何在wxPython中为按钮添加Windows UAC盾牌覆盖?

3 投票
1 回答
596 浏览
提问于 2025-04-16 00:18

我有一个按钮,点击后会启动一个需要提升权限的程序。我想在这个按钮上显示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)

我在SendMessage的wparam里放了true,而不是lparam,这样就可以正常工作了。现在我只是想知道BCM_SETSHIELD这个常量是否在pywin32的某个库里声明过,但如果没有的话,我自己声明这个常量也没问题。

1 个回答

2

我不知道怎么在Python中发送Windows消息,但我想你应该知道。你需要发送一个叫做 BCM_SETSHIELD 的消息,并且把参数设置为 true。在Windows XP及更早版本中,这个消息会被忽略。另外,确保按钮的样式设置为 FlatStyle.System。 BCM_SETSHIELD 的数字值是 0x0000160C。

撰写回答