Moja DLLka, ma za zadanie sprawdzić hasło i zwrócić odpowiedź do programu czy hasło jest poprawne czy nie.
Jedyny problem jaki mam to to, że korzystam z InputBox a hasło musi być ukryte pod "gwiazdkami".
Nie wiem jak wykorzystać poniższy sposób, na wysłanie komunikatu do InputBox, aby zamienić wpisywane znaki.
W bibliotece "Delphi" nie wie co to jest "message" w linii [5]. Jak temu zaradzić bez użycia modułu "Forms" ?
uses
Windows, Messages, Dialogs;
private // private też nie może być....
procedure Has(var Msg: TMessage); message WM_USER + 200; //tutaj problem, jeśli usunę tą linię... PostMessage nie wykonuje się
procedure Has(var Msg: TMessage);
var
hInputForm, hEdit: HWND;
begin
hInputForm := Screen.Forms[0].Handle;
if (hInputForm <> 0) then
begin
hEdit := FindWindowEx(hInputForm, 0, 'TEdit', nil);
SendMessage(hEdit, EM_SETPASSWORDCHAR, Ord('•'), 0);
end;
end;
Wywołanie w DLLce:
Mimo wysłania komunikatu PostMessage, hasło nadal jest widoczne w InputBox.
function SprawdzHaslo: Boolean; stdcall;
var
Haslo: ShortString;
begin
//Pobierane jest hasło założone
//Haslo := ...
// Sprawdzanie hasła założonego z wpisanym
PostMessage(Application, WM_USER + 200, 0, 0);
Result := InputBox('Wpisz hasło', '', '') = Haslo;
end;