Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi programm in dll (https://www.delphipraxis.net/11180-programm-dll.html)

Illuminator-23-5 1. Nov 2003 15:30


programm in dll
 
ich möcht ein prog in einer dll programmieren, sprich alla nonVCL. ich hab mir damit ein paar tutorials durchgelesen, habs aber immer nur mit Handles gefunden. Ich möchts aber ohne handle machen. geht das?
das prog sollte dann durch ein bestimmes ereignis geschlossen werden. starten würd ich das ganze dann mit shellExecute

Luckie 1. Nov 2003 15:50

Re: programm in dll
 
Ein Programm in einer DLL? Was soll das werden? Und was hat das mit Handles zu tun?

Illuminator-23-5 1. Nov 2003 16:10

Re: programm in dll
 
das sollte ein versuch werden
eine Art nonVCL-Prog, nur in einer dll
Und ich habs immer nur mit dem Fenster gefunden, nie ohne, sprich dass das Prog im hintergrund läuft und das Fenster über einen Hook geöffnet wird!

Assarbad 1. Nov 2003 16:17

Re: programm in dll
 
??? Kannst du mal bitte allgemein anerkannte Grammatikregeln des Deutschen benutzen ???

Du willst was?:

1. DLL die ein Fenster erzeugt und anzeigt?
2. DLL die kein Fenster erzeugt?
3. Eine DLL mit oder ohne Hook?

DLLs brauchen IMMER eine Hostanwendung welche sie lädt. Lies dir bitte erstmal die Grundlagen an.

Luckie 1. Nov 2003 16:20

Re: programm in dll
 
Also, Unterschied Programm DLL.

Ein Programm enthält allein ausführbaren Code. Der Loader läd die Anwendung in den Speicher, ruft CreateProcess auf, um den Prozess zu erzeugen (Adressraum bereitstellen, Kernel-Objekt erzeugen). Dann folgt ein Aufruf von CreateThread, um den primären Thread zu starten, der den eigentlichen Code ausführt. Der Prozess selbst führt keinen Code aus, er dient nur als Container für die Threads, welche den eigentlichen Programm-Code dann ausführen.

Eine DLL kann selbst keinen Code ausführen. Eine DLL enthält nur Code der von einem Prozess / Thread ausgeführt werden kann. Dazu wird die DLL in den Adressraum des Prozesses geladen, wo durch der Thread dann Zugriff auf die exportierten Codeteile (Funktionen) der DLL hat.

Was man aber mache kann ist: Die DLL laden und einen Thread starten dessen Code in der DLL liegt. Auf alle Fälle brauchst du einen Prozess, der den Adressraum zur Verfügung stellt und einen Thread, der die DLL läd und den Code der DLL ausführt.

Hmpf, war einer schneller. :cry:

Illuminator-23-5 1. Nov 2003 16:25

Re: programm in dll
 
ich will ein programm
1. in einer dll
2. ohne/mit fenster (wechsebar)
3. mit hooks
4. das mit rundll32.exe ausgeführt wird

Luckie 1. Nov 2003 16:28

Re: programm in dll
 
Und warum darf es keine normale Anwendung sein?

Illuminator-23-5 1. Nov 2003 16:39

Re: programm in dll
 
ich hab mit einem kollegen gewettet, dass es möglich ist, dass ein programm, das keine exe hat, ausgeführt werden kann (über ein anderes Prog)
das möcht ich dann auch noch ausweiten, weil es irgendwie lustig ist!

himitsu 1. Nov 2003 17:28

Re: programm in dll
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi ihr,

ich hatte das mal andersrum versucht. (DLL in einer EXE)

Hab das Projekt derzeit aber nicht zur Hand, deshalb hier nur ein nicht so ideales aber funktionierendes Beispiel.

Vielleicht hilft es ja.

Theoretisch geht das auch so wie du es brauchst, weis aber nicht mehr wie man die DLL starten muß, so das Windows denkt es währe eine EXE (was es ja im Grunde genommen auch ist).

Illuminator-23-5 1. Nov 2003 17:41

Re: programm in dll
 
ausführen is nicht mein problem, das ging ja so:
Delphi-Quellcode:
ShellExecute(0,'','%windir%\System32\rundll32.exe','Test.dll,Main',nil,0);
und Main ist eine prozedur, die am anfang ausgeführt, sprich das hauptprogramm
hat irgendwie geholfen! thx!


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:33 Uhr.
Seite 1 von 3  1 23      

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