Witam.
Mam dosyć spory problem (jak dla mnie).
Otóż, bez zbędnego gadania przejde do rzeczy.
Mam program, który na podstawie danych z pliku tworzy przycisk na pulpicie..Procedura wyglada tak:
najpierw wczytuje dane do poszczególnych zmiennych a potem:
CreateWindow('BUTTON', pchar(name), WS_CHILD or WS_VISIBLE, p1, p2, r1, r2, GetDesktopListViewHandle, nr, hInstance, nil);
zmienna name to "caption", p1, p2, r1, r2, to pozycje i rozmiar, i nr..to ten numerek co sie podaje (kurde zapomnialem jak to sie nazywa) w kazdym razie wiecie o co chodzi.
no i dobra..mam sobie jeszcze:
Const
BCLC = WM_USER + 102;
i w case uMsg of mam :
BCLC:
begin
messagebox(wnd, 'aa', 'aa', mb_iconinformation);
end;
zeby pokazalo wiadomosc gdy ktos kliknie na stworzony przycisk...
Teraz moja DLL'ka:
oczywiscie ma:
Const
BCLC = WM_USER + 102;
która jest wysyłana przy kliknięciu na button.
jak na razie wszystko ok.
wracając do pliku z danymi....mam w nim te wszystkie dane (name, p1, p2, r1, r2, nr) itp. i mam nr 100. (na 100% sprawdzone przy odczytywaniu w programie)...
i moja dll :
Function SysMsgProc(nCode: integer; wParam: WPARAM; lParam: LPARAM): lresult; stdcall;
begin
pcws := PCWPSTRUCT(lparam);
case pcws.message of
WM_COMMAND:
begin
if HIWORD(pcws.wParam) = BN_CLICKED then
case LOWORD(pcws.wParam) of
99: //przycisk exit
begin
PostMessage(FindWindow('MojProgram', nil), WM_DESTROY, 0, 0);
end;
100: //stworzony przycisk o "numerku" 100
begin
PostMessage(FindWindow('MojProgram', nil), BCLC, 0, 0);
end;
end;
end else
Result := CallNextHookEx(Hok, nCode, wParam, lParam);
end;
end;
i tu jest (chyba) coś nie tak...odpalam program
wszystko ok, tworzy przycisk na podstawie danych z pliku...
i przy kliknieciu powinien wyswietlic 'aa'...ale zamiast tego po kliknieciu wszystko sie zaczyna sypać, explorer.exe, nawet taskmgr.exe sie sypie jak odpalam....0_o
W czym tkwi problem ? Prosze o pomoc.