Arbeiten mit DLLs?

karldetlef

Erfahrenes Mitglied
Ich versuch gerade mit meinem Freund ein Programm in Delphi 6 zu schreiben, wo ich aber auf bestehende Programme zugreifen muss.
Er hat gemeint es ginge wenn man mit den DLLs arbeitet, ich hab davon aber noch nie gehört.
Er meint es sei so, wie bei solchen HL-Managern wie HLSW, die dann automatisch bei ICQ z.B. den Status auf NA setzen und in mIRC auch /Away etc.
Weiß jemand wie das geht?
 
dll's enthalten meistens einfach funktionen, die nicht nur für ein programm, sondern eventuell für mehrere brauchbar sind. damit spart man sich dann später arbeit, indem man einfach die schon bestehenden funktionen aus einer dll importiert. ausserdem kann man updates so gestalten, dass nur bestimmte dll's ersetzt werden. und dann wird natürlich auch die eigentliche programmdatei viel kleiner. wenn der gesamte code in eine dll ausgelagert wird, ist das executable gerade mal 9kb gross.
aber genug gelabert. :)

dll's kann man auf zwei wege in ein programm einbinden: statisch oder dynamisch. eine statische einbindung bedeutet dabei, dass das dll-file beim programmstart unbedingt vorhanden sein muss. dynamisch bedeutet, dass die dll erst in den speicher geladen wird, wenn das programm sie benötigt. meiner meinung nach ist die dynamische methode besser.
dabei arbeitest du nicht mit der dll direkt, sondern nur mit einem handle der dll. also musst du jedes mal erst die dll in den speicher laden, bevor du die funktionen daraus benutzen kannst:
Code:
type TProc = function: DWord;
procedure TForm1.Button1Click(Sender: TObject);
var
  handle: THandle;
  winver: TProc;
begin
  handle := LoadLibrary('kernel32.dll'); // DLL laden
  if handle = 0 then // Prüfen, ob die DLL geladen worden ist
  begin
    ShowMessage('Laden fehlgeschlagen');
    Exit;
  end;
  winver := GetProcAddress(handle, 'GetVersion'); // Funktion aus der DLL ausführen
  Label1.Caption := IntToStr(Lo(winver)) + '.' + IntToStr(Hi(winver));
  FreeLibrary(handle); // DLL aus dem Speicher freigeben
end;

für mehr zu dem thema steht auch einiges in der online-hilfe. wenn du aber z.b. icq fernsteuern willst, brauchst du sowieso das icq-api.
analog dazu kannst du natürlich auch eigene dll's schreiben. die beiden wichtigsten unterschiede dabei bestehen eigentlich darin, dass am anfang das keyword "library" steht und die funktionen oder objekte exportiert werden können.
 
Ein langer Beitrag, und hilf-/lehrreich ;)
Ich schau jetzt erstmal was sich machen lässt, und wenn ich wieder Fragen hab, dann meld ich mich bei dir :)
Was meinst du mit icq-api?
Thx auf jedenfall für diesen umfassenden Beitrag =)
 
Also, das ICQ-Api, ich habs rausgefunden... =)
Es is aber für die Funktion die ich gebraucht hab, geht es nicht, da die nich freigegeben is :(
Tja, ich werd dann mal nach einer anderen Lösung suchen ;)
 
also ich weiß nich ob dir das hilft, aber wenns allgemein um das arbeiten mit dll's geht könnt ich dir folgende pages empfehlen:
http://www.delphi-source.de [dll-tutorial: http://www.tutorials.delphi-source.de/dlls ]
und
http://www.swissdelphicenter.ch

also mir haben diese pages schon viel geholfen, und ich hoffe das werden sie dir auch ;)

ach ja: falls du zufällig auf ne möglichkeit stösst, wie man die n/a's und so in icq über nen delphi-programm ändern kann, sei doch so nett und poste das hier ma, das würd mich nämlich auch interessiern...
 
Zurück