Red de conocimiento informático - Conocimiento informático - Expertos en programación que estén familiarizados con el cifrado de formatos de archivos, vengan y dennos un consejo sincero.

Expertos en programación que estén familiarizados con el cifrado de formatos de archivos, vengan y dennos un consejo sincero.

Mi programa fue escrito en VB y algunas operaciones eran relativamente lentas, así que pensé en una forma de escribir un archivo de programa exe de Delphi. A menudo llamo a este programa en el programa principal y la velocidad es mucho más rápida.

Pero actualmente existe un problema, y ​​se ruega a los expertos que lo señalen: el código del método de llamada en el programa principal de VB es el siguiente:

Cuando se utiliza ShellAndWait appfile amp; Declaración "sc.exe" para llamar, sc. La interfaz del programa exe saltará y deberá esperar a que finalice la operación antes de continuar. El problema ahora es que a veces, cuando llamo a sc.exe con frecuencia en mi programa principal, esta interfaz aparece constantemente y la computadora no puede realizar ningún otro trabajo durante la operación. ¿Cómo puedo utilizar un programa llamado sc.exe para ejecutarlo en segundo plano sin afectar otras operaciones en mi computadora? Muchas gracias.

Escriba STARTUPINFO

cb siempre

lpReserved como cadena

lpDesktop como cadena

lpTitle como cadena

dwX Mientras

dwX Mientras

dwY Mientras

dwXSize es largo

dwYSize es largo

dwXCountChars es largo

dwYCountChars es largo

dwFillAttribute es largo

dwFlags es largo

wShowWindow como entero

cbReserved2 como entero

lpReserved2 mientras sea largo

hStdInput mientras sea largo

hStdOutput mientras sea largo

hStdError mientras sea largo

Tipo de fin

Tipo PROCESS_INFORMATION

hProcess As Long

hThread As Long

dwProcessID As Long

dwThreadID siempre

Tipo de fin

Const global NORMAL_PRIORITY_CLASS = amp; p>Declarar la función CloseHandle Lib "kernel32 " (hObject As Long) como booleana

Declarar la función WaitForSingleObject Lib "kernel32 " (hObject As Long) como booleana

Declarar la función WaitForSingleObject Lib "kernel32 " (ByVal hHandle Mientras, ByVal dwMillisegundos Mientras) Mientras

Declarar función CreateProcessA Lib "kernel32 " (ByVal lpApplicationName Mientras, ByVal lpCommandLine Como cadena, ByVal lpProcessAttributes Mientras, ByVal lpThreadAttributes Mientras, ByVal bInheritHandles Mientras sea largo, ByVal dwCreationFlags Mientras sea largo, ByVal lpEnvironment Mientras sea largo, ByVal lpCurrentDirectory Mientras sea largo, lpStartupInfo Como STARTUPINFO, lpProcessInformation Como PROCESS_INFORMATION) Como L

ong

Declarar función CallWindowProc Lib "USER32 " Alias ​​​​"CallWindowProcA " (ByVal lpPrevWndFunc mientras, ByVal hWnd mientras, ByVal Msg mientras, ByVal wParam mientras, ByVal lParam mientras) Mientras

Declarar función SetWindowLong Lib "USER32 " Alias ​​​​"SetWindowLongA " (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Declarar función Shell_ NotifyIcon Lib " shell32.dll " Alias ​​​​"Shell_NotifyIconA " (ByVal dwMessage siempre, lpData como NOTIFYICONDATA) mientras

Declarar función SetForegroundWindow Lib "USER32 " (ByVal hWnd mientras)

Declarar función SendMessage Lib " USER32 " Alias ​​​​"SendMessageA " (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Tipo público NOTIFYICONDATA

cbSize Mientras

p>

hWnd Mientras

uID Mientras

uFlags Mientras

uCallbackMessage Como Long

hIcon As Long

p>

szTip As String * 64

Tipo de fin

Dim OldWindowProc As Long, TheData Como NOTIFYICONDATA

Sub ShellAndWait(cmdline$)

p>

Atenuar NameOfProc como PROCESS_INFORMATION

Atenuar NameStart como STARTUPINFO

Dim X As Long

NameStart.cb = Len(NameStart)

X = CreateProcessA(0, cmdline$, 0, 0, 1, NORM) 1, NORMAL_PRIORITY_CLASS, 0, 0 NameStart, NameOfProc)

(NameOfProc.hProcess, INFINITE

). hProcess, INFINITE)

X = CloseHandle(NameOfProc.hProcess)

End Sub