Cómo controlar otras ventanas de aplicaciones en Delphi
Cómo controlar otras ventanas de aplicaciones en Delphi
Chen Jianbing, Colegio de Cuadros de Gestión Agrícola de Guangdong
Escribir aplicaciones Delphi a menudo implica operaciones en otras aplicaciones de Windows. Por ejemplo, en un sistema de gestión de bases de datos, si el personal financiero necesita utilizar una calculadora, puede llamar a la función de calculadora incluida en Windows. Cada vez que la utilice, debe abrir la calculadora a través de "Inicio/Programas/Accesorios/Calculadora". Obviamente, es muy engorroso. Por supuesto, puede considerar crear un acceso directo a "Calculadora" en el escritorio y definir una tecla de acceso rápido. Cuando necesite usar la calculadora, presione esta tecla de acceso rápido para abrir la "Calculadora". Sin embargo, dado que "Calculadora" es un programa de ventana "no modal", es decir, cada vez que se ejecuta la calculadora, se abrirá una ventana de "Calculadora". El resultado es que aparecen docenas de "calculadoras" en el escritorio, no. solo una gran cantidad de Aumenta la sobrecarga de memoria del sistema y es inconveniente para los usuarios operar. Se puede controlar fácilmente en Delphi y el efecto es perfecto. Los métodos de implementación se proponen a continuación para dos cuestiones principales.
1. ¿Cómo controlar el diseño?
Cree un nuevo formulario, coloque dos botones en el formulario, sus títulos son "Abrir" (es decir, iniciar la "calculadora") y "Cerrar" (salir y finalizar), y agregue procesamiento de eventos Click para ellos respectivamente. Consulte el formulario Form1 y el archivo unitario Unit1 para obtener más detalles.
Entre ellas, las declaraciones más importantes son:
fwnd:=FindWindow('SciCalc','Calculadora');
El prototipo de función es (consulte la ayuda de Delphi para obtener más detalles):
HWND Buscar ventana(
LPCTSTR lpClassName, // puntero al nombre de la clase
LPCTSTR lpWindowName // puntero al nombre de la ventana
);
Aquí, 'SciCalc' es el nombre de clase de la calculadora y 'Calculadora' es el título de la ventana de la calculadora}
setWindowPos(fwnd,HWND_NOTOPMOST,0,0,0,0,SWP_SHOWWINDOW o SWP_NOSIZE o SWP_NOMOVE);
El prototipo de función es:
BOOL EstablecerPosVentana(
HWND hWnd, // identificador de ventana
HWND hWndInsertAfter, // identificador de orden de ubicación
int X, // posición horizontal
int Y, // posición vertical
int cx, // ancho
int cy, // altura
UINT uFlags // banderas de posicionamiento de ventanas
);
ShowWindow(fwnd,SW_RESTORE); //Mostrar la "calculadora" abierta
El prototipo de función es:
BOOL Mostrar ventana(
HWND hWnd, // identificador de ventana
int nCmdShow // muestra el estado de la ventana
);
Ret:=WinExec('c:windowscalc.exe',SW_SHOWNORMAL //Inicia la calculadora);
El prototipo de función es:
UINT WinExec(
LPCSTR lpCmdLine, // dirección de la línea de comando
UINT uCmdShow // estilo de ventana para nueva aplicación
);
Ejecute el programa Calculadora y verifique el valor de retorno (utilizando así el valor de retorno para determinar posibles errores)
2. ¿Cómo aclarar el "nombre de clase" de la aplicación?
Para controlar una aplicación, primero debe aclarar el "nombre de clase" de la aplicación. El concepto de "clase" ya es muy claro en los programas Delphi. Por ejemplo, cree un nuevo formulario Form1 y el "nombre de clase" del formulario es TForm1. Entonces, ¿cómo determinar el "nombre de clase" de otros programas de Windows?
Afortunadamente, Delphi proporciona una herramienta práctica llamada Winsight, que es como un espejo que revela los "nombres de clase" de los monstruos dondequiera que estén.
El modo de utilizar Winsight es el siguiente:
⑴ Ejecute Winsight (el nombre del programa es ws32.exe, en el mismo directorio que el archivo principal delphi32.exe), consulte la Figura ①;
⑵ Seleccione "Seguir foco" en "Espiar" en el menú de Winsight, como se muestra en la Figura ②;
⑶Ejecute el programa “calculadora”;
⑷El objetivo se muestra en Winsight, como se muestra en la Figura ③.
Entorno de software: Win98 chino/Delphi5.0 chino.