Prozesse auslesen Problem



  • Hallo,

    Ich hatte bis jetzt zum auslesen von Prozessen folgenden Code eingesetzt:

    int getProcessList(vector<string>& liste)
    {
    	HANDLE hProcessSnap = CreateToolhelp32Snapshot(  TH32CS_SNAPPROCESS, 0 );
    	if (hProcessSnap == INVALID_HANDLE_VALUE) return 0;
    	PROCESSENTRY32 pe32;
    	pe32.dwSize = sizeof(PROCESSENTRY32);
    	if (!Process32First(hProcessSnap, &pe32))
    	{
    		CloseHandle(hProcessSnap)  ;
    		return 0;
    	}
    
    	do
    	{
    		liste.push_back(pe32.szExeFile);
    	} 
    	while (Process32Next(hProcessSnap, &pe32));
    
    	CloseHandle(hProcessSnap)  ;
    	return liste.size();
    

    Dieser speichert die Prozessnamen in einem String Array. Nun hab ich seit neuen den Visual c++ 2005 Express Compiler, der aber nun bemängelt, das pe32.szExeFile ein WCHAR array liefert und daher keine konvertierung zu string (bzw string&) möglich ist.

    Kann mir jemand bitte eine Konvertierungsmöglichkeit oder einen anderen Lösungsvorschlag geben?

    Danke im Voraus



  • Per default wird ein neues Projekt mit VC2005 in "UNICODE" angelegt! Deshalb liefert es jetzt wchar_t zuürck...
    Für die STL gibt es leider keine vorgefertigte Lösung. Ich würde folgendes Vorschlagen, damit es sich sowohl mit ANSI als auch mit UNICODE überstzen lässt:

    #ifdef _UNICODE
    #define tstring wstring
    #else
    #define tstring string
    #endif
    

    Dann kannst Du immer da wo Du string verwendest hast einen tstring verwenden...



  • Also jetzt wo du das mit per Default Unicode erwähnt hast, hab ich mir gedacht dass man auch einfach das Projekt nach "Multi-Byte Caracter Set" umstellen könnte, was jetzt auch funktioniert hat. Würde das auch ohne Probleme gehen?

    Zu deiner vorgeschlagenen Lösung:
    Wenn ich das jetzt richtig aufgefasst habe muss ich jetzt nach einfügen von deinen Code noch alle "sting" durch "tstring" ersetzten.
    Um dann wstrings auszugeben muss ich ja "wcout" anstatt von cout" verwenden...
    Aber jetzt hab ich das Problem das ich in eine Datei schreiben muss und was muss ich da beim öfnnen der Datei noch einstellen, damit ich wstrings in die Datei schreiben kann?

    ofstream schreiben("prozessliste.txt");
    schreiben << prozessliste[k].getname(); //Wobei prozessliste[k].getname() einen wstring liefert
    

    Funktiniert ja nicht...


Anmelden zum Antworten