Erro no WINEXEC

Delphi

16/08/2005

No meu sistema, há uma parte onde eu chamo programas externos, funciona beleza na parte de windows, como calculadora,,, config de video ou algum outro aplicativo windows, porem preciso que ele chame tbem um programinha no DOS, mas nao ta dando certo. tenho o atalho dele no meu computador, mas se eu coloco o endereco que ta neste atalho ele nao entra, bom, começa a entrar, aparece duas frases falando que o programa é feito em clipper e fecha a tela do DOS, mas nao entra no programa. E com o atalho ele entra normal !!! :( ,, estou usando o winexec, será que alguem ja teve este problema ?


Geisonc

Geisonc

Curtidas 0

Respostas

Geisonc

Geisonc

16/08/2005

pesquisando por outro nome, encontrei e consegui fazer com este codigo.


///


Declare dentro de
interface
Uses
ShellApi


Public

procedure ExecutaApp(Nome,State,NomeExec,Path:Pchar;Estado:Integer


implementation

procedure TFrmPrin.ExecutaApp(Nome,State,NomeExec,Path:Pchar;Estado:Integer);
//
// Executa um aplicativo somente se ele não estiver aberto, caso
// contrário apenas chama-o
//
// Valores para Estdo: SW_SHOWNORMAL Janela em modo normal
// SW_MAXIMIZE Janela maximizada
// SW_MINIMIZE Janela minimizada
// SW_HIDE Janela Escondida
//
// Veja um exemplo de como chamar a calculadora do Windows
//
// ExecutaApp(´CALCULADORA´,´OPEN´,´CALC.EXE´,´C:\WINDOWS´,8);
//
// Onde ´CALCULADORA´ é o nome da janela do aplicativo
//
var
TheWindows: HWND;
begin
theWindows := FindWindow(NIL,Nome);
if TheWindows <> 0 then
begin
SetForegroundWindow(TheWindows)
end
else
begin
if (Estado > 3) or (Estado < 1) then
begin
Estado := 1;
end;
ShellExecute(Application.Handle,State,NomeExec,NIL,Path,Estado);
end;
end;


este é o Procedimento ...
depois é vc criar um botão e com evento OnClick associando o evento ao procedimento ex:


procedure TFrmPrin.CalculadoraClick(Sender: TObject);
begin
ExecutaApp(´CALCULADORA´,´OPEN´,´CALC.EXE´,´C:\WINDOWS´,8);
end;


GOSTEI 0
Rjun

Rjun

16/08/2005

Você poderia usar o ShellExecute e executar o proprio atalho.

ShellExecute(Application.Handle, nil, PChar(´C:\Documents and Settings\usuario\Desktop\Aplicacao.lnk´), nil, nil, SW_SHOWNORMAL);



GOSTEI 0
POSTAR