GetWindowText mit string vergleichen?!



  • Hallo,
    Ich schreibe derzeit an einem Programm, wo es am Anfang einen login gibt.
    Dafür hab ich Winapi benutzt und stehe nun vor einem seltsamen Problem.
    Ich habe eine Editbox und frage den Wert daraus mit GetWindowText(..); ab.
    Vergleiche ihn dann mit if( GetWindowTextString == String ) es kommt IMMER false herraus, ich habe mir beide strings schon ausgeben lassen, selbst wenn sie exakt gleich sind bekomme ich ein false.
    Es läuft wie folgt:

    char Username[200] = "Blabla";
    char Password[200] = "blablablablabl";
    char UsernameInput[200]; 
    GetWindowText(hwndEdit1, (LPSTR)UsernameInput, GetWindowTextLength(hwndEdit1)+1); 
    char PasswordInput[200]; 
    GetWindowText(hwndEdit2, (LPSTR)PasswordInput, GetWindowTextLength(hwndEdit2)+1); 
    if( Username == UsernameInput )
    MessageBox(.. Granted ..);
    else
    MessageBox(.. Denied ..);
    

    Ich bekomme immer Denied?! 😮



  • Du kannst zwei char Arrays nicht mit == vergleichen (bzw. es wird nicht der Inhalt verglichen). Benutze dazu strcmp und die Verwandschaft.

    http://www.cplusplus.com/reference/clibrary/cstring/strcmp/

    Edit
    Oder benutze std::string wo es geht.
    http://www.cplusplus.com/reference/string/string/
    http://www.cplusplus.com/reference/string/operators/

    #include <string>
    
    // ... im Code
    std::string Username = "Blabla";
    
    char UsernameInput[200]; 
    GetWindowText(hwndEdit1, (LPSTR)UsernameInput, GetWindowTextLength(hwndEdit1)+1);
    
    if (Username == UsernameInput)
    {
       // Granted
    }
    else
    {
       // Denied
    }
    


  • Noch als Ergänzung: Du vergleichst in deinem Code die Adressen die eigentlich nie gleich sein dürfen (es sei denn du weist der eine dem anderen zu).



  • Danke schön.. hat mit std::string funktioniert!


Anmelden zum Antworten