Password



  • hätte noch ein großes Anliegen bei der Abfrage eines Passwortes:

    1. habe eine Anwendung mit einem tabctrl und einigen Reitern
    2. auf einer Seite befindet sich ein Button der folgendes aufruft:
    void CTabCtrlDlg::OnButton33() 
    {
    MessageBox("SMS.AT:\n  User........, "Angaben über Kenn-und Passwörter:", MB_ICONINFORMATION);	
    }
    
    1. dies wird anstandslos angezeigt und funkt. auch
    2. ich möchte nun, dass der Button erst nach Eingabe des eines Passwortes geöffnet wird
    3. als für mich die wahrscheinlichste Lösung ist:
    void CTabCtrlDlg::OnOK(void) 
    {
    	// für passwort eingefügt!
    	CWnd* pwndPW = GetDlgItem (IDC_TABCTRL); 
    	CString strPW;
    	pwndPW->GetWindowText(strPW);
    	if (strcmp(strPW.GetBuffer(strPW.GetLength()),_T("12345"))==0)
    		MessageBox("Das Passwort ist richtig!","Hinweis",MB_OK|MB_ICONINFORMATION);
    	else
    		MessageBox("Das Passwort ist leider FALSCH!","Fehler",MB_OK|MB_ICONERROR);
    	CDialog::OnOK();
    }
    
    1. jeder weitere Versuch mit einem Eingabefeld (mit Kennwort) scheiterten

    könnt ihr mir bitte weiterhelfen?,
    vorerst danke



  • GetDlgItem(IDC_DEINESBUTTONS)->EnableWindow(TRUE);//TRUE für Aktivieren FALSE für deaktivieren

    [NEW EDIT]
    und warum gehst du den umweg über strcmp du hast duch einen CString
    vergleiche halt strPW == "1234"



  • Was machst du denn da? 😮

    if (strcmp(strPW.GetBuffer(strPW.GetLength()),_T("12345"))==0)
    

    das geht doch viel übersichtlicher:

    if (strPW == _T("12345"))
    

    Nur deinen Ansatz mit dem Passwort habe ich nicht verstanden, daher sage ich dazu lieber nix.



  • danke vorerst!
    lassen wir den code einmal vorläufig weg, bitte seid nett und erklärt mir wie ich das ganze von Anfang an beginnen soll. Habe schon vieles probiert, doch da ich auf keinen grünen Zweig komme, ersuche ich euch um Hilfe
    danke



  • Wie du dein eingegebenes Passwort aus dem Eingabefeld holen kannst, hast du ja schon rausbekommen (GetWindowText()), vergleichen sollte auch nicht das Problem sein (CStrings können mit == verglichen werden) und den Button (de)aktivieren kannst du über EnableWindow() - jetzt mußt du das nur noch so zusammenbauen, wie du es brauchst.

    PS: Statt des Gemisch's aus blanken Pointern und CString's solltest du lieber nur CString verwenden.



  • und wenn du in ResourcenEditor auf deinem Dialog mit der rechten maustaste auf das Editfeld und Eigenschaften klickst, kannst du unter dem Register Format nen hacken bei Kennwort setzen dann werden dir nur visuell Sterne für jedes zeichen gesetzt.



  • LowFly schrieb:

    und wenn du in ResourcenEditor auf deinem Dialog mit der rechten maustaste auf das Editfeld und Eigenschaften klickst, kannst du unter dem Register Format nen hacken bei Kennwort setzen dann werden dir nur visuell Sterne für jedes zeichen gesetzt.

    Dann dürfte aber GetWindowText nur noch ****** liefern und man muss auf eine CString-Wertevariable umsteigen. ⚠


  • Mod

    estartu schrieb:

    Dann dürfte aber GetWindowText nur noch ****** liefern und man muss auf eine CString-Wertevariable umsteigen. ⚠

    Nein ES_PASSWORD hat auf GetWindowtext keinen Einfluss! Es wird brav returniert was auch im Control wirklch eingetippt wurde. Oder habe ich Dich jetzt missverstanden, was Du meintest?



  • estartu schrieb:

    LowFly schrieb:

    und wenn du in ResourcenEditor auf deinem Dialog mit der rechten maustaste auf das Editfeld und Eigenschaften klickst, kannst du unter dem Register Format nen hacken bei Kennwort setzen dann werden dir nur visuell Sterne für jedes zeichen gesetzt.

    Dann dürfte aber GetWindowText nur noch ****** liefern und man muss auf eine CString-Wertevariable umsteigen. ⚠

    Warum den so umständlich? Wenn Du dem Editfeld eine Membervariable gibst, dann beinhaltet die auch den echten String. Das Eigenschaften-Flag Passwort zeigt ja nur visuell die Sterne, intern sind die einzelnen Buchstaben schon vorhanden. Da gibts auch so bösartige Tools, die genau da angreifen um solchen Eingaben auszuspähen.

    Edit: genau das was Martin meint; er war halt schneller


  • Mod

    Genau wie AndyDD es schrieb.
    Ein entsprechedes Hacker Utility gibt es unter Codeproject.

    Ein Password würde ich nur zur Eingabe anbieten und einen Schalter irgendwo in der Administration dieses zu verändern. Einen Dialog in dem das alte Password zum Editieren angeboten würde würde ich um alles in der Welt vermeiden.



  • Martin Richter schrieb:

    Ein entsprechedes Hacker Utility gibt es unter Codeproject.

    ...und die entsprechenden Möglichkeiten, dies zu verhindern ebenfalls 😉 .



  • danke euch allen, Problem gelöst. Prog. funkt,
    wäre etwas für die FAQ,



  • Martin Richter schrieb:

    estartu schrieb:

    Dann dürfte aber GetWindowText nur noch ****** liefern und man muss auf eine CString-Wertevariable umsteigen. ⚠

    Nein ES_PASSWORD hat auf GetWindowtext keinen Einfluss! Es wird brav returniert was auch im Control wirklch eingetippt wurde. Oder habe ich Dich jetzt missverstanden, was Du meintest?

    Nein, du hast mich richtig verstanden.
    Aber das wusste ich wirklich noch nicht. 😮


Anmelden zum Antworten