Entwickler-Ecke
Windows API - Delphi - Anwendung starten
Anfänger - Sa 31.01.04 15:14
Titel: Delphi - Anwendung starten
Ich möchte mit meinem Programm ein weiteres Delphie-programmiertes Programm starten.
Ich habe gesucht und habe ShellExecute und ExecuteFile gefunden.
Irgendwie scheint mein Computer diese Begriffe nicht anzunehmen.
Habe überlegt, ob es vieleicht an der alten Delphi-Version liegt, aber das Hilfeprogramm kennt die Begriffe (sind alerdings keine Angaben, wie es funktioniert)
probiert hatte ich z.B.
Delphi-Quelltext
1:
| If opendialog1.execute then ShellExecute (opendialog1.Filename); |
(kennt aber wie oben schon genannt ShellExecute nicht;
Moderiert von
DeCodeGuru: Topic verschoben
Delete - Sa 31.01.04 15:35
In den meisten Beiträgen, in denen es um ShellExecute geht, wird das Geheimnis verraten. Du musst die Unit "ShellAPI" in deine Uses-Liste aufnehmen, dann klappt´s auch.
Anonymous - Sa 31.01.04 15:35
Wenn du mal nach
SHELLEXECUTE gesucht hättest, hättest du auch die Lösung gefunden:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| uses ..., ShellApi;
....
ShellExecute(0, 'open', pchar(OpenDialog1.Filename), nil, nil, SW_SHOW); |
Wurstwasserschluerfer - Mo 02.02.04 15:08
Wenn ich versuche (mit eingebundener ShellAPI) so shellexecute aufzurufen, bekomme ich diese fehlermeldung:
[Error] Hauptfenster.pas(245): There is no overloaded version of 'ShellExecute' that can be called with these arguments
die prozedur lautet:
Delphi-Quelltext
1: 2: 3: 4:
| procedure TForm1.Compilelink1Click(Sender: TObject); begin ShellExecute(0,'open','d:\test.txt',nil,nil,SW_Show); end; |
Woran liegt das und wie kann ich es beheben?
Ich hoffe mal, ihr könnt mir helfen.
Moderiert von
DeCodeGuru: Delphi-Tags hinzugefügt
Delete - Mo 02.02.04 17:10
In deinem Profil steht Delphi 8 Ar(s)chitekt ... ;) ... es wird vermutlich nicht funktionieren, ein VCL-Programm mit .NET schreiben zu wollen.
Wurstwasserschluerfer - Mo 02.02.04 18:06
Ich habe am Anfang schon eine "VCL Forms Application" ausgewählt, das müsste eingentlich das richtige sein, denke ich.
MaxiTB - Mo 02.02.04 18:15
Nop - Irrglaube.
ShellExecute ist eine Win32 API Funktion und keine VCL Funktion.
Deshalb kannst du im .NET diese Funktion auch nicht verwenden, aber da gibts eh bessere Lösungen.
Ähm - frag mich jetzt nicht welche, ich hab mein C# Büchlein zu Hause liegen und schon wieder über ein halbes Jahr nix .NETiges mehr gemacht :wink:
Delete - Mo 02.02.04 18:16
Kann ich nicht beurteilen, da ich noch mit D5 arbeite. Aber Delphi 8 hat sicher eine Hilfsfunktion. Und die Fehlermeldung würde ich so deuten, dass es u.U. eine ShellExecute-Funktion gibt, nur dass die Parameter nicht stimmen.
Ich bin sicher, Delphi 8 wird mit einer Hilfe ausgeliefert ... Schau doch mal, was die zum Thema ShellExecute ausspuckt. Das dürfte am schnellsten gehen, und damit könntest du der Erste werden, der das Thema "ShellExecute und .NET" hier beantwortet.
Wurstwasserschluerfer - Di 03.02.04 14:45
Ich hab schon gesucht - er findet shellexecute auch nur als Methode (heisst doch in delphi auch so?) von TCustomFileRun bzw. TFileRun.
"Add TFileRun to an action list to let your application launch an external application or dll in response to user actions."- hört sich zwar gut und genau richtig an, aber ich komm damit auch nicht zurecht.
Vielleicht könnt ihr mir ja mit der TfileRun-hilfe weiterhelfen:
Zitat: |
TFileRun Class
TFileRun is the standard action for performing a specified operation on a file.
Namespace
Borland.Vcl.ExtActns
Syntax
type TFileRun = class;
Description
Add TFileRun to an action list to let your application launch an external application or dll in response to user actions. Controls linked to this action cause your application to perform the operation specified by the Operation property on the file specified by the FileName property.
Before this action fires, configure its properties to indicate what application to launch and how to launch it:
To indicate the target file to run, set the FileName property to the name of a file on which the external application operates or to the name of the application’s executable file. If you want to let the user select the file name instead when the action fires, set the Browse property to true, and an open dialog appears when the action fires.
To indicate what action to perform on the specified file, set the Operation property.
To supply parameters to the external application when it is launched, use the Parameters property.
To specify a default directory for the external application, use the Directory property.
To control how the external application’s window appears (minimized, maximized, hidden, and so on), use the ShowCmd property.
If the external application needs a parent window (to parent a dialog such as a properties dialog), or if you want to allow TFileRun to display error messages, use the ParentControl property.
Hierarchy
System.Object
System.MarshalByRefObject
System.ComponentModel.Component
Borland.Vcl.Classes.TBasicAction
Borland.Vcl.ActnList.TContainedAction
Borland.Vcl.ActnList.TCustomAction
Borland.Vcl.ExtActns.TCustomFileRun
Properties
HInst
Methods
SetupBrowseDialog
|
[/quote]
Chatfix - Di 03.02.04 15:03
In VB.NET kann man das So tun:
Quelltext
1:
| Diagnostics.Process.Start(FileName) |
Ich weiss aber nicht wie dasin D8 aussieht...
Aber auch im .NET kann man Funktionen aus der API kapseln
Anfänger - Di 03.02.04 15:46
Beim mir funktionierts dank Wurstwasserschluerfer.
Habe ja auch nicht delphi 8 :mrgreen:
kleine Frage:
gibts das Problem nur bei Delphi 8
habe zwar keine Lösung, interessiert mich einfach.
Wurstwasserschluerfer - Di 03.02.04 15:49
Anfänger hat folgendes geschrieben: |
Beim mir funktionierts dank Wurstwasserschluerfer. |
Dank mir? Hab ich denn nicht nur Fragen gestellt?
EDIT:warum werden die BBcode-tags mit den eckigen klammern dargestellt und nicht richtig?
EDIT EDIT: korrigiert
MathiasH - Di 03.02.04 17:23
weil beim zweiten tag das "/" fehlt es müsste lauten
Quelltext
1:
| [quote="xyz"].....[/quote] |
Delete - Di 03.02.04 18:40
Chatfix hat folgendes geschrieben: |
In VB.NET kann man das So tun:
Quelltext 1:
| Diagnostics.Process.Start(FileName) |
Ich weiss aber nicht wie dasin D8 aussieht... |
Ich denke mal:
genau so, oder war das nicht der große Vorteil von .NET? Ich meine, dass es auf die Sprache nicht ankommt ...
Anfänger - Di 03.02.04 18:48
Wurstwasserschluerfer hat folgendes geschrieben: |
Dank mir? Hab ich denn nicht nur Fragen gestellt? |
sorry meinte Mathias Simmack
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!