Entwickler-Ecke

Windows API - Per Button .exe mit pfad offnen


Coronder - Mo 17.06.13 19:20
Titel: Per Button .exe mit pfad offnen
Hi leute


ich schreibe weil ich so faul bin ein quick start menü per button und frage euch ob es einen command gibt um eine exe per button zu öffnen




Danke im vorraus

Coronder


Moderiert von user profile iconChristian S.: Topic aus Off Topic verschoben am Di 18.06.2013 um 16:28


WasWeißDennIch - Mo 17.06.13 19:28

Ich denke, Du suchst ShellExecute [http://msdn.microsoft.com/en-us/library/windows/desktop/bb762153%28v=vs.85%29.aspx], ShellExecuteEx [http://msdn.microsoft.com/en-us/library/windows/desktop/bb762154%28v=vs.85%29.aspx] oder CreateProcess [http://msdn.microsoft.com/en-us/library/windows/desktop/ms682425%28v=vs.85%29.aspx].


Gerd Kayser - Di 18.06.13 05:40

user profile iconCoronder hat folgendes geschrieben Zum zitierten Posting springen:
ich schreibe weil ich so faul bin ein quick start menü per button und frage euch ob es einen command gibt um eine exe per button zu öffnen

Für so etwas Triviales reichen doch Verknüpfungen auf dem Desktop oder in einer der Schnellstartleisten.


Coronder - Di 18.06.13 15:19

Ja ich suche ShellExecute aber es klappt bei mir nicht

Und nein ich möchte den Desktop nicht so voll machen

Aber dass mit CreateProcess kannst du mir mal erklären


WasWeißDennIch - Di 18.06.13 15:35

Und welcher Fehler tritt auf? Wie sieht Dein Code aus? Meine Glaskugel ist gerade zur Politur.


jaenicke - Di 18.06.13 16:39

Meine Glaskugel sagt, dass du versuchst einen String als Parameter reinzustecken, obwohl ein PChar erwartet wird. Wenn der Fehler kommt, dass String und PChar nicht kompatible Typen sind, musst du auf PChar casten.

Dass du Fehlermeldungen nicht gleich nennst, ist aber schon ein wenig... seltsam. ;-)


WasWeißDennIch - Di 18.06.13 16:45

Oder ShellAPI nicht in der uses-Klausel, relative Pfade, Tippfehler, falsche Parameter belegt usw. usf. Aber das ist alles Stochern im Nebel.


Coronder - Fr 21.06.13 19:20

wie schreibe ich den command genau egal für was


WasWeißDennIch - Fr 21.06.13 20:25

Prinzipiell so (ganz einfache Variante):

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
uses ..., ShellAPI;

function StartProgram(const Progname, Parameters: string): Boolean;
const
  MAX_SE_ERRORCODE = 32;
begin
  Result := ShellExecute(0'open', PChar(Progname), PChar(Parameters), nil, SW_SHOW) > MAX_SE_ERRORCODE;
end;


jaenicke - Fr 21.06.13 21:26

Wobei die 0 für das Handle dazu führt, dass Nachfragen wie der UAC Prompt nur in der Taskleiste blinken, da kein sichtbares Fenster dem startenden Programm zugeordnet ist... Deshalb sollte man da schon etwas angeben, z.B. das Handle des eigenen Hauptfensters.

user profile iconCoronder hat folgendes geschrieben Zum zitierten Posting springen:
wie schreibe ich den command genau egal für was
Viel sinnvoller wäre es, wenn du schreibst was du versuchst. Wenn du stattdessen nur anderen Quelltext kopierst, lernst du nichts, weil du evtl. gar nicht verstehst was du falsch gemacht hast...


Coronder - Sa 22.06.13 13:02

ich versuche per button einen pfad zu öffnen und das ende des pfades ist eine .exe so

uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
LCLIntf, ShellAPI;


procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute("Pfad")
end;

das versuche ich zu machen aber es funktioniert nicht

kann mir jetzt einer konkret weiterhelfen!!!!!!

Coronder


jaenicke - Sa 22.06.13 13:27

ShellExecute hat ein paar mehr Parameter...
Nur ein Pfad reicht da nicht.

user profile iconWasWeißDennIch hat dir den Link zur Dokumentation ja schon geschrieben:
http://msdn.microsoft.com/en-us/library/windows/desktop/bb762153%28v=vs.85%29.aspx
Dort sind die Parameter alle beschrieben.

Außerdem hat er dir in seinem letzten Post ja sogar ein fertiges Beispiel geliefert...

Das sieht mir dazu noch nach Lazarus aus, ob da die Unit ShellAPI existiert, weiß ich nicht.


Coronder - Sa 22.06.13 22:06

ja ich schreibe mit lazerus oder delphi


Lelf - Sa 22.06.13 22:31

Hallo Coronder,

versuchdochmaldeinefaulheitabzulegen.

Gruß Lelf.


Coronder - Sa 22.06.13 22:37

geht nicht


Delete - Sa 22.06.13 22:51

- Nachträglich durch die Entwickler-Ecke gelöscht -


OlafSt - Sa 22.06.13 22:53

user profile iconCoronder hat folgendes geschrieben Zum zitierten Posting springen:
geht nicht


Du willst also deine Faulheit, uns mit notwendigen Informationen zu versorgen, nicht aufgeben.

Nun, dann geben wir unsere Faulheit, dir absolut nicht helfen zu wollen, auch nicht auf.


Coronder - Sa 22.06.13 23:04

Danke Frühlingsrolle es klappt aber er zeigt trotzdem einen fehler an

unitmenue.pas(73,11) Warning:Symbol"commandline" is deprecated



Coronder

P.S gutes Zitat


Delete - Sa 22.06.13 23:15

- Nachträglich durch die Entwickler-Ecke gelöscht -


Coronder - Sa 22.06.13 23:26

ja es zeigt keine anderen meldungen mehr an


Coronder


Tranx - So 23.06.13 08:10

Coronder,

kleiner Tipp: Computer sind doof! Die können nur das machen, was Du ihnen genau sagst, und sie machen auch nur das. Wenn Du ihnen sagst, sie sollen sich abschalten, dann machen sie das. Das einzige, was vielleicht sein kann, dass sie fragen, ob das wirklich sein soll. In deinem Fall: Schon die Frage ist merkwürdig, die Du gestellt hast:
"ich schreibe weil ich so faul bin ein quick start menü per button und frage euch ob es einen command gibt um eine exe per button zu öffnen"

die ist für uns schon etwas unverständlich, um so mehr für Computer. Was möchtest Du denn? Dass der Computer weiß, dass Du grade jetzt den Explorer öffnen willst? Hört sich wo wie App auf Android an. Menue mit Finger verschieben. Klappt nur mit Computer (wenigstens mit Windows < Windows 8) nicht.