exe einer externen app finden ohne hdd durchsuchen

Alles rund um die Programmierung mit Qt
Antworten
T1c4L
Beiträge: 41
Registriert: 25. April 2008 17:10

exe einer externen app finden ohne hdd durchsuchen

Beitrag von T1c4L »

Hi alle!

ich hab eine frage, falls ich QDesktopService falsch verstanden habe sagt mir bescheid, ich les dann nochmal nach!

mit QDesktopServices kann ich ja z.bspl. eine url ausführen ( "c:\text.doc" )
daraufhin wird ja die Datei mit einem entsprechendem regstrierten Program, was vermutlich beim windows beispiel word ist öffnen und die datei laden.

Gibt es eine Möglichkeit den Pfad zur word.exe im Vorfeld herauszubekommen?

Dank im voraus!
cheers,
mike
ReaperX
Beiträge: 3
Registriert: 9. Juli 2008 00:13
Wohnort: Magdeburg

Beitrag von ReaperX »

Ich bin noch recht neu in Sachen Qt als nicht hauen :).

was mir Spontan da einfallen würde wären einmal Registry oder du versuchst über den Mime-Type an das verknüpfte Programm zu kommen. Beispielcode kann ich dir dafür allerdings grad nicht liefern.

Gruß
Sebastian
T1c4L
Beiträge: 41
Registriert: 25. April 2008 17:10

Beitrag von T1c4L »

wie könnt ich das machen? ich nutze STL c++ mit QT 4.3.4
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Guck dir QSettings an, den Pfad zu Word findest du in der Registry unter HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Winword.exe
Wie du jetzt heraus findest mit welcher App *.doc verknüpft ist, könnte ja auch OpenOffice oder Papyrus sein, das überlasse ich dir. Die Info findet sich bestimmt auch in der Registry :-)
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
T1c4L
Beiträge: 41
Registriert: 25. April 2008 17:10

Beitrag von T1c4L »

Hi macman

QSettings werd ich mr mal anschauen, das mit word war nur einbeispiel...
gehen wir davon aus das ich nur die dateiendung habe bzw. das filename der zu öffnenden datei. Gibt es einen Weg herauszufinden wie die applicaion fuer die datei heisst?

Ihr kennt das doch wenn eine endung registriert ist kann man sie doppelklicken, sie wird automatisch mit der passenden anwendung geladen. wenn es keine anwednung gibt popt der dialog aufindem man eine anwendung auswählen kann.

Man muss doch irgendwie an diese information rankommen mittels QT.

=( help
-=Freaky=-
Beiträge: 503
Registriert: 29. Dezember 2006 22:54
Wohnort: HL

Beitrag von -=Freaky=- »

T1c4L hat geschrieben:Man muss doch irgendwie an diese information rankommen mittels QT.
es wurde doch schon gesagt, dass diese verknuepfungen dateiendung<->programm unter windows wohl irgendwo in der registry stehen werden.
google mal danach, da wird bestimmt was zu finden sein.

unter linux systemen wird es wohl in irgendwelchen configs des desktop environments stehen.

mfg,
julian
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

T1c4L hat geschrieben:Man muss doch irgendwie an diese information rankommen mittels QT.
Mit Sicherheit nicht, wozu auch. Warum willst Du wissen mit welcher App irgendwas geöffnet wird? Um an die Informationen heran zu kommen wird so plattformspezifisch sein, das du selbst was basteln musst. Und wo man die Informationen her bekommt, wirst du an anderen Stellen fragen müssen, und zwar für jede Plattform einzeln.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
T1c4L
Beiträge: 41
Registriert: 25. April 2008 17:10

Beitrag von T1c4L »

Warum willst Du wissen mit welcher App irgendwas geöffnet wird?
Ich halte dies besser als blind drauf eine Exe zu starten...

Beispiel.:

.mm Dateien sollen mit einem Tool (Freemind) geöffnet werden.
Ich könnte jetzt natürlich hatcodier den pfad zur freemind.exe via QProcess ausführen... fände ich aber sehr dämlich. Da die exe ja nicht immer im selben verzeichnis liegt. Sowas ist ja von PC zu PC anders. mal liegt sie in C:\Programme, mal direkt auf C:\ etc....

mit QDesktopServices kann ich diese .mm Datei öffnen lassen ohne zu wissen wo sich die Exe befindet... aber mit QDesktopServices hab ich keinen zugriff auf den process um zum Beispel rauszufinden ob der User die Application Freemind geschlossen hat.

Daher brauch ich den Pfad zur Exe.
T1c4L
Beiträge: 41
Registriert: 25. April 2008 17:10

Beitrag von T1c4L »

Ihr könnt doch ersehen worauf ich hinaus will oder? Vieleicht ist ja Qprocess der QDesktopservices dafuer der falsche ansatz...

Bin um hilfe sehr dankbar!

Thx an alle die bisher geantwortet haben!
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

T1c4L hat geschrieben:Ihr könnt doch ersehen worauf ich hinaus will oder?
Du willst die Kontrolle über den Prozess und das geht nur wenn Du ihn selbst startest, schon klar. Es gibt aber keinen Weg der auf allen Plattformen funktioniert, dafür ist das zu speziell. Unter Win steht alles in der Registry, beim Mac würde ich den launchd befragen und bei Linux weiß ich es gar nicht mehr. Schon Ewigkeiten nichts mehr mit gemacht.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag von pfid »

macman hat geschrieben:
T1c4L hat geschrieben:Ihr könnt doch ersehen worauf ich hinaus will oder?
Du willst die Kontrolle über den Prozess und das geht nur wenn Du ihn selbst startest, schon klar. Es gibt aber keinen Weg der auf allen Plattformen funktioniert, dafür ist das zu speziell. Unter Win steht alles in der Registry, beim Mac würde ich den launchd befragen und bei Linux weiß ich es gar nicht mehr. Schon Ewigkeiten nichts mehr mit gemacht.
Nunja, man könnte ja zum Beispiel in die Quellen zu QDesktopServices schauen, und nachsehen wie Trolltech das macht ;)

Da ist irgendwo ein Plattform-Switch und die entsprechenden Aufrufe. Vielleicht wird da sogar QProcess verwendet und man kanns einfach kopieren.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

pfid hat geschrieben:Da ist irgendwo ein Plattform-Switch und die entsprechenden Aufrufe.
Aber auch nur wie man den Befehl an den Desktop übergibt. Der Service wird nicht nach dem entsprechenden Programm suchen und QProcess wird wahrscheinlich auch nicht benutzt. Das ist jetzt aber Theorie, hab nicht nach geguckt :-)
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
Sephral
Beiträge: 201
Registriert: 1. Februar 2006 09:40
Kontaktdaten:

Beitrag von Sephral »

Hallo,

unter Windows macht die Auflösung die shell32.dll über die Funktion "FindExecutable".

Der Funktion übergibt man den Pfad zur Datei als Parameter und bekommt den Pfad der verknüpften Anwendung zurück.

C++ Beispiele wie man die Funktion anspricht finden sich im Netz.


Ciao,
Sephral
Antworten