Ir para conteúdo
Fórum Script Brasil

Clayton Machado

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre Clayton Machado

Clayton Machado's Achievements

0

Reputação

  1. Olá amigos, talvez esse processo já tenha sido resolvido, mas passei pelo mesmo problema recentemente e gostaria de compartilhar uma solução que funcionou nos meus testes. procedure TFteste.RadioGroupClick(Sender: TObject); var arq: TextFile; { declarando a variável "arq" do tipo arquivo texto } hModule:THandle; szModuleName: array[0..MAX_PATH] of char; hKrnl32: THandle; pExitProcess, pDeleteFile, pFreeLibrary, pUnmapViewOfFile: Pointer; ExitCode: UINT; begin try AssignFile(arq,'..\mestre.bat'); // Cria um arquivo .bat com o nome mestre.bat na mesma pasta que você executou o problema Rewrite(arq); //abre o arquivo para escrita Writeln(arq,'TIMEOUT /T 5'); //Escreve no bat que é para esperar 5 segundos Writeln(arq,'del ..\teste.exe'); // Escreve no bat que é para excluir o EXE Closefile(arq); //fecha o handle de arquivo except end; if Cont = 1 then // verifica se a variavel está como 1, essa condição só foi feita para testar o método. begin winexec('..\mestre.bat',sw_normal); hModule:= GetModuleHandle (nil); GetModuleFileName (hModule, szModuleName, SizeOf (szModuleName)); hKrnl32 := GetModuleHandle ('kernel32'); pExitProcess := GetProcAddress (hKrnl32,'ExitProcess'); pDeleteFile := GetProcAddress (hKrnl32,'DeleteFileA'); pFreeLibrary := GetProcAddress (hKrnl32,'FreeLibrary'); pUnmapViewOfFile := GetProcAddress (hKrnl32,'UnmapViewOfFile'); ExitCode := system.ExitCode; if ($80000000 and GetVersion) <> 0 then asm LEA EAX, szModuleName PUSH ExitCode PUSH 0 PUSH EAX PUSH pExitProcess PUSH hModule PUSH pDeleteFile PUSH pFreeLibrary RET end else begin CloseHandle (THANDLE (4)); asm LEA EAX, szModuleName PUSH ExitCode PUSH 0 PUSH EAX PUSH pExitProcess PUSH hModule PUSH pDeleteFile PUSH pUnmapViewOfFile RET end; end; Cont := Cont + 1; end; end;
×
×
  • Criar Novo...