Start-Menü programmieren - externe Programme starten



  • Hallo Forum,

    ich habe da ein Problem beim Programmieren mit Visual C++;
    Ich möchte gerne für eine Programm-CD ein Start-Menü erstellen. Meine Buttons sollen dabei 2 Arten von Befehlen ausführen:

    1.) Explorer in einem Bestimmten Verzeichnis starten
    2.) Acrobat-Reader starten und eines meiner PDF-Dokumente (Anleitungen) auf der CD starten.

    Ich hab's mit WinEXEC probiert (und den relativ operatoren .\ und ..\) aber da gibt's nen absturz wegen falsche Escape folge.

    Auch kann dieser Befehl nur EXE dateien starten und keine PDF oder BAT bzw CMS's

    hat da jemand eine Lösung Parat?



  • Hallo,

    also fuer 1. sollte es mit einem einfachen

    system("explorer.exe");
    

    getan sein.

    Achso, wenn du sagst, dass es ein bestimmtes Verzeichnis sein soll:
    Wenn du nur ein \ machst, interpretiert er das als Escape zeichenfolge.
    -----> also nimmst du einfach 2 hintereinander. ("..\\explorer.exe")

    Achja und 2.)
    Wenn PDF-Files mit dem Reader assoziert sind(das sollten sie, wenn er installiert ist),dann kannst du auch tippen:

    system("MeintollesPDF.pdf");
    

    Und es sollte gehen.



  • ich würd ShellExecute nehmen....



  • wami schrieb:

    Ich hab's mit WinEXEC probiert (und den relativ operatoren .\ und ..\) aber da gibt's nen absturz wegen falsche Escape folge.

    das geht auch nicht. anstelle von \ musst du \\ setzen, da ein backslash die von dir genannte escape zeichenfolge ist (wird zum beispiel für: \n - zeilenumsprung; \t - Tabulator; usw. gebraucht)

    mfg Emperor_L0ser



  • Wie kann man die Progs dann wieder schließen?



  • Hi

    Ich benutze

    system(app.exe);
    

    Gibt es eine möglichkeit ohne, dass noch ein "cmd"-Fenster geöffnet wird (möchte eine andere Windows-Anwendung starten.)



  • Hi

    Ich benutze

    system(app.exe);
    

    Gibt es eine möglichkeit ohne, dass noch ein "cmd"-Fenster geöffnet wird (möchte eine andere Windows-Anwendung starten.)



  • Hallo,

    da nimst du

    ShellExecute(handle, "open", "app.exe", NULL, NULL, SW_HIDE);
    

    MSDN

    SW_HIDE Hides the window and activates another window.
    SW_MAXIMIZE Maximizes the specified window.
    SW_MINIMIZE Minimizes the specified window and activates the next top-level window in the z-order.
    SW_RESTORE Activates and displays the window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when restoring a minimized window.
    SW_SHOW Activates the window and displays it in its current size and position.
    SW_SHOWDEFAULT Sets the show state based on the SW_ flag specified in the STARTUPINFO structure passed to the CreateProcess function by the program that started the application. An application should call ShowWindow with this flag to set the initial show state of its main window.
    SW_SHOWMAXIMIZED Activates the window and displays it as a maximized window.
    SW_SHOWMINIMIZED Activates the window and displays it as a minimized window.
    SW_SHOWMINNOACTIVE Displays the window as a minimized window. The active window remains active.
    SW_SHOWNA Displays the window in its current state. The active window remains active.
    SW_SHOWNOACTIVATE Displays a window in its most recent size and position. The active window remains active.
    SW_SHOWNORMAL Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when displaying the window for the first time.

    einds von denen solte das sein um das komsolenfenster verschwinden zu lasen.

    MFG TaccoGo



  • Ich habe es versucht!

    Wenn ich aber kopilieren will kommt immer der Fehler:

    error C2065: 'handle' : nichtdeklarierter Bezeichner
    

    Was stimmt nicht?



  • handle nicht deklariert? sagt doch schon die fehlermeldung!!!



  • Hy , aus der MSDN folgt ...

    ShellExecute Function
    Performs an operation on a specified file.
    Syntax
    HINSTANCE ShellExecute(

    HWND hwnd,
    LPCTSTR lpOperation,
    LPCTSTR lpFile,
    LPCTSTR lpParameters,
    LPCTSTR lpDirectory,
    INT nShowCmd
    );

    Parameters
    hwnd
    [in] Handle to a parent window. This window receives any message boxes that an application produces, such as error reporting.

    d.h entweder du übergibst also ein handle oder aber du willst es eigenstädig laufen lassen und somit übergibst du für hwnd einfach 0 ...



  • Es fukntioniert!
    Habe MSDN noch nicht installiert! Hole dies gleich nach... 😉
    Vielen Dank für die Antwort!


Log in to reply