Problem mit ShellExecute(W)
-
ich möchte ein Programm schreiben das einen, über eine richTextBox einegebenen Befehl ala "c:\Windows\explorer.exe" ausführt.
Dafür möchte ich die Fkt. ShellExecute nutzten:ShellExecute(hwndMain, _T( "open"), _T( "c:\Windows\explorer.exe"), NULL, NULL, SW_SHOW);
Also wandle ich per
string str; const char* chars = (const char*)(Marshal::StringToHGlobalAnsi(this->richTextBox1->Text)).ToPointer(); str = chars; Marshal::FreeHGlobal(IntPtr((void*)chars));
den richtextbox->Text (system::string) in einnen std::string um.
Da ich jedoch UNICODE verwende funktioniert das nicht:
ShellExecute(NULL, _T("open"), str.c_str(), NULL, NULL, SW_SHOW); //error C2664: 'ShellExecuteW' : cannot convert parameter 3 from 'const char *' to 'LPCWSTR'
per google findet man nur die oben angegebene Verwendung und nicht die unter Variabelen.
Wie müsste der 3. Parameter richtig heissen?
-
ShellExecute(NULL, _T("open"), _T(str.c_str()), NULL, NULL, SW_SHOW);
-
Leider nicht
string str = "c:\\windows\\explorer.exe"; ShellExecute(NULL, _T("open"), _T( str.c_str()), NULL, NULL, SW_SHOW);
liefert folgende Fehlermeldung
error C2065: 'Lstr' : undeclared identifier error C2228: left of '.c_str' must have class/struct/union
-
Benutze ShellExecuteA oder wandle den System::String in einen std::wstring bzw. wchar_t* String um. Du kannst den System::String auch erst zum std::string machen und dann zum wstring, sinnvoller wäre es aber direkt. Steht hier auch.
-
Wenn ich mal fragen darf:
// convert_system_string.cpp // compile with: /clr
Wie compiliert man mit /clr?
(Ich nutze Visual Studio 2008)
-
Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Verwende doch System::Diagnostics::Process::Start...
-
Dieser Thread wurde von Moderator/in Martin Richter aus dem Forum WinAPI in das Forum C++/CLI mit .NET verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
erstmal @evilissimo & Martin Richter: super dass ihr euch alle so um meinen beitrag streitet
und nochmals vielen Dank an Jochen Kalmbach.
einfacherer gehts nichso nun this->Close().