Wie Roddy schon sagt, ein Parameter Schalter ich die einzige zuverlässige Lösung denken. Beachten Sie jedoch, dass wenn ein Benutzer eine eigene Verknüpfung erstellt, dies möglicherweise nicht Ihren Anforderungen entspricht.
das heißt, wenn der Benutzer erstellt eine Verknüpfung, die einige „Dokument“ in der Befehlszeile enthält, möchten Sie, dass als Kommandozeilenaufruf oder ein „Doppelklick“ behandelt werden. Meine Vermutung ist, dass es Letzteres ist.
Wenn es den ehemaligen ist, dann können Sie hier aufhören zu lesen. :)
Aber wenn es ist letztere dann müssen Sie unter Umständen ein wenig mehr Arbeit in (mehr) setzen zuverlässig das Verhalten, das Sie wollen bekommen ....
Das bedeuten würde mithilfe einer Befehlszeile umschalten auf Kommandozeile Start, statt einem Doppelklick Start angeben, da es mehrere Möglichkeiten, um „effektiv“ Doppelklick ist, aber nur ein Weg, um etwas von der Kommandozeile ausgeführt werden - das heißt, verwenden Sie die Befehlszeile! (Ich betrachte Startmenü -> Ausführen ... übrigens als Befehlszeilenstart.)
Also, wenn ich es wäre, würde ich einen Befehlszeilenspezifischen Launcher für die Anwendung erstellen. Der Befehlszeilen-Launcher wäre eigentlich ein sehr einfaches Bit von Code, das die gegebene Befehlszeile übernimmt und einfach einen zusätzlichen Parameter anfügt, bevor er die tatsächliche ausführbare Anwendung aufruft:
z.B.
myapp param1 param2
die einfach ShellExecute Anrufe mit effektiv:
myappgui param1 param2 /cmd
Ich selbst würde nicht allzu besorgt mit zwei ausführbare Dateien da der Benutzer weit weniger mit dem tatsächlichen Namen der exe beschäftigt ist, die Ihre "echte" App beim Aufruf darstellt es durch die GUI, weil natürlich die GUI-Aufrufe von diesem nicht bedeuten, den Namen zu kennen oder zu wissen. Ihre Dateitypzuordnungen und Verknüpfungen usw. einfach alle Punkt direkt auf die „echte“ myappgui.exe statt myapp.exe
Und Ihre Befehlszeilenreferenz leitet den Benutzer einfach myapp.exe zu verwenden um Ihre App über eine Befehlszeile aufzurufen.
Wenn die Anwendung in der Anwendung die Befehlszeilenoption findet, weiß sie, dass sie über die Befehlszeilen-Launcher-Anwendung gestartet wurde, andernfalls muss es sich um einen Doppelklick/GUI-Start handeln.
Soweit die Mehrheit Ihrer Benutzer betrifft, müssen sie vielleicht nie einmal wissen, dass es zwei exe's beteiligt. In jedem Fall müssen Sie akzeptieren, dass, wenn ein Benutzer Ihre Technik entdeckt - welche auch immer Sie wählen - sie ihn fälschen können, indem Sie eine Befehlszeile erstellen, um die gewünschten Ziele zu erreichen.
Wenn Ihnen das wichtig ist, macht es der Kommandozeilen-Launcher-Ansatz vielleicht etwas weniger wahrscheinlich, dass sie den Mechanismus entdecken werden - da sie wissen, dass zwei ausführbare Dateien nicht ausreichen - müssten sie auch den Befehlszeilenschalter kennen dass Ihr Kommandozeilen-Launcher fügt hinzu - wenn sie nur myappgui.exe direkt von der Kommandozeile verwendet, ohne die Befehlszeile Launcher myapp.exe zu verwenden, dann wird es immer noch so reagieren, als ob es von der GUI gestartet wurde!
Auf der anderen Seite erfordert die Verwendung eines Schalters, um einen GUI-Start anzuzeigen, die Notwendigkeit, den erforderlichen Schalter auf "Public View" zu setzen.
ja. genau das, was ich brauche. Hm ... verdammt, aber ich denke, dass der basic/dl-Parameter die beste Lösung ist ... –
+1 Roddy für das Finden einer unglaublich kryptischen Frage! – Argalatyr
Mit Argalatyr vereinbart. Diese Frage verstand ich erst, als ich Roddys Antwort gelesen hatte. –