Avatar billede mathiasiversen Nybegynder
23. april 2001 - 15:05 Der er 13 kommentarer og
3 løsninger

ExecProgram

Er der nogen der ved hvordan man via en delphiprocedure åbner et andet program? Jeg har prøvet at køre \"Delphi-hjælp\'ens\" eksempel: ExecProgram(clock.exe, 1); - men den siger undeclared identifier?
nogen foreslag?
Er der iøvrigt nogle der ved hvordan man skifter ikon på exe-filen?
Avatar billede torbenthyregod Nybegynder
23. april 2001 - 15:08 #1
du skal i hvertfald have \'\' rundt om clock.exe

ExecProgram(\'clock.exe\', 1);

Men om det så virker det ved jeg ikke lige
Avatar billede spectual Nybegynder
23. april 2001 - 15:08 #2
1) Du kan bruge winexec.

Winexec (\'program.exe\',sw_normal);

sw_normal er konstant, som angiver at du vil åbne det i normal størrelse.

2) Under project / options finder du funktioner til at skifte ikonet.
Avatar billede snowball Novice
23. april 2001 - 15:11 #3
Brug ShellExecute !

ShellExecute(Handle,\'open\',PChar(\'notepad.exe\'),pchar(\'\'),pchar(\'\'),SW_SHOWNORMAL);

Husk og tilføj ShellAPI under Uses !

Snowball
Avatar billede torbenthyregod Nybegynder
23. april 2001 - 15:11 #4
Avatar billede snowball Novice
23. april 2001 - 15:13 #5
Du ændrer ikonet på din .exe fil ved at gå ind i Project -> Options -> Fanebladet Application. Der kan du ændre dit ikon !

Snowball
Avatar billede martinlind Nybegynder
23. april 2001 - 15:15 #6
Du SKAL gøre som SnowBall siger, DET er måden at gøre det på og det virker altid, og det giver dig den rigtige \"process setup\", jeg har oplevet at programmer ikke kørte når jeg startede dem med en CreateProcess men at det virkede fint når jeg brugte ShellExecute.

/Martin
Avatar billede borrisholt Novice
23. april 2001 - 16:37 #7
Ellers hvis du vil exekvere en exe fil og vente til den er færdig så skal du bruge den følgende funktion :



function ExecAndWait(Filename : String; Parameter: string = \'\'; nCmdShow: integer = sw_normal): longword;
var
    zAppName: array[0..max_path] of char;
    zParameter: array[0..max_path] of char;
    zCurDir: array[0..max_path] of char;
    StartupInfo: TStartupInfo;
    ProcessInfo: TProcessInformation;
begin
  StrPCopy(zAppName,FileName);
  StrPCopy(zParameter,Parameter);
  StrPCopy(zCurDir,GetCurrentDir());
  FillChar(StartupInfo,Sizeof(StartupInfo),#0);
  StartupInfo.cb:=Sizeof(StartupInfo);
  StartupInfo.dwFlags:=STARTF_USESHOWWINDOW;
  StartupInfo.wShowWindow:=nCmdShow;
  if not CreateProcess(zAppName,zParameter,nil,nil,false,CREATE_NEW_CONSOLE or  NORMAL_PRIORITY_CLASS,nil,nil,StartupInfo,ProcessInfo) then
    Result:=0
    else
    begin
      WaitforSingleObject(ProcessInfo.hProcess,INFINITE);
      GetExitCodeProcess(ProcessInfo.hProcess,Result);
    end;
end;


Den kan kaldes således :

procedure TForm1.Button1Click(Sender: TObject);
var
  FileName : TFileName;
begin
  FileName := \'C:\\C++\\Skellet\\Release\\Skellet.exe\';
  ExecAndWait(FileName,\'\', sw_normal);
  Caption :=  FileName + \' done executing\';
end;


Jens B
Avatar billede martinlind Nybegynder
24. april 2001 - 09:39 #8
Jens B. >> Det virker bare ikke ALTID, af u forklarlige årsager.
Avatar billede borrisholt Novice
24. april 2001 - 10:07 #9
Baaah Hest !!! Kan du komme med et eksemple hvor det ikke virker ?

Jens B
Avatar billede martinlind Nybegynder
24. april 2001 - 10:15 #10
Jeg har oplevet at skulle køre et program fra noget script jeg havde lavet, og det kostede faktisk en overarb. lørdag fordi det ikke ville køre det skide program, men gerne alle mulige andre, så lavede jeg min createprocess om til ShellExecute og vupti så virkede det, hvorfor ved jeg ikke, og hvilket program det var jeg skulle køre kan jeg ikke huske, muligvis var det noget med en inf fil der skulle \"DBL-Klikes\" på.

/Martin
Avatar billede borrisholt Novice
24. april 2001 - 10:18 #11
ja ja. godr med dig Martin det er noget du finder på forat få opmærksomhed :-)

Vi har allesammen gennemskuet dig :-)
Avatar billede martinlind Nybegynder
24. april 2001 - 10:35 #12
Beklager meget, men det er den skindbarlige sandhed :-)

Avatar billede spectual Nybegynder
26. april 2001 - 09:49 #13
He he... du er glad for din funktion hva\' borisholt :D

http://www.eksperten.dk/spm/54389
Avatar billede borrisholt Novice
26. april 2001 - 09:50 #14
Den virker jo .....
Avatar billede spectual Nybegynder
26. april 2001 - 09:51 #15
det gør den ....
Avatar billede spectual Nybegynder
26. april 2001 - 09:51 #16
godt endda
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester