![]() |
Wie kann ich ein Programm starten wo ich den Pfad nicht weiß
Hallo zusammen,
ich würde gerne wissen pber eine möglichkeit gibt verschiedene Programme zu starten ohne eine Pfadangebe zu benötigen. Bei Ausfühgren funzt das ja z.B. mit "Delphi32" aber wenn ich "word" oder "winword" eingebe funzt das nicht..... Wenn mir da jemand ein Quelltextbeispiel posten könnte währe ich dankbar! Danke |
Re: Wie kann ich ein Programm starten wo ich den Pfad nicht
Das funktioniert mit Anwendungen die in den Suchpfaden liegen. Standardmäßig sind das zum Beispiel %windir% und %sysdir%.
|
Re: Wie kann ich ein Programm starten wo ich den Pfad nicht
Zitat:
|
Re: Wie kann ich ein Programm starten wo ich den Pfad nicht
Hallo,
ja also habe ich das jetzt richtig verstanden, dass man das in diesem Stil machen soll: -Standardpafd z.B. C:\Windows\Programme\Office wenn programm nicht vorhanden dann: -D:\Programme\Office -Wenn da nicht vorhanden vom Anwender selber definieren lassen... Ist das in sofern Korrekt? Wenn ja habe ich eine Frage noch zum starten an sich, ich habe bei swissdelphicenter einen Quelltext zum starten von Programmen gefunden:
Code:
Ich kann mich aber mal an ein Beispiel erinnern was anders aussah. Ist die obere eine gute Methode oder gibt es bessere möglichkeiten so einen "öffnenquelltext" zu schreiben?
procedure OpenProgram(prog, params: string);
var c, p: array[0..800] of Char; begin StrPCopy(c, prog); StrPCopy(p, params); ShellExecute(Application.Handle, 'open', c, p, nil, SW_NORMAL); end; Danke! |
Re: Wie kann ich ein Programm starten wo ich den Pfad nicht
Zitat:
Dann brauchst du auch keine Pfadangaben. |
Re: Wie kann ich ein Programm starten wo ich den Pfad nicht
Hallo,
ehm wie funct das mit dem OLE genau? Danke! |
Re: Wie kann ich ein Programm starten wo ich den Pfad nicht
Na kürzer geht das mit dem Aufrufen auch noch ^^
Delphi-Quellcode:
ShellExecute(0, 'open', PChar(prog), PChar(params), nil, SW_NORMAL);
oder ShellExecute(0, nil, PChar(prog), PChar(params), nil, SW_NORMAL); Und wo nach den progemmen gesucht wird bekommst du z.B. über solch Systemweite Variablen wie PATH raus (ach, das gute alte DOS ^^) also wenn du einfach nur den Programmnamen angibts wird es wie schonmal gesagt in diesen Pfaden gesucht, sobald es nicht im aktuellen Verzeichnis zu finden ist, wenn es allerdings nicht in enem der Pfade zu finden ist, dann wird es halt nicht gestartet, weil ja es nicht gefunden werden konnte ;) z.B.:
Delphi-Quellcode:
wenn es dich mal so interessiert, hier einige das Variablen, welche es meistens gibt.
ShellExecute(0, nil, 'winword.exe', nil, nil, SW_NORMAL);
mach dir einfach 'ne Datei (z.B. test.bat) kopier das Folgende rein und dann starte diese Datei einfach.
Code:
wichtig ist vorallem %PATH%.
@echo off
echo OS = %OS% echo PATH = %PATH% echo HOMEPATH = %HOMEPATH% echo TEMP = %TEMP% echo USERPROFILE = %USERPROFILE% echo ALLUSERSPROFILE = %ALLUSERSPROFILE% echo ProgramFiles = %ProgramFiles% echo SystemRoot = %SystemRoot% echo SystemDrive = %SystemDrive% echo windir = %windir% echo sysdir = %sysdir% pause und über Delphi kann man Diese mit ![]() |
Re: Wie kann ich ein Programm starten wo ich den Pfad nicht
z.B. aktives Word anzeigen, oder neu öffnen:
Delphi-Quellcode:
weitere Beispiele siehe DP-Suche:
uses
ComObj; // ... var Word: OLEVariant; begin try // offenes Word Dok. holen Word := GetActiveOleObject('Word.Application'); except // sonst neue Word instanz erzeugen Word := CreateOleObject('Word.Application'); // Neues Dok hinzufügen (mit Methode Open('Filename') // kann eine bestimmte Datei geöffnet werden Word.Documents.Add; end; // Word anzeigen Word.Visible := True; end; ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz