ein script mit Parametern ausführen lassen
-
Hallo Leute,
ich möchte gerne ein Script mit zusatzparametern in meinem Projekt ausführen.
Zusätzlich soll das Script mit einem besonderen Benutzrecht ausgeführt werden.Mit der Umwandlung von WCHAR nach std string was den Kommand des aufrufes der .bat Datei beinhaltet, gibt es probleme.....
Wie wandle ich das um ??
Hier der Source
std::string m_strEinPfad2 = "c:\test.bat"; std::string SchluesselPfad = "TEST"; std::string SchluesselName = "Schluessel"; std::string strErgebnis = "1"; std::string SchluesselWert = "2"; m_strStartProgramm = m_strEinPfad2 + " " + + " " + SchluesselPfad + " " + SchluesselName + " " + m_strErgebnis + " " + SchluesselWert; STARTUPINFOW si; PROCESS_INFORMATION pi; memset(&si, 0, sizeof(si)); memset(&pi, 0, sizeof(pi)); si.cb = sizeof(si); // Hier habe ich das Problem mit der Umwandlung..... WCHAR szCommandLine[] = m_strStartProgramm; // Darf nicht const sein!!! if(!CreateProcessWithLogonW(L"testaccount", L".", L"hallo", LOGON_WITH_PROFILE, NULL, szCommandLine, NULL, NULL, NULL, &si, &pi)) // Der Punkt beim Parameter 2 bedeutet, das die lokale Benutzerdatenbank verwendet werden soll. { LPVOID lpMsgBuf; FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL ); MessageBox(NULL, (LPCTSTR)lpMsgBuf, NULL, MB_OK | MB_ICONEXCLAMATION); LocalFree(lpMsgBuf); // Bei Fehlermeldung: "Der angegebene Dienst kann nicht gestartet werden..." // überprüfe ob der Dienst "Sekundäre Anmeldung" aktiviert und gestartet ist! } CloseHandle(pi.hProcess); CloseHandle(pi.hThread);Kann mir jemand Helfen ??
Gruß
andy_mann
-
Wenn du an der Konvertierung von string nach wchar_t* Probleme hast, dann schreib das doch. Dein geposteter Code hat mit ISO-C++ nicht viel am Hut und das Kernproblem wird in den FAQ sicher schon erklärt (meinetwegen auch string nach wstring; du solltest dich einfach allgemein mit weiten Zeichen und Strings befassen).
-
OK.
sorry, dachte ich bring noch ein paar zusatzt infos mit ein.Aber trotzdem,
wie wandle ich ein std::string in einen WCHAR um ??
Gruß und Danke
andy_mann
-
Hallo,
das muesstest du mal im WinAPI-Forum oder so fragen, denn Standard-C++ kennt
kein WCHAR.mfg
v R
-
Achso...
vielen Dank..
Gruß
andy_mann
-
Es gibt mehrere Möglichkeiten:
size_t count = str.size() + 1; wchar_t* p = new wchar_t[count](); use_facet<ctype<wchar_t> >(locale()).widen(str.c_str(),str.c_str() + str.size(),p); //oder copy(str.begin(),str.end(),p); //... delete[] p; //die simpelste wstring wide(str.begin(),str.end());Wobei in deinem Fall reicht ein einfaches copy.
-
Dieser Thread wurde von Moderator/in Gerard 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.