AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Peekmessage einer externen DLL unterbinden?
Thema durchsuchen
Ansicht
Themen-Optionen

Peekmessage einer externen DLL unterbinden?

Ein Thema von stoxx · begonnen am 1. Mär 2010 · letzter Beitrag vom 1. Mär 2010
Antwort Antwort
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#1

Peekmessage einer externen DLL unterbinden?

  Alt 1. Mär 2010, 22:29
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
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

Re: Peekmessage einer externen DLL unterbinden?

  Alt 1. Mär 2010, 22:33
Wenn du zugriff auf den Programmierer hast -> erschlag ihn
Wenn nicht -> schreien (bringt einen nicht weiter, aber man fühlt sich kurzzeitig besser)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Astat

Registriert seit: 2. Dez 2009
Ort: München
320 Beiträge
 
Lazarus
 
#3

Re: Peekmessage einer externen DLL unterbinden?

  Alt 1. Mär 2010, 23:00
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! , am besten du machst dass was "Sir Rufo" geschrieben hat!


lg. Astat
Lanthan Astat
06810110811210410503210511511603209711003210010110 9032084097103
03211611111604403209711003210010110903210010510103 2108101116122
11610103209010110510810103206711110010103210511003 2068101108112
10410503210310111509910411410510109810111003211910 5114100046
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#4

Re: Peekmessage einer externen DLL unterbinden?

  Alt 1. Mär 2010, 23:15
hmmm ... leider kein Zugriff mehr auf den Programmierer ..

hmmmm .. blöd, blöd ....
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#5

Re: Peekmessage einer externen DLL unterbinden?

  Alt 1. Mär 2010, 23:18
Astat .. ich versteh kein Wort *g*
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#6

Re: Peekmessage einer externen DLL unterbinden?

  Alt 1. Mär 2010, 23:42
*post delete* .. ich da nochmal drüber nachdenken .. daran lags nicht ..
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Astat

Registriert seit: 2. Dez 2009
Ort: München
320 Beiträge
 
Lazarus
 
#7

Re: Peekmessage einer externen DLL unterbinden?

  Alt 1. Mär 2010, 23:44
Zitat von stoxx:
Astat .. ich versteh kein Wort *g*
Ok, dann vergiss es gleich wieder.

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?

lg. Astat
Lanthan Astat
06810110811210410503210511511603209711003210010110 9032084097103
03211611111604403209711003210010110903210010510103 2108101116122
11610103209010110510810103206711110010103210511003 2068101108112
10410503210310111509910411410510109810111003211910 5114100046
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:54 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