2011-06-23 58 views
5

我有一个使用多个监视器的程序。该程序在第二台显示器上显示特殊的可视化效果。有一点,该程序使用Windows外壳功能将文件发送到回收站。但是,当它执行此操作时,删除确认对话框会显示在我的可视化对象之上。这是特别有问题的,因为当鼠标在第二台显示器上时,我的程序使用鼠标钩子捕捉所有鼠标输入,因此用户甚至不能点击确认对话框。告诉窗口哪个监视器显示对话框

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

我使用python,但如果我要调用C WinAPI的函数不应该是您正在使用的文件发送到回收站其功能的问题

回答

2

?如果您使用SHFileOperation,则可以传递父HWND。也许在另一个监视器上创建一个不可见的WS_EX_TOOLWINDOW窗口。

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

取决于您定位到哪个版本的Windows,过去有一种能力可以创建“停靠”在屏幕两侧的桌面乐队。这会自动获取到由GetMonitorInfo作为rcWork返回的区域,并应防止对话框重叠此空间。有可能另一种方式来声明一个区域是“使用中”的方式,声明空间不受限制,但我不知道它,所以它可能不存在...

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

+0

我会试试看。 SHFileOperation会删除该文件,还是将其移至回收站?我使用Tim Golden的winshell包:http://timgolden.me.uk/python/winshell.html,但我可以尝试直接的API函数。 – jmite

+0

愚蠢的是,事实证明有一个选择,不要求Tim Golden模块中的确认。这并不能解决长期问题,但除了删除文件之外,我没有任何问题。感谢你的回答! – jmite