告诉窗口监视器显示对话框

时间:2011-06-23 20:14:52

标签: python windows winapi pywin32 multiple-monitors

我有一个使用多个显示器的程序。该程序在第二台显示器上显示特殊可视化。有一次,程序使用Windows shell函数将文件发送到回收站。但是,当它执行此操作时,删除确认对话框位于我的可视化之上。这特别成问题,因为当鼠标在第二台显示器上时,我的程序使用鼠标钩来捕获所有鼠标输入,因此用户甚至无法单击确认对话框。

是否有可能以某种方式告诉Windows只在特定显示器上放置对话框?

我正在使用python,但是如果我必须调用C WinAPI函数那应该不是问题

1 个答案:

答案 0 :(得分:2)

您使用哪个功能将文件发送到回收站?如果您使用SHFileOperation,则可以传递父HWND。也许在另一台监视器上做一个看不见的WS_EX_TOOLWINDOW窗口。

我希望将该窗口视为父窗口的API将相对于该窗口居中,但我还没有尝试过。

根据您所定位的Windows版本,过去可以创建“停靠”到屏幕两侧的桌面乐队。这会自动计入由GetMonitorInfo作为rcWork返回的区域,并且应该阻止对话框重叠此空间。 可能是以声明空间禁止的方式声明某个区域“正在使用”的另一种方式,但我不知道它所以它可能不存在...

你可以做的丑陋和粗暴的事情是自己进行民意调查和移动,但如果这是任何一种广泛部署或商业应用程序,可能会造成更多的伤害而不是好。