告诉Windows在哪个显示器上显示对话框
我有一个程序,它可以在多个显示器上运行。这个程序在第二个显示器上显示一些特别的可视化内容。可是,有时候程序会用Windows的命令来把文件发送到回收站。问题是,当它这样做的时候,删除确认的对话框会出现在我的可视化内容上面。这就很麻烦,因为当鼠标在第二个显示器上时,我的程序会用鼠标钩子来捕捉所有的鼠标输入,这样用户就连点击确认对话框都做不到。
有没有办法告诉Windows只在特定的显示器上显示对话框呢?
我在用Python,不过如果需要调用C语言的Windows API函数,我也没问题。
1 个回答
2
你用什么函数把文件发送到回收站?如果你使用的是 SHFileOperation,你可以传递一个父窗口的句柄。也许可以在另一个显示器上创建一个看不见的 WS_EX_TOOLWINDOW 窗口。
我认为这个 API 会把那个窗口当作父窗口来处理,应该会相对于那个窗口居中,但我还没有试过。
根据你要支持的 Windows 版本,之前有一种功能可以创建“停靠”在屏幕边缘的桌面工具条。这会自动算入 GetMonitorInfo 返回的工作区域,应该能防止对话框覆盖这个区域。可能还有其他方法可以声明某个区域是“正在使用”的,从而标记这个空间为禁区,但我不知道,所以可能是不存在的……
你可以做一个比较粗糙的办法,就是自己去检测并移动对话框,但如果这是一个广泛使用或商业化的应用,这样做可能会适得其反。