Executando Aplicativos no Delphi com Windows 7

Quanddo é preciso executar um aplicativo ou abrir um arquivo automaticamente por meio do seu executável, pode-se optar por três métodos: WinExec, ShellExecute ou CreateProcess.

A diferença dos três é definida muito bem por Marcos Dell Antonio:

WinExec: simples, porém não recomendado pela própria Microsoft, pois pode ser que futuramente não estará mais disponível;
ShellExecute: utilizado quando existe a necessidade de abrir um arquivo conforme sua extensão. Também pode ser usado para rodar um executável qualquer;
CreateProcess: o substituto do WinExec e, certamente, a melhor opção. Possui uma lista gigante de parâmetros, mas muitos deles não são utilizados e podem ser passados como nil ou 0 (zero).

Achei uma rotina para ser aplicada para a utilização do CreateProcess, muito fácil e testada:

procedure dgCreateProcess(const FileName: string);
var ProcInfo: TProcessInformation;
    StartInfo: TStartupInfo;
begin
     FillMemory(@StartInfo, sizeof(StartInfo), 0);
     StartInfo.cb := sizeof(StartInfo);
     CreateProcess(
                   nil,
                   PChar(FileName),
                   nil, Nil, False,
                   NORMAL_PRIORITY_CLASS,
                   nil, nil,
                   StartInfo,
                   ProcInfo);
     CloseHandle(ProcInfo.hProcess);
     CloseHandle(ProcInfo.hThread);
end;

A chamada é

dgCreateProcess(‘C:\Windows\Notepad.exe’);
dgCreateProcess(‘notepad’);
dgCreateProcess(‘mspaint’);

Lembre-se que o CreateProcess é o mais recomendado, pois no Win7 você pode ter problemas com os outros métodos.

Compatilhe esse artigo!

One thought on “Executando Aplicativos no Delphi com Windows 7

  • gostei muito do site!
    porem a fazer o processo nao funcionou com o soundrecord.exe do win 7
    fiz a chamada assim:
    dgCreateProcess(‘C:Windowssystem32soundrecord.exe’);
    mas nao deu certo…

    por favor voces pode me ajudares?

Leave a Reply

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

This site uses Akismet to reduce spam. Learn how your comment data is processed.