przekazywanie danych do dll

0

Witam
Mam problem z przekazywaniem/odczytem danych do biblioteki dll

Wysyłam dane:

procedure Dane(Typ: Byte; Dir: PChar); stdcall external 'KeyHook.dll';
.
.
.
Dane(ScrollBar1.Position, PChar(Edit1.Text));

A odbieram je przez procedure w bibliotece:

procedure Dane(_Typ: Byte; _Dir: PChar); stdcall;
begin
 Typ := _Typ;
 Dir := _Dir;
end;

I dane niby są wysyłane i odbierane lecz gdy chce je wykorzystać w momencie gdy hook zareaguje na dany klawisz to działa mi to tylko wtedy gdy moja aplikacja jest aktywna a gdy inne okno jest aktywne hook działa lecz nie widzi mi wcześniej wysłanych danych

Bardzo proszę o pomoc w tej sprawie
W załączniku umieściłem komplety kod

0

I dane niby są wysyłane i odbierane lecz gdy chce je wykorzystać w momencie gdy hook zareaguje na dany klawisz to działa mi to tylko wtedy gdy moja aplikacja jest aktywna a gdy inne okno jest aktywne hook działa lecz nie widzi mi wcześniej wysłanych danych

Jaki to ma związek z przekazywaniem danych? Po prostu źle hook zakładasz w EXE z którego chcesz to przekazać do DLL czyż nie?

Bardzo proszę o pomoc w tej sprawie

Bardzo proszę o podanie na czym ma polegać ta pomoc.

0
-123oho napisał(a):

Bardzo proszę o podanie na czym ma polegać ta pomoc.
w jaki sposób mam odczytać te dane. Skoro przekazane już zostały do dll to procedury czy funkcje powinny je widzieć niezależnie czy mój program jest aktywny czy też nie. Przecież jeśli mam jakieś zmienne w programie to program zawsze je widzi a nie tylko jak program jest aktywny.

0
lolek32bitowy napisał(a):

w jaki sposób mam odczytać te dane. Skoro przekazane już zostały do dll to procedury czy funkcje powinny je widzieć niezależnie czy mój program jest aktywny czy też nie. Przecież jeśli mam jakieś zmienne w programie to program zawsze je widzi a nie tylko jak program jest aktywny.

Wytłumacz czego chcesz bo jak sam się przyznałeś najpierw gadasz o przekazywaniu parametrów do dllki, co nie wywołuje problemu a potem masz inne pytanie które nie dotyczy tego co opisałeś ni tematu.

0

uruchom program który załączyłem a zobaczysz że przekazane dane są widoczne dla hooka tylko wtedy kiedy mój program jest aktywny
gdy aktywne jest inne okno program nie widzi danych tak jakby w ogóle nie zostały wysłane

0
lolek32bitowy napisał(a):

uruchom program który załączyłem a zobaczysz że przekazane dane są widoczne dla hooka tylko wtedy kiedy mój program jest aktywny
gdy aktywne jest inne okno program nie widzi danych tak jakby w ogóle nie zostały wysłane

To ja mam poświęcać czas na analizę problemu? Chyba gdzieś zapomniałeś kto ma problem.
Do twoich obowiązków należy opisanie problemu a nie danie kodu i oczekiwanie aż każdy go rozkmini.
Nie mam czasu na analizowanie twojego kodu skoro ty nie masz czasu na porządne opisanie co jest nie tak. Gonna eject from this thread.

0

Bo tak się zmiennych globalnych w DLL nie da używać aby każdy proces który załaduje DLL miał te same wartosci w tych zmiennych musisz zrobić trochę pamięci współdzielonej jak np. w tym przykładzie Jak założyć globalnego hooka funkcje: CreateFileMapping MapViewOfFile UnmapViewOfFile CloseHandle

0

-gościu nie masz czau i ochoty to się nie wypowiadaj
-dałem kod bo nie potrafiłem opisać dokładnie w czym rzecz
-na potrzeby pokazania problemu specjalnie ograniczyłem program do więc zajmuje kilka linijek
-gdybym wiedział w czym jest problem (czy z hookiem czy z przesyłaniem czy jeszcze z czymś innym) to bym napisał

tobie już bardzo dziękuje za pomoc i czekam na kogoś kogo faktycznie zainteresuje problem i odpowie

0

-gościu nie masz czau i ochoty to się nie wypowiadaj

-Gościu, nie masz czasu i ochoty to się nie wypowiadaj. Tutaj się oczekuje poprawnego zadania pytania.

-dałem kod bo nie potrafiłem opisać dokładnie w czym rzecz

No właśnie dokładnie opisałeś nie to co trzeba. Jak nie potrafisz się domyślić działania swojego kodu to znaczy ten kod nie jest twój.

-na potrzeby pokazania problemu specjalnie ograniczyłem program do więc zajmuje kilka linijek

I dlatego mam pobierać cały rar, zaśmiecać sobie dysk, męczyć się żeby go otworzyć?

-gdybym wiedział w czym jest problem (czy z hookiem czy z przesyłaniem czy jeszcze z czymś innym) to bym napisał

Napisałeś że jest z przesyłaniem danych. Zobacz np. temat?

tobie już bardzo dziękuje za pomoc i czekam na kogoś kogo faktycznie zainteresuje problem i odpowie

Za późno.

kAzek napisał(a)

Bo tak się zmiennych globalnych w DLL nie da używać aby każdy proces który załaduje DLL miał te same wartosci w tych zmiennych musisz zrobić trochę pamięci współdzielonej

No proszę bardzo, o to mu chodziło, bardzo ciekawe. Wynika nieumiejętność czytania opisów budowy DLLek.
Swoją drogą to ten problem można rozwiązać milion razy prościej jedną funkcją której jednak nie podam bo pytacz nie chce. Nic na siłę.

0
-123oho napisał(a):

Swoją drogą to ten problem można rozwiązać milion razy prościej jedną funkcją której jednak nie podam bo pytacz nie chce. Nic na siłę.

widzę że masz gotowy lek na wszystko lecz nie chcesz się z nim podzielić, na szczęście są ludzie którzy starają się pomóc. jeśli chcesz się wypowiadać to podziel się rozwiązaniem skoro już wiesz w czym tkwi problem a jeśli nie to oszczędź przegadaywania się bo to bezcelowe i nic nie wnosi do tematu.

0
lolek32bitowy napisał(a):

widzę że masz gotowy lek na wszystko lecz nie chcesz się z nim podzielić, na szczęście są ludzie którzy starają się pomóc. jeśli chcesz się wypowiadać to podziel się rozwiązaniem skoro już wiesz w czym tkwi problem a jeśli nie to oszczędź przegadaywania się bo to bezcelowe i nic nie wnosi do tematu.

Sądzisz że jeżeli się do mnie tak odzywasz to będę skłonny do pomocy? Błąd.
Tak, przegadywanie się jest bezcelowe bo nie dorównujesz mi wiedzą, więc wiadomo kto ma rację. Natomiast zachowujesz się jakby było odwrotnie. Poza tym stwierdziłem już że nie potrafisz opisać problemu, oczekujesz tego że my będziemy wokół ciebie skakać i dlatego tobie nie pomogę. Gdyby problem był porządnie postawiony to i nie miałbyś problemów z uzyskaniem odpowiedzi. Natomiast ponieważ stwierdziłeś to co stwierdziłeś to i licz się z konsekwencjami.

0
-123oho napisał(a):

Swoją drogą to ten problem można rozwiązać milion razy prościej jedną funkcją

A tu przyznam, że nie słyszałem o tym że 1 funkcją to załatwić w msdn też podane jest z użyciem CreateFileMapping itd. http://msdn.microsoft.com/en-us/library/windows/desktop/ms686958%28v=vs.85%29.aspx
Zresztą przecież nawet jezeli jest prostszy sposób to ten nie jest wcale skomplikowany i pytający powinien już sobie poradzić. Tym bardziej że dostał link do przykładu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1