ShellExecuteAndWait não está funcionando?
23/01/2025
0
A um tempo achei esse função "ShellExecuteAndWait" ela funciona bem no meu exe antigo mais no meu novo projeto não está funcioando não sei porque...
Se alguem tiver ideia do que está faltando posta ai por favor...
uses Winapi.ShellApi ... /// ****** Parameters ****** /// Operation: /// /// edit : Inicia um editor e abre o documento para edição. /// explore : Explora a pasta especificada por lpFile. /// find : Inicia uma pesquisa a partir do diretório especificado. /// open : Abre o arquivo ou pasta especificado pelo parâmetro lpFile. /// print : Imprime o arquivo do documento especificado por lpFile. /// properties : Exibe as propriedades do arquivo ou pasta. /// /// FileName: /// /// Especifica o nome do arquivo ou objeto no qual ShellExecuteEx executará a /// ação especificada pelo parâmetro lpVerb. /// /// Parameter: /// /// String que contém os parâmetros do aplicativo. /// Os parâmetros devem ser separados por espaços. /// /// Directory: /// /// Especifica o nome do diretório de trabalho. /// Se este membro não for especificado, o diretório atual será usado como o /// diretório de trabalho. /// /// Show: /// /// Flags que especificam como um aplicativo deve ser exibido quando aberto. /// Pode ser um dos valores SW_ /// /// bWait: /// /// Se true, a função aguarda o término do processo Function ShellExecuteAndWait(Operation, FileName, Parameter, Directory: String; Show: Word; bWait: Boolean): Longint; var bOK: Boolean; Info: TShellExecuteInfo; begin FillChar(Info, SizeOf(Info), Chr(0)); Info.cbSize := SizeOf(Info); Info.fMask := SEE_MASK_NOCLOSEPROCESS; Info.lpVerb := PChar(Operation); Info.lpFile := PChar(FileName); Info.lpParameters := PChar(Parameter); Info.lpDirectory := PChar(Directory); Info.nShow := Show; bOK := Boolean(ShellExecuteEx(@Info)); if bOK then begin if bWait then begin while WaitForSingleObject(Info.hProcess, 100) = WAIT_TIMEOUT do Application.ProcessMessages; bOK := GetExitCodeProcess(Info.hProcess, DWORD(Result)); end else Result := 0; end; if not bOK then Result := -1; end; // Uso ela assim.. CommandRAR := 'a -r -y -ibck -v15m -df '+NomeRAR+' "C:\TSD\TMP\XML_NFe" "C:\TSD\TMP\XML_NFCe"'; I := ShellExecuteAndWait('open', 'C:\Program Files\Winrar\Winrar.exe', PChar(CommandRAR), '', SW_HIDE, True);
Se alguem tiver ideia do que está faltando posta ai por favor...
Eduardo Silva
Curtir tópico
+ 0
Responder
Posts
23/01/2025
Eduardo Silva
Simplesmente quando executado não acontece nada...
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)