Öffnen mit ...
-
Hallo
Warum setzt du miti=Form23->ListBox1->Count;
i immer wieder auf den selben Wert?
-
oh, ok
Um die Schleife schneller zu verlassen...
sorry
-
Wobei ich dann ein break schöner finden würde.
-
Hallo,
Es wäre nun wirklich interessant zu wissen, was in ListBox2 steht, aus welcher du ja an der Stelle lpOperation einen String eingesetzt hast...
Naruto1310 schrieb:
[...] Dazu habe ich [...] die Programme (Form23->ListBox2). [...]
Laut Hilfe werden bei lpOperation jedoch keine "Programme" direkt eingesetzt, sondern bestimmte Aktionen, welche dann von den System-Standardprogrammen ausgeführt werden (nehme ich an):
BDS2006-Hilfe schrieb:
ShellExecute Function
--------------------------------------------------------------------------------
Performs an operation on a specified file.
Syntax
HINSTANCE ShellExecute( ..., LPCTSTR lpOperation, ..., ..., ..., ...);
lpOperation:
************
[in] Pointer to a null-terminated string, referred to in this case as a verb, that specifies the action to be performed. The set of available verbs depends on the particular file or folder. Generally, the actions available from an object's shortcut menu are available verbs. For more information about verbs and their availability, see Object Verbs. See Extending Shortcut Menus for further discussion of shortcut menus. The following verbs are commonly used:
edit - Launches an editor and opens the document for editing. If lpFile is not a document file, the function will fail.
explore - Explores the folder specified by lpFile.
find - Initiates a search starting from the specified directory.
open - Opens the file specified by the lpFile parameter. The file can be an executable file, a document file, or a folder.
print - Prints the document file specified by lpFile. If lpFile is not a document file, the function will fail.
NULL - For systems prior to MicrosoftWindows
2000, the default verb is used if it is valid and available in the registry. If not, the "open" verb is used.
For Windows 2000 and later systems, the default verb is used if available. If not, the "open" verb is used. If neither verb is available, the system uses the first verb listed in the registry.
MfG
-
Hier ein Beispiel was in Der ListBoxen stehen kann:
ListBox1:
.PDF
.DOC
.HTMLListBox2:
P:\Programme\AdobeReader 9.0\Reader\AcroRd32.exe
P:\Programme\Microsoft Office\Office10\WINWORD.EXE
P:\Online\Mozilla Firefox\firefox.exeKolumbus schrieb:
Laut Hilfe werden bei lpOperation jedoch keine "Programme" direkt eingesetzt, sondern bestimmte Aktionen, welche dann von den System-Standardprogrammen ausgeführt werden (nehme ich an):
Ich will aber nicht das die Dateien mit den Standard-Programmen geöffnet werden, sondern mit denen die dastehen (es sei den sie stehen nicht da aber soweit bin ich noch nicht).
-
du hast ShellExecute falsch zusammengesetzt:
ShellExecute(0, "open", ListBox2->Items->Strings[i].c_str(), FileName.c_str(), 0, SW_SHOWNORMAL);
So funktionierts dann auch. Allerdings musst du bei FileName.c_str() vorsichtig sein, da nicht jedes Programm einfach einen Pfad als Parameter verwenden kann. Meistens muss noch -f oder irgendetwas vornedran gestellt sein, damit es funktioniert. Bei Winrar funktioniert es zB nicht einfach nur mit Pfad.
greetz KN4CK3R
-
Was genau muss man vorne ranhängen?
-
Das ist nicht fest definiert. Das kommt darauf an, wie die Anwendung die Parameter erwartet und verarbeitet.
-
Ist die Anzahl der Möglichkeiten begrenzt oder gibt es endlos viele? Wenn ja, wie heißen die?
-
Wie bereits gesagt, kann da jede Anwendung einen eigenen Stil haben - bei vielen funktioniert das mit Sicherheit, indem man einfach den Pfad mit übergiebt, aber nicht bei allen.
Wenn es nicht funktionieren sollte, könntest Du so vorgehen:<fiktives! Beispiel>
Angenommen Dein Programm zum Abspielen von .avi Dateien benötigt eine bestimmte Form des Parameters. Entweder in der Dokumentation nachschlagen, oder
Registry öffnen: HKEY_CLASSES_ROOT\AVIFile\shell\open\command
und siehe da:
"C:\Programme\Windows Media Player\wmplayer.exe" /prefetch:8 /Open "%L"
das %L gibt den effektiven Pfad an.Um bei diesem Beispiel zu bleiben: eine DivXFile kann laut Registry direkt durch Anhängen an den DivXPlayer geöffnet werden:
"d:\Programme\DivX\DivX Player\DivX Player.exe" "%1"</fiktives! Beispiel>
Einfach das ganze mal ausprobieren.
-
Also gibt es für fast jedes Programm eine andere Lösung. In meinem Programm soll aber der Anwender festlegen das das für Dateien sind und wie sie geöffnet werden.
Gibt es vielleicht andere Möglichkeiten das zu erreichen (CreateProcess?)?
-
nein
greetz KN4CK3R