W google przypadkiem znalazłem kod:
function SendMessageByString(hwnd:hwnd;msg: cardinal;wParam: integer;lParam: AnsiString):integer;
stdcall;external 'user32.dll' name 'SendMessageA';
stringa na asistringa zamieniłem
no i ten kod funkcji zamieściłem pod:
implementation
{$R *.dfm}
//tu ta funkcja
No i użycie funkcji, szukam uchwytu do np. pola na tekst w notepadzie, już na szybko podałem wprost uchwyt:
h:= $1207dc;
SendMessageBystring(h, WM_SETTEXT, 0, 'brawo lalala');
no i działa kod, funkcja wysyła do notatnika od razu cały tekst
No i o co chodzi? Po co tu zakładam temat?
Skoro kod działa, a go nie rozumiem, to muszę koniecznie was poprosić o wytłumaczenie, omówienie tego kodu.
function SendMessageByString(hwnd:hwnd;msg: cardinal;wParam: integer;lParam: AnsiString):integer;
stdcall;external 'user32.dll' name 'SendMessageA';
Po kolei:
-
Przyzwyczajony jestem do tego, że pisząc funkcję, ma ona jeszcze pod "begin" jakiś kod do zrobienia, a tutaj tego nie ma i to mnie zdziwiło, bo po prostu innych funkcji nie miałem okazji używać.
Czyli, że co, mogę sobie napisać funkcję, a po niej dopisać external 'nazwa_bibliteki' name 'nazwa funkcji';?? i wtedy nie muszę pisać begin itd, bo ta moja funkcja będzie tak jakby funkcją z biblioteki?
external 'user32.dll' name 'SendMessageA';
ok, SendMessageA jest w dllce user32, czyli to chyba rozumiem, ale patrząc na budowę funkcji SendMessageA lParam jest typu Integer, a tu sobie mogłem dać AnsiString, dlaczego?
Zatem zwracam się z prośbą o wyjaśnienie tego kodu. Dziękuję