Fórum Executar aplicação DOS externa #254937
18/10/2004
0
Gandalf.nho
Curtir tópico
+ 0Posts
18/10/2004
Afarias
T+
Gostei + 0
18/10/2004
Gandalf.nho
Gostei + 0
18/10/2004
Ipc$
Prog.exe ¬1 ¬2 ¬3 . . .
Gostei + 0
18/10/2004
Gandalf.nho
Gostei + 0
18/10/2004
Afarias
T+
Gostei + 0
18/10/2004
Keitarosan
Sacou a parada?? o simples uso de aspas no nome do arquivo? :D
nome_do_programa.exe ´nome do arquivo com espaços.ext´
Um conceito simples esse, tudo que está dentro de aspas é considerado como uma ´coisa´ só... nao importa se tem espaço ou qualquer outra tranqueira...
Agora teste e me diga se funciona, se nao funcionar pelo menos eu tentei ajudar :roll: :wink:
Gostei + 0
18/10/2004
Gandalf.nho
Gostei + 0
18/10/2004
Keitarosan
Você não poderia me enviar o tal executavel de DOS pra eu possa testar aqui?? é coisa rápida, se quiser... :D
Gostei + 0
18/10/2004
Gandalf.nho
Gostei + 0
18/10/2004
Vinicius2k
Eu nunca testei este meu processo num caminho com espaços, mas eu uso a CreateProcess... neste exemplo, rodo o gbak...
{ **** Executa um processo **** }
function ExecProcess(FileName, Params: String; WindowState: Word; ProcessName: String = ´´; Wait: Boolean = True): Boolean;
var SI: TStartupInfo;
PI: TProcessInformation;
CmdLine: String;
begin
CmdLine:= FileName + ´ ´ + Params;
FillChar(SI, SizeOf(SI), #0);
with SI do
begin
cb:= SizeOf(SI);
dwFillAttribute:= FOREGROUND_RED;
if ProcessName <> ´´ then lpTitle:= PChar(ProcessName);
wShowWindow:= WindowState;
dwFlags:= STARTF_USESHOWWINDOW + STARTF_USEFILLATTRIBUTE;
end;
Result:= CreateProcess( nil, PChar(CmdLine), nil, nil, False,
CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil,
PChar(ExtractFilePath(FileName)), SI, PI
);
if Result then
begin
if Wait then
WaitForSingleObject(PI.hProcess, INFINITE);
CloseHandle(PI.hProcess);
CloseHandle(PI.hThread);
end;
end;
// ********************************************** \\
procedure Tfrm_backup.btn_executarClick(Sender: TObject);
var gParams: String;
begin
gParams:= ´-b -v -y ´ + edt_LogFile.Text + ´ ´ +
´-user ´ + edt_usuario.Text + ´ ´ +
´-password ´ + edt_senha.Text + ´ ´ +
edt_DatabaseFile.Text + ´ ´ +
edt_BackupFile.Text;
{ **** }
ExecProcess(edt_gbakPath.Text, gParams, SW_SHOW,´Back-Up´);
{ **** }
end;Espero ter ajudado...
T+
Gostei + 0
18/10/2004
Keitarosan
WinExec(PChar(´c:\windows\command\edit.com /B ´c:\teste com espaços\novo arquivo.txt´ /H´), SW_SHOWNORMAL);
olha que eu fiz questao de colocar espaços e chars especiais(ç) no parametro que corresponde ao nome do arquivo, mas ele abriu normalmente, obedeceu os parametros /H e /B tbm...
Agora, vou pegar esse emulador aí que você falou, pq isso tá parecedendo uma particularidade dele e não do WinEXEC...
Gostei + 0
18/10/2004
Keitarosan
Ele não aceita espaços no meio do nome do arquivo, pode trocar de WinExec pra outra rotina, pode trocar de linguagem, pode até esperniar, o bichinho é teimoso :x :lol:
Olha só como você pode resolver:
var pathEmu, pathRom: string; begin pathEmu := ExtractShortPathName(´c:\emulador de mega drive\genecyst.exe´); pathRom := ExtractShortPathName(´c:\emulador de mega drive\roms do emulador\booger man.smd´); WinExec(PChar(Format(´¬s ¬s´, [pathEmu, pathRom])), SW_SHOWNORMAL);
é claro que esses caminhos que eu utilizei sao do meu computador aqui, mas funfou que foi uma beleza :wink:
Eu nao sei como você conseguiu abrir o arquivo manualmente nao, mas eu nao consegui aqui, mesmo digitando o nome do arquivo, o emulador nao aceitava o espaço...
Ele só aceita o filenames no formato 8.3 do velho DOS... =P
Bom, espero que a senhorita resolva seu problema agora :wink:
Gostei + 0
19/10/2004
Ipc$
WinExec(´C:\Temp\x.bat Nome do Arquivo´, sw_Show);
No x.bat vc coloca:
Prog.exe ¬1 ¬2 ¬3
Gostei + 0
19/10/2004
Gandalf.nho
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)