2011-06-23 8 views
5

Tengo un programa que usa varios monitores. El programa muestra visualizaciones especiales en el segundo monitor. En un punto, el programa usa funciones de shell de Windows para enviar archivos a la papelera de reciclaje. Sin embargo, cuando lo hace, el cuadro de diálogo de confirmación de eliminación aparece en la parte superior de mi visualización. Esto es particularmente problemático, ya que cuando el mouse está en el segundo monitor, mi programa usa ganchos de ratón para capturar todas las entradas del mouse, por lo que el usuario ni siquiera puede hacer clic en el cuadro de diálogo de confirmación.Dile a Windows qué monitor para mostrar los cuadros de diálogo en

¿Es posible de alguna manera decirle a Windows que solo coloque cuadros de diálogo en una pantalla en particular?

estoy usando Python, aunque si tengo que llamar a funciones C WinAPI que no debería ser un problema

Respuesta

2

qué función está utilizando para enviar los archivos a la papelera de reciclaje? si usa SHFileOperation puede pasar un HWND padre. quizás haga que sea una ventana WS_EX_TOOLWINDOW invisible en el otro monitor.

esperaría que la API, tratando esa ventana como padre, se centraría en relación con esa ventana, pero no lo he intentado.

dependiendo de la versión de Windows a la que se dirija, solía haber una capacidad para crear bandas de escritorio que 'atracan' a los lados de la pantalla. esto automáticamente se factoriza en el área devuelta como rcWork por GetMonitorInfo y debe evitar que los diálogos se superpongan a este espacio. Hay podría ser otra forma de declarar que una región está "en uso" de una manera que declara el espacio fuera de los límites, pero no saben de ella por lo que probablemente no existe ...

la Lo más feo y crudo que se puede hacer es sondear y mover el diálogo usted mismo, pero si se trata de algún tipo de aplicación comercial o ampliamente desplegada que probablemente cause más daño que beneficio.

+0

Lo intentaré. ¿SHFileOperation borra el archivo o lo mueve a la papelera de reciclaje? Estaba usando el paquete winshell de Tim Golden: http://timgolden.me.uk/python/winshell.html, pero puedo probar las funciones directas de API. – jmite

+0

Tonta, resulta que hay una opción para no solicitar confirmación en el módulo Tim Golden. Esto no resuelve el problema a largo plazo, pero aparte de eliminar archivos, no he tenido ningún problema. ¡Gracias por la respuesta! – jmite

Cuestiones relacionadas