Passwortschutz beim Starten



  • Hallo,

    ich habe ein bereits fertiges Projekt und möchte nun ein Passwortschutz beim Starten der .exe-Datei haben.

    Habe festgestellt, wenn ich das Programm starte,dann eine andere Form zum Eingeben des Passwortsaufrufe und die Form 1 visible =false setze, dass es dann nicht funktioniert.

    Wie kann ich es machen, wenn bereits die Form 1 da ist und nicht sichtbar sein soll?



  • Wenn Du das zu startenen Form ausschaltest, dann wird es denke ich auch nicht geladen und ich vermute Du hast den Aufrufsbefehl deines Dialoges in einen Event geschrieben vom Form.



  • Habe es versucht mit:

    __fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
    {
    PasswordDlg->Show();
    Form1->visible=false;

    -> Dann kommt eine Fehlermeldung mit Zugriffsverletzung

    Habe aber gerade eine andere Lösung gefunden mit einen Timer

    void __fastcall TForm1::Timer2Timer(TObject *Sender)
    {
    PasswordDlg->Show();
    Form1->visible=false;
    }



  • Da gibt es mehrere Möglichkeiten
    Hier zB in der WinMain (Projekt.cpp Datei):

    #include <vcl.h>
    #pragma hdrstop
    #include <tchar.h>
    #include <memory>
    #include <PassWord.h>
    //---------------------------------------------------------------------------
    USEFORM("Form1.cpp", Form1);
    //---------------------------------------------------------------------------
    WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
    {
    	try
    	{
    		std::auto_ptr<TPasswordDlg> passwdfrm (new TPasswordDlg(NULL));
    		passwdfrm->ShowModal();
    		if (passwdfrm->Password->Text == "123") {
    
    			Application->Initialize();
    			Application->MainFormOnTaskBar = true;
    			Application->CreateForm(__classid(TForm4), &Form4);
    			Application->CreateForm(__classid(TForm3), &Form3);
    			Application->CreateForm(__classid(TPasswordDlg), &PasswordDlg);
    			Application->Run();
    		}
    	}
    	catch (Exception &exception)
    	{
    		Application->ShowException(&exception);
    	}
    	catch (...)
    	{
    		try
    		{
    			throw Exception("");
    		}
    		catch (Exception &exception)
    		{
    			Application->ShowException(&exception);
    		}
    	}
    	return 0;
    }
    


  • Du kannst in der Projektdatei z.B. Application->ShowMainForm = false setzen, dann wird das Hauptformular erst einmal nicht angezeigt. In der OnCreate() des Hauptformulars erzeugst du deine Passwortform mit fPasswort = new TfPasswort(this), angenommen dein Passwortformular heißt fPasswort. Dazu musst du zusätzlich dein fPasswort unter dem Menü "Projekt" -> "Optionen" -> "Formulare" aus den automatisch erzeugten Formularen nehmen. So ist es unter BCB6. Im RAD-Studio wird das ähnlich sein.
    Wenn dann das richtige Passwort eingegeben wurde, machst du ein Application->ShowMainForm = true und ein fMain->Show() falls dein Main-Formular fMain heißt.
    So würde ich das machen. Viel Spaß!

    Gruß



  • Hallo

    Ich habe jetzt aus diesem Thread großzügig das unnütze Getrolle und Geflame gelöscht. Das ist hier unerwünscht.

    bis bald
    akari


Anmelden zum Antworten