¿Cómo utilizar ShellExecuteA?
Hay tres funciones API que pueden ejecutar archivos ejecutables: WinExec, ShellExecute y CreateProcess.
1.CreateProcess rara vez se usa porque es complicado de usar.
2.WinExec ejecuta principalmente archivos EXE. Por ejemplo: WinExec('Notepad.exe Readme.txt', SW_SHOW);
3.ShellExecute no solo puede ejecutar archivos EXE, sino también archivos asociados.
Primero, debe citar la unidad shellapi.pas: utiliza ShellAPI;
1). El prototipo de la función ShellExecute y los significados de los parámetros son los siguientes. :
función ShellExecute(hWnd: HWND; Operación, Nombre de archivo, Parámetros, Directorio: PChar; ShowCmd: Integer): stdcall;
●hWnd: se utiliza para especificar la ventana principal; manejar. Cuando ocurre un error durante la llamada a la función, servirá como ventana principal de la ventana de mensajes de Windows. Por ejemplo, puede configurarlo en el identificador de la ventana principal de la aplicación
, es decir, Application.Handle, o puede configurarlo en el identificador de la ventana del escritorio (obtenido con la función GetDesktopWindow).
●Operación: se utiliza para especificar la operación a realizar. La operación "abrir" significa ejecutar el programa especificado por el parámetro FileName, o abrir el archivo o carpeta de archivos especificado por el parámetro FileName. La operación "imprimir" significa imprimir el archivo especificado por el parámetro FileName; la carpeta especificada por el parámetro FileName. Cuando el parámetro se establece en nulo, significa que se realiza la operación predeterminada "abrir"
.
●FileName: se utiliza para especificar el nombre del archivo que se abrirá, el nombre del archivo del programa que se ejecutará o el nombre de la carpeta que se explorará.
●Parámetros: si el parámetro FileName es un programa ejecutable, este parámetro especifica los parámetros de la línea de comando; de lo contrario, este parámetro debe ser nulo o PChar(0).
●Directorio: se utiliza para especificar el directorio predeterminado.
●ShowCmd: si el parámetro FileName es un programa ejecutable, este parámetro especifica el modo de visualización inicial de la ventana del programa; de lo contrario, este parámetro debe establecerse en 0.
Si la función ShellExecute se llama con éxito, el valor de retorno es el identificador de instancia del programa ejecutado. Si el valor de retorno es menor que 32, se produjo un error.
Lo anterior es solo el uso estándar de la función ShellExecute. Su uso especial se presentará a continuación.
2). Uso especial
Si el parámetro FileName está configurado en "', nil, nil, SW_SHOWNORMAL);
Formato 2:/default.htm ' ,nil,nil,SW_SHOWNORMAL);
Si el parámetro FileName está configurado en el formato de protocolo "mailt", esta función iniciará el cliente de correo predeterminado, como Microsoft Outlook (también incluye Microsoft p>
Outlook Express) o Netscape Messanger Si hay varios clientes de correo instalados en la máquina del usuario, esta función determinará qué cliente de correo iniciar basándose en la configuración del programa de procesamiento del protocolo mailto en el registro de Windows 9x/NT. Programa
Formato 1: mailt
Por ejemplo: ShellExecute(handle,'open', 'mailt', nil, nil, SW_SHOWNORMAL);
Formato 2: cuenta de usuario de mailt@dirección del servidor de correo
Por ejemplo: ShellExecute(handle, 'open',' mailtwho@mail.neu.edu.cn', nil, nil , SW_SHOWNORMAL); abre una nueva ventana de correo electrónico y completa automáticamente la dirección del destinatario
. Si se especifican varias direcciones de destinatarios, las direcciones de destinatarios deben estar separadas por punto y coma o comas (lo mismo a continuación).
Formato 3: cuenta de usuario de mailt@dirección del servidor de correo?subject=asunto del correo&cuerpo=texto del correo
Por ejemplo: ShellExecute(handle, 'open', ' mailtwho@mail.neu. edu.cn? sujeto=Hola&Body=Esto es una prueba', nil, nil,
SW_SHOWNORMAL); abre una nueva ventana de correo electrónico y completa automáticamente la dirección del destinatario, el asunto del correo electrónico y el cuerpo del correo electrónico. Si el cuerpo del correo electrónico contiene varias líneas de texto, se debe agregar un carácter de escape
nueva línea %0a entre cada línea de texto.
Ejemplo (Delphi):
Llamar a c:\Project1.exe en una aplicación;
ShellExecute(handle, 'open','c:\ Project1 .exe','String content',nil, SW_SHOWNORMAL);
Se puede llamar en Project1.exe:
procedimiento Tform1.formCreate(Sender: TObject);
p>
var
i: entero;
comenzar
para i:=1 a paramcount do
if ParamStr( i)<>'' entonces
showmessage(ParamStr(i));
end;
El último parámetro especifica el aspecto de visibilidad del ventana un comando. Utilice cualquiera de las siguientes constantes:
SW_HIDE oculta la ventana y muestra una ventana en estado activo
SW_MINIMIZE minimiza la ventana y muestra una ventana en estado activo
SW_RESTORE Muestra una ventana con su tamaño y posición originales y la activa al mismo tiempo
SW_SHOW Muestra una ventana con su tamaño y posición actuales mientras la activa
SW_SHOWMAXIMIZED Máximo Minimizar la ventana y activarla
SW_SHOWMINIMIZED Minimizar la ventana y activarla
SW_SHOWMINNOACTIVE Minimizar una ventana sin cambiar la ventana activa
SW_SHOWNA Uso Mostrar una ventana en el tamaño y la posición actuales sin cambiar la ventana activa
SW_SHOWNOACTIVATE Muestra una ventana con el último tamaño y posición sin cambiar la ventana activa
SW_SHOWNORMAL es lo mismo que SW_RESTORE