ShellExecuteEx Problem



  • Hallo Leute,
    ich habe ein Problem mit der ShellExecuteEx, denn ich bringe sie einfach nicht zum Laufen.
    Mit der ShellExecute funktioniert der Aufruf ohne Probleme.

    Wie Bringe ich die ShellExecuteEx Funktion zum laufen? Ich brauche sie denn diese Funktion liefert den „hProcess“ (Prosess Handle), den ich brauche um die
    ::WaitForSingleObject (ShellInfo.hProcess, INFINITE); Funktion aufzurufen

    Das könnte ich zwar auch mit der CreateProcess Funktion machen, doch an die kann ich keine Parameter für das Programm das ich aufrufe übergeben (lpParameters).

    Info:
    BS: Windows XP
    VC++.net Standard (MFC Anwendung Dialogbasierend)
    Die notpad.exe habe ich zur Vereinfachung direkt auf C: kopiert.

    Inkludierte Header:
    #include "Winuser.h"
    #include "Windows.h"
    #include "shellapi.h"
    #include "winbase.h"

    void CProzessDlg::OnBnClickedButton1()
    {
    	::SHELLEXECUTEINFO ShellInfo = {0};
    
    	//Übersicht beim Einzelschritt Debuggen 
    	ShellInfo.cbSize;
    	ShellInfo.dwHotKey;
    	ShellInfo.fMask;
    	ShellInfo.hIcon;
    	ShellInfo.hInstApp;
    	ShellInfo.hkeyClass;
    	ShellInfo.hMonitor;
    	ShellInfo.hProcess;
    	ShellInfo.hwnd;
    	ShellInfo.lpClass;
    	ShellInfo.lpIDList;
    
    	//Initialisierung 
    	ShellInfo.lpDirectory = NULL;
    	ShellInfo.lpFile = "C:\\notepad.exe";	
    	ShellInfo.lpParameters = NULL;
    	ShellInfo.lpVerb = "open";
    	ShellInfo.nShow = SW_SHOW;
    
    	BOOL MyError = ::ShellExecuteEx(&ShellInfo); // funzt net :(					
    	//MyError = 0 (Faild)
    
    	DWORD MyError2 = ::GetLastError();
    	//MyError2 = 5 (Access is denied.) 
    	//oder SE_ERR_ACCESSDENIED = The operating system denied access to the specified file.
    
    //-------------------------------------------------------------------------
    	//Dieser Code Funktioniert warum ist dann oben MyError2 = 5 (Access is denied.)  
    //-------------------------------------------------------------------------
    	//ShellExecute(
    	//m_hWnd,
    	//"open",
    	//"C:\\notepad.exe",
    	//NULL,
    	//NULL,
    	//SW_SHOW );
    //-------------------------------------------------------------------------
    }
    

    Für jede Hilfe bin ich dankbar.

    Dol



  • http://www.c-plusplus.net/forum/viewtopic.php?t=61546

    Das mit den Parametern dürfte sich dann wohl erledigt haben 😉


Anmelden zum Antworten