Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme.

MS VC++ und Unicode

Diskussion: MS VC++ und Unicode im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Folgendes Problem, ich nutze seit kurzem MS VC++ und verstehe das nicht ganz mit dem Unicode. Code: const char ...

Antwort
Alt 25.01.09, 13:22   #1 (permalink)
 
Registriert seit: 11.01.08
shinobo Leistung: Facit NTK
Likes: 0
Standard MS VC++ und Unicode

Anzeige

Folgendes Problem, ich nutze seit kurzem MS VC++ und verstehe das nicht ganz mit dem Unicode.

Code:
const char *winName = "Fenster"
FindWindow (NULL,winName)
Beim kompilieren kommt immer der Fehler das er den const char* nicht in ein LPCWSTR konvertieren kann.
Das ist wohl ein Problem mit dem Unicode, nun habe ich aber den Zeichensatz in den Projekteinstellungen auf "Multi Byte Zeichensatz" geändert.
Aber jetzt funktioniert meine Funktion nicht mehr o0
Es kommt zwar kein Fehler aber es klappt nicht, hier mal der ganze Code:

Code:
HANDLE OpenProcess ()
{
    const char *winName = "Fensername";	
    HANDLE winHandle = NULL;
    HWND window = NULL;
    DWORD procid;

    while ( true )
    {

          window = FindWindow( NULL , winName );

          if ( window == NULL ) {
               Sleep ( 900 );
			   std::cout << "not found." << std::endl;
               continue;
               }
          else {
               break;
               }
    }

    GetWindowThreadProcessId ( window , &procid );

    winHandle = OpenProcess ( PROCESS_ALL_ACCESS , false , procid );

    if (!winHandle) 
	{
		return 0; 
	}
    else 
	{
		return winHandle; 
	}
}
Mit einer anderen IDE klappt das ...

Ist der Unicode so richtig deaktiviert ?
Ist was an dem Quellcode falsch ?
shinobo ist offline   Mit Zitat antworten
Alt 25.01.09, 13:38   #2 (permalink)
 
Registriert seit: 07.03.08
90nop Leistung: Facit NTK
Likes: 0
Standard

Du kannst ja die std:string objekte verwenden. Umwandeln in einen LPCSTR muss man aber trotzdem:

Code:
LPCSTR winName;
std:string str("Fenstername");

/* convert string to LPSTR */
winName  = str.c_str();
Das funktioniert zumindest.

Was allerings die sauberste Lösing ist, und ob man unbedingt auf die std zugerifen sollte oder nicht, das ist mir auch nicht klar. Habe ja gerade eine Frage in ne ähnliche Richtung gestellt: C++ Von Typenumwandlungen und LPCSTRs
90nop ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 25.01.09, 19:32   #3 (permalink)
Themenstarter
 
Registriert seit: 11.01.08
shinobo Leistung: Facit NTK
Likes: 0
Standard

Danke erstmal, aber ist es nicht am einfachsten den Unicode zu deaktivieren ?
In anderen IDE's habe ich damit keine Probleme :/
Das ganze mit den LPCSTR etc. verwirrt mich sowieso nur :x
shinobo ist offline   Mit Zitat antworten
Alt 26.01.09, 16:43   #4 (permalink)
 
Registriert seit: 30.06.08
ninetyone Leistung: Facit NTK
Likes: 0
Standard

Unicode würde ich beibehalten, das ist ein guter Zeichensatz.
ninetyone ist offline   Mit Zitat antworten
Alt 26.01.09, 16:46   #5 (permalink)
 
Registriert seit: 14.06.07
Machine Leistung: Facit NTK
Machine eine Nachricht über ICQ schicken
Likes: 0
Standard

Sehe ich auch so. Unicode sollte man im Hinblick auf die Zukunft schon behalten.

Du kannst anstatt
Code:
const char* blablubb = "hui";
einfach
Code:
const wchar_t* blablubb = "hui";
oder auch
Code:
const TCHAR* blablubb = "hui";
schreiben, dann sollte das ohne irgendwelche Herumumwandelei klappen.

Gruß,
Machine
Machine ist offline   Mit Zitat antworten
Alt 26.01.09, 18:24   #6 (permalink)
ss5
 
Registriert seit: 24.12.08
ss5 Leistung: Facit NTK
Likes: 2
Standard

Eiin #undef UNICODE am Anfang hilft, obwohl nicht die "ideale" Lösung
mfg
ss5 ist offline   Mit Zitat antworten
Alt 26.01.09, 18:40   #7 (permalink)
Themenstarter
 
Registriert seit: 11.01.08
shinobo Leistung: Facit NTK
Likes: 0
Standard

um
Code:
const TCHAR* blablubb = "hui";
nutzen zu können was brauche ich denn dann für eine präprozessor direktive ?
Code:
#define _UNICODE
klappt nicht
shinobo ist offline   Mit Zitat antworten
Alt 26.01.09, 23:57   #8 (permalink)
ss5
 
Registriert seit: 24.12.08
ss5 Leistung: Facit NTK
Likes: 2
Standard

hi

Um das nutzen zu können, brauchst du eigentlich keine Präprozessor Diirektive, sondern musst einfach ein 'L' vor den string setzen.

Hier ein kleines bsp, das ich vorhin mit VC++ 9.0 Express Edition gestestet habe.


Code:
#include <windows.h> 
#include <stdio.h> 
 int main() 
{
const TCHAR* blablubb = L"Unbenannt - Editor"; 

return((int)FindWindow(NULL,blablubb));
}

mfg
ss5 ist offline   Mit Zitat antworten
Alt 27.01.09, 00:05   #9 (permalink)
 
Registriert seit: 14.06.07
Machine Leistung: Facit NTK
Machine eine Nachricht über ICQ schicken
Likes: 0
Standard

ooops, ja sorry, das L hab ich in meinem Beispiel vergessen hab zur Zeit viel um die Ohren...
Machine ist offline   Mit Zitat antworten
Alt 27.01.09, 12:46   #10 (permalink)
Themenstarter
 
Registriert seit: 11.01.08
shinobo Leistung: Facit NTK
Likes: 0
Standard

Ja gut alles klar so klappts
Dachte nur man müsste das am anfang deklarieren das ich den Unicode nutzen möchte.
shinobo ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » MS VC++ und Unicode
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
C++ und Unicode Nimda05 Code Kitchen 3 21.04.09 19:58
Sonderzeichen in Unicode Gottzilla Applikationen 0 25.08.06 11:55
Md5Sum in Unicode pLaYbOy Code Kitchen 4 30.01.05 15:54
IIs und Unicode Bug dark faro (In)security allgemein 5 29.07.03 20:16
Der Unicode Bug ToXiC Blue Code Kitchen 4 01.12.02 01:34


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61