Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Peekmessage einer externen DLL unterbinden? (https://www.delphipraxis.net/148434-peekmessage-einer-externen-dll-unterbinden.html)

stoxx 1. Mär 2010 21:29


Peekmessage einer externen DLL unterbinden?
 
ich habe hier eine fremde DLL; die eigentlich synchron laufen soll.
Jetzt hat sich der Entwickler dummerweise gedacht, dass er wohl mal irgendwas aufrufen soll, damit das Programm nicht kurz komplett steht.
das ist aber nun von mir gerade erwünscht, weil ich mit Threads arbeiten will.
Nun taucht das problem auf, dass ich mit CriticalSections die DLL nicht anhalten kann, und beim TEsten zb. ein Buttoclick ausgeführt wird, obwohl der alte Call noch gar nicht fertig ist.
Wenn ich mit sleep Warte, dann steht alles, was ein Zeichen ist, dass irgendjemand was mit "Application.Processmessages" in der DLL macht.

Was macht diese DLL da böses? und kann man das unterbinden vorher irgndwie?

hmmm

Sir Rufo 1. Mär 2010 21:33

Re: Peekmessage einer externen DLL unterbinden?
 
Wenn du zugriff auf den Programmierer hast -> erschlag ihn
Wenn nicht -> schreien (bringt einen nicht weiter, aber man fühlt sich kurzzeitig besser) :mrgreen:

Astat 1. Mär 2010 22:00

Re: Peekmessage einer externen DLL unterbinden?
 
Hallo stoxx, jetzt lass ich meinen Fieberphantasien mal freien lauf.

1. Eigenen Proozess erstellen (Projekt1.exe), der Dll einbindet und verwendet.
2. Mit dieser Projekt1.exe eine IPC aufbauen (Pipes, Sockets etc.), Schnittstelle der Dll in IPC einbauen.
3. Dein Programm (Projekt2.exe) Startet Programm (Projekt1.exe) im suspended mode.
4. Wenn Projekt2.exe bereit für "Empfängnis" ist, resume Projekt1.exe, auf IPC Daten warten,
und sofort suspend Projekt1.exe usw. und so fort..

Grauenhaft ich weiss! :wall: :gruebel: , am besten du machst dass was "Sir Rufo" geschrieben hat!


lg. Astat :drunken:

stoxx 1. Mär 2010 22:15

Re: Peekmessage einer externen DLL unterbinden?
 
hmmm ... leider kein Zugriff mehr auf den Programmierer ..

hmmmm .. blöd, blöd ....

stoxx 1. Mär 2010 22:18

Re: Peekmessage einer externen DLL unterbinden?
 
Astat .. ich versteh kein Wort *g*

stoxx 1. Mär 2010 22:42

Re: Peekmessage einer externen DLL unterbinden?
 
*post delete* .. ich da nochmal drüber nachdenken .. daran lags nicht ..

Astat 1. Mär 2010 22:44

Re: Peekmessage einer externen DLL unterbinden?
 
Zitat:

Zitat von stoxx
Astat .. ich versteh kein Wort *g*

Ok, dann vergiss es gleich wieder.

Zitat:

Zitat von stoxx
Wenn ich mit sleep Warte, dann steht alles, was ein Zeichen ist, dass irgendjemand was mit "Application.Processmessages" in der DLL macht.

Nein, mit Sleep bekommt der betreffende Thread keine Rechenzeit meht zugeteilt, und kann auf nichts mehr reagieren.

Ich stell hier mal einfach in den Raum, dass die DLL korrekt arbeitet, wie Du das beschrieben
hast, kommt mir da nichts ungewöhnlich vor.

1. Dll einfach im Mainthread machen lassen was sie soll.
Wenn die Dll Asynchron arbeitet, sollte es egal sein wenn man eine Antwort zurückgibt, bzw. ob dies
überhaupt notwendig ist.

2. Die Asynchronen DLL Events in einem Threadsaven Buffer stellen.
3. Diesen Buffer dann mit Threads abarbeiten lassen.

Zeigsta mal bitte etwas code? :thumb:

lg. Astat


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:29 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz