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