En el proceso de desarrollo de software, existen algunos problemas aparentemente simples, pero los desarrolladores comunes los ignoran fácilmente. La existencia de estos "errores" afecta la comercialización de nuestro software. A continuación se enumeran varios de estos problemas que encontró el autor al usar Visual Basic para desarrollar software. Las soluciones se brindan aquí para que todos las discutan e intercambien.
1. Evitar que la aplicación se cargue dos veces
Cuando nuestra aplicación se ejecuta en Windows, durante la operación, a veces la minimizamos y la ocultamos, o cambiamos al administrador de programas para otras operaciones y luego queremos ingresar a la aplicación original. Si lo olvidamos, reinicie la aplicación que acaba de iniciar. Se cargarán dos copias de la misma aplicación en la memoria al mismo tiempo. Esto no sólo ocupa espacio en la memoria, sino que también provoca fácilmente un mal funcionamiento y pérdida de datos. Para evitar que esto suceda, el programa debe poder dar un mensaje "ya cargado" o ingresar directamente a la aplicación que se carga por primera vez. Este problema parece difícil de resolver, de hecho, siempre que comprendamos el mecanismo de las aplicaciones de administración de Windows, se puede resolver fácilmente.
Sabemos que para cada aplicación en ejecución, Windows asigna un "identificador" único y un código de módulo (Módulo). Cuando se ejecutan dos copias del mismo programa al mismo tiempo, los códigos de módulo de los dos programas son los mismos. Por lo tanto, siempre que encontremos dos códigos de módulo idénticos en la memoria, sabemos que se están ejecutando dos copias del programa. y puede controlarlo. Las dos funciones de interfaz GetModuleHandle y GetModuleUsage proporcionadas por Windows pueden completar esta tarea. El método específico es el siguiente: Primero, declare la función API en un nuevo archivo de módulo (*.Bas).
DeclareFunctionGetModuleHandleLibKernel(ByVallpPRogName$)
DeclareFunctionGetModuleUsageLibKernel(ByValhModule)
Al mismo tiempo, cree un subproceso llamado principal. El código en el subproceso es el siguiente:
Subprincipal()
Manejo de errores OnErrorGoToerrMain
Mango del módulo DimhModule
DimAppCount'El número de aplicaciones
appPath$=app.Path /'ruta de inicio de la aplicación
hModule=GetModuleHandle(appPath$ app.EXEName .exe)'Obtiene el identificador del programa.
AppCount=GetModuleUsage(hModule)'Obtiene el código del módulo, es decir, la cantidad de aplicaciones en ejecución.
lfAppCount>1Entonces'El número de la misma aplicación es mayor que 1
El programa MsgBox ha sido cargado, 64
End' finaliza la aplicación actualmente iniciada
elsc
mainForm.Show'mainForm es la forma principal del programa
fin
SalirSub
errPrincipal:
lfErr<>0Entonces
MsgBox Ocurrió un error al iniciar el programa, 64
SalirSub
fin
FinSub
Una vez completado el proceso, en el menú principal de VB3.0 [opciones], seleccione el elemento de menú [Proyecto] y configure el elemento [StartupFrom] en Subprincipal, es decir, cuando el programa se ejecuta, se inicia primero desde la subrutina Subprincipal. Esto garantiza que se ejecutará el código anterior. Submain es el nombre del subproceso acordado en VB3.0 y no puede ser reemplazado por otros nombres.
Regenere el archivo EXE, inicie la aplicación en el administrador de programas, luego minimice el formulario generado y luego ejecútelo desde el administrador de programas. Después de cargar, el segundo programa finaliza. ejecución. El programa anterior solo se usa para evitar que se cargue el segundo programa, pero no ingresa automáticamente al primer programa cuando no se puede iniciar el segundo programa. Para lograr esto, los procedimientos involucrados son relativamente complejos y no se describirán en detalle aquí.
2. Determine la ruta de instalación de Windows.
En el software que desarrollamos, a veces llamamos directamente a pequeñas aplicaciones proporcionadas por Windows, como calculadoras, planificadores, etc., o necesitamos colocar algunos archivos especiales en la ruta de Windows o SISTEMA; Normalmente, Windows se instala en el directorio C:WINDOWS, pero los usuarios pueden modificar el nombre del directorio de inicio de Windows a voluntad. Por lo tanto, en nuestro software, debemos determinar la ruta de instalación de Windows. Para este problema, Windows proporciona dos funciones API: GetWindowsDirectory y GetSystemDirectory, que pueden devolver los nombres del directorio de Windows y del directorio del SISTEMA.
Para ello, prepare una función general GetWinDir, que devuelve el nombre del directorio de instalación de Windows. De manera similar, puede escribir GetSysDir, omitido.
Declarar funciones API en archivos de módulo *.BAS
DeclareFunctionGetWindowsDirectoryLibKernel(ByValipBufferAsString,ByValnSizeAsInteger)asIntegerFunctionGetWinDir()AsStringDimWindir$Windir$=Space$(144)'144 es la longitud máxima teórica del nombre del directorio WINDOWS.
lfGetWindowsDirectory(Windir$,144)=0Entonces
MsgBox no puede determinar la ruta de instalación de WINDOWS, 16
ObtenerWinDir=
Demás
Viento$=ALLTrim$(Viento$)
ifRight$(Windir$,1)<>“/”entoncesWindir$=Windir$ “/”
'Agregar barra invertida
GetWinDir=Viento$
fin
Función final
ALLTRIM es una función utilizada para eliminar caracteres nulos en una cadena.
FunciónALLTrim(FatStr$)AsString
'estaFuncióndeleteSpacecharinstringofFatStr$
DimSlimStr$,yo
SlimStr$=FatStr$
I=lnStr(SlimStr$,Chr$(0))'La posición del espacio
SiIThenSlimStr$=Izquierda$(SlimStr$,I-1)
SlimStr$=Ltrim$(Rtrim$)(SlimStr$))
AIITrim$=SlimStr$
Función final
3. Solicitar guardar datos antes de cerrar el formulario.
En términos generales, suelen existir 5 formas de cerrar una aplicación:
1. El usuario selecciona el comando [Cerrar] en el ControlBox del formulario actual.
2. Estimule el código de comando final en el programa (como Finalizar, Descargar)
3. Salga de Windows
4. Cierre la aplicación en la lista de tareas de Windows.
5. Durante la operación de múltiples documentos, cerrar el formulario MDI principal hará que se cierre el formulario MDI secundario.
Antes de cerrar una aplicación, debemos darle al usuario la oportunidad de preguntar "¿Quiere guardar datos?" o cancelar la operación de "cerrar". En VB, el cierre del formulario desencadena el evento Form_Unload. Podemos programar este evento para controlar la operación de "cierre". Suponiendo que ya existe un procedimiento FileSave utilizado para guardar archivos, puede escribir el programa así.
SubForm_Unload(CancelarAslnteger)
selectcastMsagbox("¿Guardar datos?", 3 32)
'Sí, No, Cnacel tres opciones
caso6'SÍ
Datos guardados de FileSave
caso2'cancelar
Cancelar=TRUE'Cancelar la operación de cierre
caseelse'NO' no guarda, realiza la operación de apagado
selección final
FinSub
La variable Cancelar en el código anterior es una variable saliente inherente del propio evento Form_unload. Entrega mensajes al proceso de control de Windows para controlar la dirección del programa.
Los tres ejemplos anteriores son solo algunos problemas menores en el proceso de mejora del software. Para que el software sea estable y confiable, se necesita mucho trabajo cuidadoso y cuidadoso. Algunos problemas se pueden resolver explorando el potencial del propio VB y dominando profundamente las habilidades operativas de algunos procesos, mientras que algunos problemas más complejos involucran las operaciones subyacentes de Windows y se pueden implementar fácilmente usando las funciones API de Windows. Por supuesto, esto requiere una cierta comprensión de las funciones y mecanismos de Windows. A medida que mejore el nivel de programación de Windows, gradualmente aprenderemos y nos gustará usar las funciones API para ayudar a completar la codificación del programa. ->