Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi DLL "Windows" function implementieren (https://www.delphipraxis.net/121576-dll-windows-function-implementieren.html)

gizzy 30. Sep 2008 17:25


DLL "Windows" function implementieren
 
Hi,

ich möchte gerne in meiner DLL einige function aus der WIndows Unit(auch aus anderen) verwenden, aber sie nicht komplett einfügen um die größe möglichst gering zu halten.

Bsp: OpenProcess

In der DLL Unit:

Delphi-Quellcode:
uses
  SysUtils,
  Classes,
  resources in 'resources.pas';

[..]
//Funktion mit OpenProcess ...
resources.pas:

Delphi-Quellcode:
unit resources;

interface

const
  kernel32  = 'kernel32.dll';

implementation

function OpenProcess; external kernel32 name 'OpenProcess';

end.
Jetzt meckert der Delphi bei "function Op...": Funktion benötigt Ergebnistyp.
Irgentwie Logisch, aber in der Windows Unit steht das ja genauso :/.

Was muss ich machen?

Mr_G 30. Sep 2008 17:38

Re: DLL "Windows" function implementieren
 
Im Interface-Teil der Unit steht noch so einiges was du brauchst. Such einfach mal nach OpenProcess in der Unit Windows.

gizzy 30. Sep 2008 18:12

Re: DLL "Windows" function implementieren
 
Da steht ne ganze Menge!

Assertor 30. Sep 2008 18:22

Re: DLL "Windows" function implementieren
 
Zitat:

Zitat von Mr_G
Im Interface-Teil der Unit steht noch so einiges was du brauchst. Such einfach mal nach OpenProcess in der Unit Windows.

Zitat:

Zitat von gizzy
Da steht ne ganze Menge!

Lol, Du bist lustig! Mr_G meinte, Du sollst mal nach OpenProcess in Windows.pas suchen. Im Interface-Teil der Unit findest Du:

Delphi-Quellcode:
function OpenProcess(dwDesiredAccess: DWORD; bInheritHandle: BOOL; dwProcessId: DWORD): THandle; stdcall;
{$EXTERNALSYM OpenProcess}
Gruß Assertor

gizzy 30. Sep 2008 18:26

Re: DLL "Windows" function implementieren
 
Danke.
Ich glaub ich komme trotzdem nicht um die Unit herum, da ich auch den Typ "DWord" brauche :?

Mr_G 30. Sep 2008 18:29

Re: DLL "Windows" function implementieren
 
Jaja... da führt eines zum anderen.
DWORD ist aber afaik nichts anderes als ein LongWord. Und LongWord müsste in der Unit System sein.

brechi 1. Okt 2008 12:33

Re: DLL "Windows" function implementieren
 
DWord ist als Cardinal deklariert, wenn ich mich nicht irre.

Ausserdem wird aus der Windows.pas immer nur das eingebunden was du auch wirlkich verwendest. Desahlb wird deine Exe dadurch nicht wirklich kleiner. Das sieht bei der Form.pas z.b. anders aus, da bringt es natürlich etwas. Es gibt auch "tiny" Versionen z.b. für die System.pas/ Sysxx etc. wo du ein paar KB einsparst.

Aber warum muss die Echse so klein sein? auf den KB für die Windows.pas bzw 7KB für die TinySys kommts doch net an oder etwa doch?

stefan2005 1. Okt 2008 15:55

Re: DLL "Windows" function implementieren
 
Hi,
soweit ich weiss steht in der Windows.pas kein Code sondern nur Definitionen von Typen und Funktionen, also bekommt du eine Größenersparnis von genau 0 KB, wenn du diese rauslässt :)

Grüsse,
Stefan

Namenloser 1. Okt 2008 16:00

Re: DLL "Windows" function implementieren
 
Zitat:

Zitat von stefan2005
Hi,
soweit ich weiss steht in der Windows.pas kein Code sondern nur Definitionen von Typen und Funktionen, also bekommt du eine Größenersparnis von genau 0 KB, wenn du diese rauslässt :)

Grüsse,
Stefan

Stimmt nicht, erstens bracuhen Definitionen auch Platz, und zweitens ist sehr wohl Code in der System.pas enthalten.

[edit]Upps, sorry, hab gar nicht gesehen, dass es hier um die Windows.pas geht :oops: [/edit]

stefan2005 1. Okt 2008 16:03

Re: DLL "Windows" function implementieren
 
Hi,
wird reden doch von der Windows.pas und nicht von der System.pas :)
und Definitionen brauchen in der Regel keinen Platz (außer es werden diese Funktionen verwendet)

Grüsse,
Stefan


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:34 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