¿Cómo puedo manipular mediante programación el cuadro de diálogo común de cualquier aplicación de Windows?

StackOverflow https://stackoverflow.com/questions/125710

  •  02-07-2019
  •  | 
  •  

Pregunta

Mi objetivo final aquí es escribir una utilidad que me permita configurar rápidamente la carpeta cualquier cuadro de diálogo, eligiendo de una lista preestablecida de 'favoritos'.Como solo soy un aficionado, no un profesional, preferiría usar .NET porque es lo que mejor conozco.Me doy cuenta de que algunas de estas cosas podrían requerir algo más de lo que podría hacer en C#.

He visto algunas aplicaciones que pueden ampliar el cuadro de diálogo común (específicamente para Guardar como...y Abrir archivo) ya sea agregando botones a la barra de herramientas (por ejemplo: Asistente de cuadro de diálogo) o colocando botones adicionales en la barra de título junto a los botones minimizar, maximizar y/o cerrar.Cualquiera sería una buena opción, aunque no tengo la menor idea de por dónde empezar.

Un enfoque que he probado es "arrastrar" el nombre de la carpeta desde una aplicación que escribí al cuadro de texto del nombre del archivo en el cuadro de diálogo, resaltándolo usando una técnica de gancho del mouse que aprendí de Corneliu Tusnea. Editor de objetos en tiempo de ejecución Hawkeye, y luego anteponiendo el nombre de la ruta activando SendMessage con WM_SETTEXT.Funciona (más o menos) pero se siente un poco torpe.

Cualquier consejo sobre técnica o implementación para esto sería muy apreciado.O si existe una utilidad que ya hace esto, ¡hágamelo saber!

Actualizar:Cuando todo esté dicho y hecho, creo que probablemente tendré una utilidad existente.Sin embargo, me gustaría saber si hay es una forma de hacer esto mediante programación.

¿Fue útil?

Solución

Para algo como esto, probablemente necesitarás muchas llamadas a la API de Win32.Trabajar desde .Net significa hacer muchos pinvokes.Me temo que no puedo ayudarte mucho, pero recuerdo que había un libro llamado "Subclases y enlaces con Visual Basic" Eso podría ayudar.Fue escrito principalmente para VB 6, pero creo que tenía algunas cosas de VB.Net.

También, PInvoke.Net es una wiki con muchas firmas pinvoke que puedes copiar y pegar y que podrían ser de ayuda.

Cuando llegue el momento, probablemente tendrá que aprender más sobre cómo funciona Windows internamente (transmisión de mensajes, etc.) para lograr su objetivo.

Spy++ probablemente también será tu amigo.

Otros consejos

Suena como un trabajo para AutoHotkey a mi.

Soy un "profesional" (al menos me pagan por programar), pero primero consideraría el uso de las muchas funciones bien probadas de AutoHotkeys para acceder a Windows, en lugar de profundizar en C#/.NET y, más probablemente, WinAPI a través de PInvoke.

AutoHotkey incluso proporciona algunos controles básicos de interfaz de usuario y es gratuito.

Aquí hay un Guión de acceso directo automático Es muy similar a lo que pides.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top