Frage

Ich versuche, ShellExecute eine Datei in Excel zu öffnen. Ich lese über die Funktion auf MSDN-Foren, und ich fand die Folowing Informationen über den Griff, der der erste Parameter:

„hwnd [in] Einem Griff zum Fenster Besitzer zum Anzeigen einer Benutzeroberfläche verwendet (UI) oder Fehlermeldungen. Dieser Wert kann NULL sein, wenn der Vorgang nicht mit einem Fenster verbunden ist.“

Ich habe auch gehört, dies zu dem übergeordneten Fenster als Griff bezeichnet. Was ist das übergeordnete / Eigentümer Fenster? Wie Sie unten sehen bin ich NULL für den Griff verwendet wird, aber da der Betrieb in der Tat mit einem Fenster zugeordnet ist, muß ich wohl einen Griff, aber ich weiß nicht, was für den Griff zu verwenden.

ShellExecute(NULL, "open" ,"Excel.exe", 
    "C:\\Documents and Settings\\Lab1\\My Documents\\Test.xls", 
    NULL, SW_SHOWNORMAL);
War es hilfreich?

Lösung

Es ist in der Regel 0

  

Hwnd: Eltern-Fenster, die eine mögliche messagebox erhalten. Dieser Parameter ist in der Regel 0.

Es bezieht sich auf die Top-Level-Fenster: Fenster Sie öffnen, hat keine Eltern, und ist das Hauptfenster für die Anwendung ausgeführt wird,

.

Wenn Sie zwischen Anwendungen wechseln (ALT-TAB), sind Sie das nächste Fenster der obersten Ebene angezeigt wird (die nächste App mit einem Elternteil Griff ist gleich 0) in der z-Reihenfolge (zum Beispiel).

Natürlich die Eltern zu Ihrer App kann nicht sein, die Desktop Window selbst :

  

Wenn Sie ein Kind Fenster, dessen Eltern schaffen GetDesktopWindow (), das Fenster wird nun auf dem Desktop-Fenster geklebt. Wenn Ihr Fenster dann so etwas wie MessageBox () nennt, auch das ist ein modaler Dialog, und dann über Kick der Regeln in und dem Desktop werden deaktiviert und die Maschine ist Toast.

Für den Weg, würde ich doppelte Anführungszeichen Beratung rund um einfache Anführungszeichen: " ' ... ' "

"'C:\\Documents and Settings\\Lab1\\My Documents\\Test.xls'"

Könnte funktionieren auch (nicht getestet) mit Doppel doppelte Anführungszeichen: " "" ... "" "

"""C:\\Documents and Settings\\Lab1\\My Documents\\Test.xls"""

, wie von dieses Thema .


Tatsächlich, wie in Ihre andere Frage von Andy und von Mesidin und in ShellExecute Funktionshandbuch , können Sie die Datei öffnen und den Weg in Parameter übergeben.

ShellExecute( NULL, "open", 
              "Test.xls", "C:\\Documents and Settings\\Lab1\\My Documents\\", 
              NULL, SW_SHOWNORMAL);

Das bedeutet, dass Excel ist die Standardanwendung für obwohl Dateien Erweiterung .xls öffnen.

Andere Tipps

Wenn Sie es sehen beschrieben als „Griff an das übergeordnete Fenster“, es bedeutet, dass es das Fenster ist, dass wird das übergeordnete Fenster von was auch immer UI die Funktion zur Anzeige auswählt. Die Greifen Sie passieren kann oder nicht schon die Eltern aus einem anderen Fenster werden zum Zeitpunkt des ShellExecute nennen, aber das spielt keine Rolle.

Warum sind Sie speziell ShellExecuting Excel? Wenn sie OpenOffice.org haben, sie gebrochen sind - sollten Sie wirklich die „Open“ Verb auf der Tabellendatei werden Aufrufen, brauchen Sie nicht zu hart Code in der „Excel“ Name, das ist, was ShellExecute für ist.

Gibt es einen bestimmten Grund, den Sie verwenden ShellExecute?

Sie können eine xls-Datei öffnen mit [System.Diagnostics.] Process.Start [Name der Datei]
Ich entschuldige mich, ich sah sie nicht an Tags und davon ausgehen, dass Sie .NET verwenden

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top