AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

fehler in assarbad DLL tutorial

Ein Thema von snook · begonnen am 14. Mai 2011 · letzter Beitrag vom 17. Mai 2011
Antwort Antwort
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#1

AW: fehler in assarbad DLL tutorial

  Alt 15. Mai 2011, 14:28
Funktionierte damals tadellos, keine Ahnung ob es daran lag, daß ich eine uralte Version von Delphi benutzt habe. Schon zum Zeitpunkt der Veröffentlichung des Tutorials war das Ding 5 Jahre alt oder so. Meine Frage wäre also erstmal, welche Delphiversion du benutzt. Es ist gut möglich, daß das mit Kylox oder so geändert wurde.

Kann dir gern die SXWs zukommen lassen, falls du eine korrigierte Version veröffentlichen willst.

Und auch wenn für DLLProc und DllMain die Aufrufkonventionen verschieden wären, so entsprechen sich diese Funktionen doch direkt in ihrer Funktionalität. Ist halt die Methode wie Delphi es erledigt.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#2

AW: fehler in assarbad DLL tutorial

  Alt 15. Mai 2011, 15:07
Habe soviel in C zur Zeit geschrieben, dass ich das Delphizeugs garnicht mehr kenne

Aber schau dir das mal an:
http://www.delphipraxis.net/151785-d...e-delphi7.html
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
snook

Registriert seit: 25. Jun 2010
94 Beiträge
 
Delphi 2005 Professional
 
#3

AW: fehler in assarbad DLL tutorial

  Alt 15. Mai 2011, 20:00
ooohh jetzt bin ich selber (noch mehr) verwirrt. also worauf ich hinaus wollte war die aufrufkonvention der methode "DLLMain" in assarbadas tutorial. hatte das übernommen (war übrigens eine große hilfe dein tutorial). leider kam es dann immer wieder zu programmabstürzen die sich nirgends abfangen ließen (im anhang mal nen bericht von madexcept). aus zufall bin ich dann auf den oben genannten thread gestoßen, hatte die deklaration der DllProc vairablen ersetzt und alles lief auf einmal hervorragend. kann natürlich gut sein, dass es bei andren delphi versionen verschiedene aufrufkonventionen für diese methode gibt.

Delphi-Quellcode:
library ExtPlugIns;

{ Wichtiger Hinweis zur DLL-Speicherverwaltung: ShareMem muss sich in der
  ersten Unit der unit-Klausel der Bibliothek und des Projekts befinden (Projekt-
  Quelltext anzeigen), falls die DLL Prozeduren oder Funktionen exportiert, die
  Strings als Parameter oder Funktionsergebnisse übergeben. Das gilt für alle
  Strings, die von oder an die DLL übergeben werden -- sogar für diejenigen, die
  sich in Records und Klassen befinden. Sharemem ist die Schnittstellen-Unit zur
  Verwaltungs-DLL für gemeinsame Speicherzugriffe, BORLNDMM.DLL.
  Um die Verwendung von BORLNDMM.DLL zu vermeiden, können Sie String-
  Informationen als PChar- oder ShortString-Parameter übergeben. }



uses
  FastMM4,
  madExcept,
  madLinkDisAsm,
  madListHardware,
  madListProcesses,
  madListModules,
  Windows,
  SysUtils,
  Classes,
  LibMethods,
  ExtPlugIn;

var DLLProcNext : procedure(Reason: Integer) = nil; //<-- hier und unten in der deklaration von DllMain ein stdcall, und es kracht

procedure RegisterPlugIns;
begin
  RegisterPlugIn(1.0,PChar('8.5.2011'),PChar('SP'),PChar('ResourceManager'),
    TResourceManagerPlugIn);
end;

function ExportAdapter(out Adapter): boolean; stdcall;
begin
  result := GetAdapter(Adapter);
end;

procedure DLLMain(Reason: Integer);
begin
  case Reason of
    DLL_PROCESS_ATTACH:
      begin
        CreateAdapter;
        RegisterPlugIns;
      end;
    DLL_THREAD_ATTACH:;
    DLL_THREAD_DETACH:;
    DLL_PROCESS_DETACH: FreeAdapter;
  end;
  if Assigned(DLLProcNext) then DLLProcNext(Reason);
end;

exports

  ExportAdapter name 'GetAdapter';

{$R *.res}

begin
  DLLProcNext := Pointer(InterlockedExchange(Integer(@DLLProc), Integer(@DLLMain)));
  DLLMain(DLL_PROCESS_ATTACH);
end.
ich bin erst seit zwei jahren bei delphi, aber soweit ich das verstanden habe, wird doch DLLProc von Delphi selbst aufgerufen, also sollte man sich doch bei ner änderung des methodenzeigers an die aufrufkonvention der ursprünglichen DllProc halten, und diese ist TDllProc = procedure (Reason: integer) .

was meine delphi version ist, hmmm keine ahnung, benutze BDS 2006, also evtl Delphi 2006?

Geändert von snook (15. Mai 2011 um 20:23 Uhr)
  Mit Zitat antworten Zitat
snook

Registriert seit: 25. Jun 2010
94 Beiträge
 
Delphi 2005 Professional
 
#4

AW: fehler in assarbad DLL tutorial

  Alt 15. Mai 2011, 20:03
sry, hier der bugreport, war zu schnell ^^

edit\\ der fehler lässt sich übrigens gezielt reproduzieren, wenn man in ner dll ne ableitung von TCOmmondialog erzeugt. dann werden einige dlls neu geladen und irgendwie betritt er dann auch die gerade aktive. dabei krachts dann früher oder später
Angehängte Dateien
Dateityp: txt bugreport.txt (23,0 KB, 10x aufgerufen)

Geändert von snook (15. Mai 2011 um 20:11 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#5

AW: fehler in assarbad DLL tutorial

  Alt 15. Mai 2011, 20:43
ich bin erst seit zwei jahren bei delphi, aber soweit ich das verstanden habe, wird doch DLLProc von Delphi selbst aufgerufen, also sollte man sich doch bei ner änderung des methodenzeigers an die aufrufkonvention der ursprünglichen DllProc halten, und diese ist TDllProc = procedure (Reason: integer) .
Leider war meine Glaskugel damals wohl defekt, so daß ich nicht voraussehen konnte, daß sich die Aufrufkonvention ändern würde.
Ich weiß nur, daß es mit Delphi 4 getestet war und funktionierte. Leider habe ich kein Delphi 4 mehr, sondern die älteste Version die ich derzeit habe ist Delphi 7. Ob es wirklich ein Fehler ist kann nur jemand mit Delphi 4 bestätigen. Aber wie Dezipaitor bereits erwähnte, da es sich bei DLLProc um eine interne Geschichte handelt, ist es gut möglich, daß sich das über die Jahre geändert hat.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
snook

Registriert seit: 25. Jun 2010
94 Beiträge
 
Delphi 2005 Professional
 
#6

AW: fehler in assarbad DLL tutorial

  Alt 15. Mai 2011, 20:56
ich hab mich auch schon über die überschrift geärgert, als ich sie dann gelesen hatte. wollte eigentlich nur anderen, die evtl das gleiche problem haben die suche nach dem problem ersparen, weil es echt nicht leciht zu finden war (für mich zumindest)
vielleicht kann ja ein admin die überschrift ändern (in "checkt eure version" oder so )

war nur schon recht spät und ich hab mich zwei wochen mit dem fehler rumgeschlagen. Dennoch hat mir dien tutorial SEEEEHR gehjolfen und ist vielleicht auch mal ein danke angebracht:

DANKE

Geändert von snook (15. Mai 2011 um 20:59 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#7

AW: fehler in assarbad DLL tutorial

  Alt 15. Mai 2011, 21:36
Gern
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#8

AW: fehler in assarbad DLL tutorial

  Alt 16. Mai 2011, 23:42
2 Wochen?? OMG!

Hättest du Assarbad vor 2 Wochen direkt gefragt, dann hättest du sicher schon eine Antwort/Lösung vor einer Woche gehabt
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  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 04:06 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