andreop 0 Denunciar post Postado Setembro 4, 2014 Olá, bom por muito tempo usei esse mesmo código e sempre foi funcional mas ontem, quando voltei a usar o Delphi (7), ele simplesmente não abre o .exe Segue o código: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, XPMan, ComCtrls, TlHelp32, jpeg; type TForm1 = class(TForm) Image1: TImage; ProgressBar1: TProgressBar; XPManifest1: TXPManifest; Timer1: TTimer; procedure Timer1Timer(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation uses Unit2; {$R *.dfm} function proces---ists(exeFileName: string): Boolean; var ContinueLoop: BOOL; FSnapshotHandle: THandle; FProcessEntry32: TProcessEntry32; begin FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); FProcessEntry32.dwSize := SizeOf(FProcessEntry32); ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); Result := False; while Integer(ContinueLoop) <> 0 do begin if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then begin Result := True; end; ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); end; CloseHandle(FSnapshotHandle); end; procedure TForm1.Timer1Timer(Sender: TObject); begin if proces---ists('main.exe') then Form2.show else WinExec ('"main.exe" __kogstudios_original_service__', SW_NORMAL); Form2.show; form1.Hide; end; end. Tentei também com ShellExecute, mas não quer abrir, o "main.exe" abre normalmente com um .bat, o "__kogstudios_original_service__" é um parâmetro necessário para abrir. Sempre funcionou assim, não entendi o que pode ser... Tentei até mesmo adicionar apenas um button e colocar o código, porque pensei que podia ser algo no resto do código, porém deu na mesma. Onde esta os --- no "proces---ists" é "s e x" e o fórum censurou. Alguém pode me ajudar? Fiquei desde as 23:00 até as 01:00 de ontem e não tive progresso algum. Compartilhar este post Link para o post Compartilhar em outros sites
Chrnos 30 Denunciar post Postado Setembro 5, 2014 O executável "main.exe" está registrado no windows ou na mesma pasta onde é executado o comando winexec? Acho que está faltando algo no seu código, como o caminho para o executável.... de todo modo, segue alguns links que podem ajudar.... http://www.scriptbrasil.com.br/forum/topic/152387-resolvidoinconpatible-types-no-winexec/ http://www.devmedia.com.br/usando-shellexecute-para-executar-aplicativos-externos/613 http://www.festra.com/eng/mtut01.htm http://www.devmedia.com.br/forum/comando-winexec-no-delphi-7/299175 https://br.answers.yahoo.com/question/index?qid=20070808170001AAoEOII Compartilhar este post Link para o post Compartilhar em outros sites
andreop 0 Denunciar post Postado Setembro 6, 2014 Sim, é na mesma pasta, sempre usei esse código, não entendi porque não funcionou dessa vez.... Compartilhar este post Link para o post Compartilhar em outros sites
Chrnos 30 Denunciar post Postado Setembro 9, 2014 Você mudou algo no ambiente? O antivirus por exemplo? Debugando o código, ele está executando corretamente sem erros? Permissão de usuário talvez? Um comando não deixa de funcionar "do nada", desde a última vez que usou sem erros e agora, o que mudou no ambiente/máquina de uso? Compartilhar este post Link para o post Compartilhar em outros sites
Best0 0 Denunciar post Postado Setembro 15, 2014 Tente dessa forma. WinExec ('"main.exe" __kogstudios_original_service__', SW_SHOWNORMAL); Compartilhar este post Link para o post Compartilhar em outros sites