Forum | | | | - Seite 1 - |
| Andre Hilprecht | Hi, brauche mal wieder Hilfe. Habe in meinem Prog einen Adminbereich der nur über ein einzugebendes Passwort zu erreichen sein soll. Funzt auch alles bestens - nur ich möchte jetzt noch erreichen das auch im Edit-Feld für die Passworteingabe die ***** (Sternchen) und nicht das Passwort in Reinschrift erscheinen. Habe hier schon gesucht aber nix passendes gefunden.
Gruß André |
| | | Ein PC ist die beste Möglichkeit Fehler zu beheben, die ohne PC gar nicht passiert wären. -frei aus Murphy's Computergesetzen
XProfan X2, Win8 Pro 64bit Update von Win7 i5 / 3,2GHz 4 GB RAM Treibstoff: Radeberger Pils | 12.06.2006 ▲ |
| |
| | | | | - Seite 2 - |
| Rolf Koch | entweder Du klickst auf Ausführliche Antwort schreiben und hast da die Formatierungsoptionen oder du setzt es ohne die Leerzeichen zwischen dem code (nur damit es hier dargestellt wird): [c o d e]hier der code[/c o d e] |
| | | | |
| | Jörg Sellmeyer | Andre Hilprecht
Das verstehe ich, alles klar. Vielleicht brauchte ich den Umweg über GetText$(Pass%) nicht gehen, weil mein Passwort kein Wort sondern eine Zahl ist.
Was anderes, wie bekommt ihr den Programmcode hier in so ein Fenster, sieht besser aus und ich muss bestimmt mal wieder ein paar Zeilen Quellcode posten?
Gruß André
Das ist kein Umweg sondern die einzige Möglichkeit an den Text zu kommen - egal ob Text oder Zahl. Pass% enthält nur das Handle zum Editcontrol. Wenn Du eine Zahl hast und weiterverwenden willst, darfst Du nicht vergessen sie mit Val(GetText$(Pass%)) in einen numerischen Wert zu verwandeln.
Gruß Jörg |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 13.06.2006 ▲ |
| |
| | | | | | | |
| | Andre Hilprecht | Hm, ihr macht mir gerade klar, das etwas nicht geht, was bei mir aber funzt ??!!?? Also mein Teil sieht jetzt so aus: KompilierenMarkierenSeparierenText% = @Create(Text,D%,Bitte Programmpasswort eingeben:,20,20,300,20)
Pass% = @Create(Edit,D%,, 20, 50,200,-30)
Font% = @Create(Font,Sans Serif,24,0,0,0,0)
SetFont Pass%, Font%
sendmessage(Pass%,204,ord(*),0)
OK% = @Create(DefButton,D%,OK, 20,140, 140,30)
CANCEL% = @Create(DefButton,D%,Abbruch,180,140,140,30)
@SetFocus(Pass%)
F% = 0
WhileNot F%
WaitInput
If Clicked(OK%)
Pass$ = @GetText$(Pass%)
If Pass$=0000
DestroyWindow(OK%)
F% = 1
DestroyWindow(D%)
Client
ElseIf Pass$ <> 0000
Text1% = @Create(Text,D%,Das Passwort ist leider,20,200,140,20)
Text2% = @Create(Text,D%,F A L S C H ! !,60,220,140,20)
EnableWindow Text%,0
EnableWindow Pass%,0
EnableWindow OK%,0
EnableWindow CANCEL%,0
SLEEP 2500
F% = 1
DestroyWindow(D%)
EndIf
ElseIf @Clicked(CANCEL%)
F% = 1
DestroyWindow(D%)
EndIf
EndWhile
und es funzt jetzt wunschgemäß.
Danke Euch allen, bis zum nächsten Denkanstoß Gruß André |
| | | Ein PC ist die beste Möglichkeit Fehler zu beheben, die ohne PC gar nicht passiert wären. -frei aus Murphy's Computergesetzen
XProfan X2, Win8 Pro 64bit Update von Win7 i5 / 3,2GHz 4 GB RAM Treibstoff: Radeberger Pils | 13.06.2006 ▲ |
| |
| | | Du machst es doch so, wie wir schrieben KompilierenMarkierenSeparieren Pass% ist die ID vom Edit Pass$ ist die Stringvariable wo der Text gespeichert werden soll |
| | | | |
| | | | - Seite 3 - |
| | Andre Hilprecht | Hast Recht, stimmt, das musste ich einbauen weil IMMER die Meldung kam; Das Passwort ist leider falsch! So funzt jetz jedenfalls meine Passwort-Abfrage wunschgemäß und mit Sternchen.
|
| | | Ein PC ist die beste Möglichkeit Fehler zu beheben, die ohne PC gar nicht passiert wären. -frei aus Murphy's Computergesetzen
XProfan X2, Win8 Pro 64bit Update von Win7 i5 / 3,2GHz 4 GB RAM Treibstoff: Radeberger Pils | 13.06.2006 ▲ |
| |
| | Michael Wodrich | Mir sind noch ein Paar Dinge aufgefallen:
Button: Es sollte nur ein DefButton eingesetzt werden, Rest ist Button. Der Grund: Def steht für Default (Vorgabe). Dies ist also der vorgewählte Button.
DestroyWindow(Ok%) - nicht nötig. Wenn Du den Dialog löscht, gehen die daraufliegenden Controls freiwillig mit...
Überhaupt kannst Du die ganzen DestroyWindow() auf 1 reduzieren. Gebe einfach der Variablen F% den Wert 2 wenn das Passwort stimmt. Dann kannst Du hinter der While-Schleife den DestroyWindow setzen und mit Case F% = 2: Client den Programmteil aufrufen.
Schöne Grüße Michael Wodrich (auch Jahrgang 60) |
| | | Programmieren, das spannendste Detektivspiel der Welt. | 13.06.2006 ▲ |
| |
| | Pedro Santos | Hallo
Wie schon Pascal erwähnt Sendmessages bieten eine Menge Möglichkeiten Wäre eine gute Idee hier in der Communty ein Container zu schafen wo Sendmessages mit Beschreibung was es bewirkt abgelegt werden. Gerade für Einsteiger ist das ein Segen
Gruss
Pedro |
| | | | |
| | | @Petro Das wird bei der Zahl an Messages, die es gibt ein schwieriges Unterfangen Alleine die Messages fürs RichEdit würden hier Seiten füllen. Für Windows Allgemein wird das also kaum gehen. Aber vielleicht hat iF hierzu ne Idee, weil grundsätzlich sollte da was möglich sein. |
| | | | |
| | Nico Madysa | Man könnte in der Online-Doku ein Kapitel Messages anlegen. |
| | | | |
| | | Nunja ich könnte nen MessagesPool erfinden - alle Headerfiles von XProfan als Datenbasis einspeisen - und ein leichtes Durchsuchen ermöglichen.
@Nico: In der ODoku gibt es bereits Sheets mit Messages. |
| | | | |
| | | Hallo Andre Hier ist der versprochene Text. Bestimmt kann er noch verbessert werden. Daher kommt er in die Community KompilierenMarkierenSeparierenDECLARE pfad$,programm$,vers$,txt$,PW_datei$
pfad$=GETDIR$(@)
programm$=Beispiel
vers$=1.0
DECLARE txt%,tip%,I%
DECLARE font0%,font1%,font2%
font0%=CREATE(FONT,ARIAL,14,0,0,0,0)
font1%=CREATE(FONT,COMIC SANS MS,18,0,1,0,0)
font2%=CREATE(FONT,ARIAL,16,6,0,0,0)
PROC MASTER_PASS
PROC CODE_PLUS
PARAMETERS In$
DECLARE Out$
Clear Out$
WHILELOOP 1, @Len(In$), 3
Out$ = Out$ + @Chr$(@Ord(
@Mid$(In$, &Loop, 1)) / 4 + 32)
Out$ = Out$ + @Chr$((@Ord(
@Mid$(In$, &Loop, 1)) MOD 4) * 16 +
@Ord(@Mid$(In$, &Loop + 1, 1)) / 16 + 32)
Out$ = Out$ + @Chr$((@Ord(
@Mid$(In$, &Loop + 1, 1)) MOD 16) * 4 +
@Ord(@Mid$(In$, &Loop + 2, 1)) / 64 + 32)
Out$ = Out$ + @Chr$(@Ord(
@Mid$(In$, &Loop + 2, 1)) MOD 64 + 32)
ENDWHILE
RETURN Out$
Die Verschlüsselung stammt aus PROFAN - Du kannst aber damit experimentieren.
Vorsicht - Sicherung anlegen - Dann ändere mal hier die Zahlen 32 auf 64 !
ENDPROC
-----------------------------------------------------------------------------------------
DECLARE P_win&,P_EE%,P_ende%,P_OK%,P_start%
DECLARE PW_datei$,master$,master%,meldung$,txt_off$,txt_on$
-----------------------------------------------------------------------------------------
DIE BEIDEN ANGABEN MÜSSEN HIER STEHEN !!!
PW_datei$=beispiel.pw$ der Name ist frei wählbar
PW_datei$=pfad$+\+PW_datei$ auch der Platz ist frei (Du kannst die Datei z. B. in
C:Windows/System verstecken - Profan-Befehl: $SysPath
Hier wird eine Passwortdatei in dem Verzeichnis abgelegt, in dem auch dieser Text steht.
Der Name ist BEISPIEL.PW$ kann aber frei gewählt werden. Muss aber immer hier stehen
damit das Programm die Datei findet. Das Passwort ist verschlüsselt. Schau Dir mal mit
einem Editor die Datei an.
-----------------------------------------------------------------------------------------
IF FILEEXISTS(PW_datei$) ist ein Passwort vorhanden ?
DECLARE plus_on%,plus_on$
I%=0
ASSIGN #1,PW_datei$
RESET #1
INPUT #1,master$
CLOSE #1
meldung$=Geben Sie hier das Master-Passwort ein - Bestätigen Sie mit der ENTER-Taste oder klicken Sie auf das Häkchen
P_win&=CREATE(DIALOG,%HWnd, +programm$+vers$+ Master-Passwort,SUB(DIV(%MaxX,2),150),SUB(DIV(%MaxY,2),100),300,200)
txt%=CREATE(TEXT,P_win&,meldung$,15,5,270,60)
SetFont txt%,font1%
plus_on%=CREATE(EDIT,P_win&,plus_on$,20,75,200,-20)
SetFont plus_on%,font1%
P_OK%=CREATE(BUTTON,P_win&,OK,235,70,35,25)
SetFont P_OK%,font0%
tip%=CREATE(TOOLTIP,p_win&,P_OK%,Master-Passwort bestätigen)
SetFont tip%,font0%
P_ende%=CREATE(BUTTON,P_win&,Ende,20,120,80,25)
SetFont P_endE%,font0%
tip%=CREATE(TOOLTIP,p_win&,P_ende%,Programm verlassen)
SetFont tip%,font0%
txt%=CREATE(TEXT,P_win&,Versuch 0 / 3,200,130,200,20)
SetFont txt%,font0%
SetFocus(plus_on%)
P_EE%=0
WhileNot P_EE%
WAITINPUT
If GetFocus(P_ende%)
P_EE%=1
DesTroyWindow(P_win&)
END
ENDIF
IF OR(SCanKey(13),GetFocus(P_OK%))
INC I%
plus_on$=GETTEXT$(plus_on%)
plus_on$=UPPER$(plus_on$)
txt_on$=CODE_PLUS(plus_on$)
If txt_on$=master$
P_EE%=1
DesTroyWindow(P_win&)
MessageBox(Das war richtig !,OK,64) Hier würde der Zugang zum gesperrten Programm sein
EndIf
IfNOT txt_on$=master$
plus_on$=
SetText plus_on%,plus_on$
SetFocus(plus_on%)
txt%=CREATE(TEXT,P_win&,STR$(I%),245,130,8,20)
SetFont txt%,font0%
IF GT(I%,2)
P_EE%=1
DesTroyWindow(P_win&)
END nach der 3. Falscheingabe ist Ende
ENDIF
EndIf
ENDIF
WEND
ENDIF
---------------------------------
IFNOT FILEEXISTS(PW_datei$) Keine Passwort-Datei vorhanden
programm$=UPPER$(programm$)
txt$= +programm$+vers$+ Master-Passwort...
meldung$=Das Programm ist nicht gesichert ! - Trotzdem die Daten verschlüsselt werden,
hat jeder Zugriff ! Geben Sie ein MASTER-PASSWORT ein, welches nur Sie kennen. Danach
ist der Zugang zu +programm$+ gesichert. Das Wort kann innerhalb des Programmes
später geändert werden
P_win&=CREATE(DIALOG,%HWnd,txt$,SUB(DIV(%MaxX,2),200),SUB(DIV(%MaxY,2),100),400,200)
txt%=CREATE(TEXT,P_win&,meldung$,10,5,380,60)
SetFont txt%,font0%
master%=CREATE(EDIT,P_win&,master$,10,72,170,-25)
sendmessage(master%,204,ord(*),0)Tipp aus der Community ;o)
SetFont master%,font1% lässt Du das weg, bekommst Du schöne grosse Sternchen !
P_start%=CREATE(BUTTON,P_win&,OHNE Passwort starten...,10,125,200,25)
SetFont P_start%,font0%
tip%=CREATE(TOOLTIP,p_win&,P_start%,OHNE Master-Passwort...)
SetFont tip%,font0%
P_OK%=CREATE(BUTTON,P_win&,Passwort erzeugen und speichern,190,72,190,25)
SetFont P_OK%,font0%
tip%=CREATE(TOOLTIP,P_win&,P_OK%,Master-Passwort speichern)
SetFont tip%,font0%
P_ende%=CREATE(BUTTON,P_win&,Ende,300,125,80,25)
SetFont P_ende%,font0%
tip%=CREATE(TOOLTIP,P_win&,P_ende%,Beenden)
SetFont tip%,font0%
SetFocus(master%)
P_EE%=0
WhileNot P_EE%
WAITINPUT
Case IsKey(13):SetFocus(master%)
IF GetFocus(P_ende%)
P_EE%=1
END
ENDIF
IF GetFocus(P_start%)
P_EE%=1
DesTroyWindow(P_win&)
MessageBox(Zugang OHNE Passwort,OK,64)
END
ENDIF
IF GetFocus(P_OK%)
master$=GETTEXT$(master%)
master$=UPPER$(master$)
master$=CODE_PLUS(master$)
ASSIGN #1,PW_datei$
REWRITE #1
PRINT #1,master$
CLOSE #1
---------------------------------------------------
ASSIGN #2,PW_datei$
SetFAttr #2,$02 Datei-Attribut: Versteckt
---------------------------------------------------
Im Moment auskommentiert. Im fertigen Programm die beiden Programmzeilen aktivieren
P_EE%=1
DesTroyWindow(P_win&)
MessageBox(Zugang mit neuem Passwort. Danach ist der Zugang nur mit Passwort möglich,OK,64)
END
ENDIF
CASE IsKey(13):SetFocus(master%)
WEND
ENDIF
ENDPROC
########################################################################
MASTER_PASS
|
| | | | |
|
AntwortenThemenoptionen | 4.997 Betrachtungen |
ThemeninformationenDieses Thema hat 11 Teilnehmer: |