![]() |
Password Generator NonVCL ~22kb (neu 28.03.09)
Liste der Anhänge anzeigen (Anzahl: 2)
Hey there,
angetrieben von diesem Thread: ![]() Hatte ich ja wie die anderen auch, mich rangesetzt und auch einen Passworgenerator geschrieben! Dabei hab ich mich an das Design und den code von "Rollstuhlfahrer" gehalten, der ja so schon gut genug war. Nur leider ein wenig zu gross. Also hab ich das ganze Ding in nonVCL umprogrammiert... Hier der Link zu dem Passwort Generator von Rollstuhlfahrer: ![]() Neue Version (30.07.08 ) nun wird demonstriert, wie ihr das passwort auch in die zwischenablage bekommt.. diese wurde mit einer CheckBox gelöst, siehe Screenshot Neue Version (01.02.09 ) Habe nun eine Funktion mit eingebaut, die anzeigt wie sicher das PW ist! Diese Funktion ist hier zu finden: ![]() Das Programm zeigt die Sicherheit nun in Prozent an und Färbt das Edit ein! Neue Version (28.03.09 ) Nun können auch eigene Chars ausgewählt werden! |
Re: Password Generator
Liste der Anhänge anzeigen (Anzahl: 1)
Das Programm ist schön klein, nur leider wird auch nichts angezeigt (Anhang)...
|
Re: Password Generator
Du hast zweimal Kleinbuchstaben + Zahlen in der Box stehen, aber einmal sind es Großbuchstaben. ;)
Benutzerdefiniert fehlt mir noch. |
Re: Password Generator
Zitat:
|
Re: Password Generator
Was den Fehler angeht, einfach mal in der Hilfe anchgucken unter runtime errors:
Zitat:
|
Re: Password Generator
Zitat:
und wieso gar nichts im fenster angezeigt wird, das weiß ich auch nicht genau, denn das hatte ich noch gar nicht.. |
Re: Password Generator
Hi,
zu dem Range Check hab ich doch schon ![]() Mit den Änderungen, die ich da gepostet habe, konnte ich das Programm dann auch starten. (Vorher kamm ja immer die Fehlermeldung). Mfg FAlter |
Re: Password Generator
Hilfe lsen bildet. ;)
Zitat:
Delphi-Quellcode:
GetLastError war übrigens 2 (Datei ncht gefunden) nach RegisterCLassEx.
var
{Fensterklasse} wc: TWndClassEx = ( cbSize : SizeOf(TWndClassEx); Style : CS_HREDRAW or CS_VREDRAW; lpfnWndProc : @WndProc; cbClsExtra : 0; cbWndExtra : 0; hbrBackground : color_btnface + 1; lpszMenuName : nil; lpszClassName : ClassName; hIconSm : 0); msg: TMsg; begin InitCommonControls; // <- benötigt für SpinEdit SetLastError(0); wc.hInstance := hInstance; wc.hIcon := LoadIcon(0, IDI_APPLICATION); wc.hCursor := LoadCursor(0, IDC_ARROW); {Fenster anmelden} RegisterClassEx(wc); Writeln(GetLastError); {Fenster erstellen} CreateWindowEx(0, ClassName, AppName, WS_CAPTION or WS_VISIBLE or WS_SYSMENU or WS_MINIMIZEBOX, 0, 0, WindowWidth, WindowHeight, 0, 0, hInstance, nil); // ...; // ...; |
Re: Password Generator
ich hab jetzt die dinge berücksichtig, und oben noch mal eine neue version hochgeladen...
jetzt hatte ich keine fehler mehr, bleibt bloß noch die frage wieso das fenster lehr geblieben ist... ?? :gruebel: |
Re: Password Generator
Das habe ich dir doch gerade erklärt.
|
Re: Password Generator
Ich kann auf jeden Fall bestätigen, dass es jetzt funktioniert :wink:
|
Re: Password Generator
ok danke an alle fürs lösen des problems, so wie es aussieht funktioniert ja nun alles ;-)
sehr gut!! hehe |
Re: Password Generator
Neue Version oben hochgeladen, mit nochmals überarbeitetem quellcode!!
|
Re: Password Generator NonVCL ~22kb (neu 30.07.08)
Oben noch ne neue Version hochgeladen...
|
Re: Password Generator NonVCL ~22kb (neu 30.07.08)
Neue Version (01.02.09 )
Habe nun eine Funktion mit eingebaut, die anzeigt wie sicher das PW ist! Diese Funktion ist hier zu finden: ![]() Das Programm zeigt die Sicherheit nun in Prozent an und Färbt das Edit ein! |
Re: Password Generator NonVCL ~22kb (neu 01.02.09)
Wenn du das Edit mit subclassed und WM_PAINT überscheibst, müsstest du den Hintergrund SetBkMode transparent bekommen. Übrignes hast du viele überflüssige globale Variablen. Zum einen nutzt du sie nicht und zum anderen kannst du sie dir mit GetDlgItem holen, wenn du sie brauchst.
Und wenn du die Checkbox mit BS_AUTOCHECKBOX erzeugst, brauchst du dich nicht um den Status selber zu kümmern, das macht Windows dann für dich. Noch was, wenn du Dialogressourcen nutzt, dann kannst du dir mit einem Ressourceneditor dein Fenster/Dialog einfach zusammenklicken und brauchst nicht alles mühsam zur Laufzeit erstellen. Wenn du deine Nachrichtenchleife so erweiterst:
Delphi-Quellcode:
Und den Steuerelementen den Stil WS_TABSTOP gibst, kann man auch mit der Tabulatortaste durch die Steuerelemente springen.
{Fenster erzeugen}
hAppWnd := CreateWindowEx(0, ClassName, AppName, WS_CAPTION or WS_VISIBLE or WS_SYSMENU or WS_MINIMIZEBOX, Integer(CW_USEDEFAULT), Integer(CW_USEDEFAULT), WindowWidth, WindowHeight, 0, 0, hInstance, nil); {Nachrichtenschleife aufrechterhalten} while GetMessage(msg, 0, 0, 0) do begin if IsDialogMessage(hAppWnd, msg) = FALSE then begin TranslateMessage(msg); DispatchMessage(msg); end; end; Ach, es nervt, dass die Checkbox, ob das Passwort in die Zwischenablage kopiert werden soll, standardmäßig aktiviert ist. |
Re: Password Generator NonVCL ~22kb (neu 01.02.09)
Erstmal danke für deine Tipps!
Habe das Programm so angepasst wie du geschrieben hast! Bis auf: Zitat:
Und zum Subclassen: Zitat:
Erst nach dem du das geschrieben hast ist mir aufgefallen das er den Hintergrund wieder weiß einfärbt! Du musst aber nicht unbedingt extra das Control "Subclassen" da du dierekt auf den Canvas von wParam der Message "WM_CTLCOLOREDIT" zeichnene kannst! Hatte also nur vergessen das
Delphi-Quellcode:
SetBkMode(wParam, TRANSPARENT);
hinzuzufügen! Das gleiche klappt auch bei anderen Controls wie Combobox oder Label! ACHTUNG: Wenn das Control "disabled" ist, wird die Message nicht gesendet! Und deswegen auch nicht eingefärbt! mfg |
Re: Password Generator NonVCL ~22kb (neu 01.02.09)
Zitat:
|
Re: Password Generator NonVCL ~22kb (neu 01.02.09)
Zitat:
Hab ich mal ein wenig an dem Teil weiter rumgebastelt, jetzt unterstützt er das auswählen eigener Chars! Neue Version im ersten Post hochgeladen! Mfg |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz