programma starten onder Delphi?

Pagina: 1
Acties:
  • 122 views sinds 30-01-2008
  • Reageer

  • wheeler
  • Registratie: Juli 1999
  • Laatst online: 12-09 16:49
Ik wil een programma starten onder Delphi winexec(Pchar)). Maar hoe werk je in godsnaam net een Pchar. Ik heb gewoon een dir+ exe die ik wil starten en in een string staan.

  • Onno
  • Registratie: Juni 1999
  • Niet online
Is een pchar niet een pointer naar een char? (of char[])
Kun je dan niet iets zeggen als winexec(^stringmetprogramma) ofzo?

Verwijderd

Warom gebruik je niet gewoon de functie ExecuteFile?

Als ik het goed heb begrepen wil je dus een ander programma starten vanuit delphi. Zie hier de volgende code:

code:
1
ExecuteFile(Bestandsnaam,'','Directory',SW_SHOW);


Bij bestandsnaam vul je gewoon de naam van het bestand in, wat dus gewoon ene string kan zijn vanuit een textbox of weet ik het. Daarna kan je eventueel commandline parameters meegeven voor het te starten programma, in dit geval niet dus ''. Bij directory kan je de directory invullen waar hij het bestand kan vinden (kan je dus realiseren met een OpenDialog of zo) en vervolgens hoe het window moet worden weergeven. Je kan hier kiezen uit SH_Show,SH_SHOWMINIMIZED,SH_SHOWMAXIMIZED. De betekenis daarvan spreekt voor zich denk ik.

Vergeet niet het volgende aan je uses clause toe te voegen:

code:
1
Uses  FMXUtils;


Deze file kan hij waarschijnlijk niet vinden, maar indien je even met zoeken naar het bestandje FMXUtils.dcu zoekt, dan kan je hem vast wel ergens vinden. Deze ff in de map plaatsen bij je project en runnen maar.

Het mooie hiervan is dat hij automatisch het programma opent die geassocieert is met het bestandstype in de registries van windows. Dus als ik een bestandnaam als onzin.doc invoer, dan zal hij automatisch Word openen.

Toto slot een voorbeeldje om Word te openen vanuit Delphi:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Unit MijnProgramma;
Interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Mask, DBCtrls, ExtCtrls, Buttons, Grids, DBGrids, FMXUtils;

type
  TOpenProgramma = class(TForm)
    BitBtn1 : TBitBtn;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  OpenProgramma: TOpenProgramma;

implementation

{$R *.DFM}

procedure TOpenProgramma.BitBtn1Click(Sender: TObject);
begin
ExecuteFile('winword.exe','','C:\Program Files\Microsoft Office\Office\',SW_SHOW);
end;

end.


Suc6

Taz

Verwijderd

OK, je hebt een form met een button.
Vervolgens de onclick-event:

procedure form1.button1Click(Sender:TObject);
var P : Pchar;
begin
P := 'programmanaam.exe';
WinExec(P,sw_show); {of een andere sw_}
end;

Dit is de zoekvolgorde voor winexec:
Geknipt en geplakt uit de help :)

1 The current directory.

2 The Windows directory (the directory containing WIN.COM); the GetWindowsDirectory function retrieves the path of this directory.

3 The Windows system directory (the directory containing such system files as GDI.EXE); the GetSystemDirectory function retrieves the path of this directory.

4 The directory containing the executable file for the current task; the GetModuleFileName function retrieves the path of this directory.

5 The directories listed in the PATH environment variable.

6 The directories mapped in a network.

  • joepP
  • Registratie: Juni 1999
  • Niet online
Een PChar is een #0 terminated string. Aangezien Delphi heel anders met strings werkt dan bv C, moet je de Delphi string omzetten naar een PChar. Dit is eenvoudig:

WinExec(PChar(S), ...);

Verwijderd

Op vrijdag 10 maart 2000 11:19 schreef Romkabouter het volgende:
procedure form1.button1Click(Sender:TObject);
var P : Pchar;
begin
P := 'programmanaam.exe';
WinExec(P,sw_show); {of een andere sw_}
end;
ok ik ben een echte delphi n00b en bezig met men eerste proggel.
ik ben nu zo ver dat ie met dit stukje code een ander programma opent maar ik krijg het maar niet voorelkaar om de exe file parameters mee tegeven die in Edit1.Text staan

(ik wil dus dat er bijv. dos.exe -(edit1.text) waar edit1.text een parameter die in edit1.text staat geopend word )
ik kom er echt niet meer uit :'(

  • jopiek
  • Registratie: September 2000
  • Laatst online: 21-08 19:56

jopiek

Tja... 'ns ff denken.

Op zaterdag 22 september 2001 10:03 schreef Razzie het volgende:

[..]

ok ik ben een echte delphi n00b en bezig met men eerste proggel.
ik ben nu zo ver dat ie met dit stukje code een ander programma opent maar ik krijg het maar niet voorelkaar om de exe file parameters mee tegeven die in Edit1.Text staan

(ik wil dus dat er bijv. dos.exe -(edit1.text) waar edit1.text een parameter die in edit1.text staat geopend word )
ik kom er echt niet meer uit :'(
je moet gewoon fmxutils gebruiken!!! zit ergens in de demo dir (f3 indrukken en op fmxutils.pas zoeken, deze fmxutils.pas includen in project (map en plusje knop) fmxutils bij uses zetten) je kunt nue de programmanaam in typen in de params (bijv dos.exe dus...) en edit1.text bij de param voor parameters and that should be it...
n.b. eventueel bij parameters '-' + edit1.text

Cogito Ergo Credo


Verwijderd

Ok bedankt voor de hulp allemaal ik heb het voorelkaar!
/me is very happy :)
Pagina: 1