Autor Beitrag
DerNetteNachbar
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 224



BeitragVerfasst: Do 18.12.08 13:27 
Hallo erstmal, ich würde ganz gerne in einer DLL den Aufrufer bestimmen, sprich die Anwendung die meine DLL aufgerufen hat. Gibt es dafür bereits eine API Funktion oder muss man sich da was basteln?

MfG

Nachbar
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 18.12.08 14:00 
Natürlich gibt es die, GetModuleFileNameEx:
msdn.microsoft.com/e...ms683198(VS.85).aspx
DerNetteNachbar Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 224



BeitragVerfasst: Do 18.12.08 14:11 
Ich würde aber ganz gerne das Handle der Anwendung bekommen, bzw. das Handle vom TOP Fenster der Anwendung
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 18.12.08 14:27 
Dann ist vermutlich das hier das richtige, GetCurrentProcessId:
msdn.microsoft.com/e...ms683180(VS.85).aspx

Für welches Programm soll die DLL denn sein? Ich meine, normalerweise werden doch alle nötigen Informationen direkt an ein Plugin übergeben (wenn es ein Plugin für ein anderes Programm ist). Da scheint die Schnittstelle zwischen Anwendung und DLL nicht so ganz passend zu sein, aber wenn das nicht dein eigenes Programm ist, für das die DLL ist, dann kannst du da natürlich nichts dran ändern.
DerNetteNachbar Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 224



BeitragVerfasst: Do 18.12.08 15:19 
Und wie komme ich von der ProzessID jetzet auf das Handle des TOP Fensters.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 18.12.08 15:22 
Schau mal hier (10 Sek Google):
www.delphipraxis.net/post4810.html
DerNetteNachbar Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 224



BeitragVerfasst: Do 18.12.08 15:25 
Ich dachte da gibt es eine globale Funktion dafür. Das was in den Thread besprochen wird ist doch Quark.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 18.12.08 15:36 
Wenn es dein eigenes Programm ist, ist die saubere Lösung ja auch über eine exportierte Prozedur die DLL zu initialisieren. Dann kannst du aus der Anwendung alle nötigen Daten übergeben und du sparst dir diese ganzen Verrenkungen. :nixweiss:

Wenn es nicht dein eigenes Programm ist, dann musst du dich eben verrenken.
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 18.12.08 15:40 
Das sag ich doch die ganze Zeit.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 18.12.08 15:51 
Stimmt, ich sehs schon, im anderen Thread. Naja, wenns ihm Spaß macht sich das Leben schwer zu machen... :nixweiss:
DerNetteNachbar Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 224



BeitragVerfasst: Do 18.12.08 16:25 
Hey Leute dank euch für euere Vorschläge es mir leichter zumachen. Da ich aber fest entschlossen bin es auf die Art(API Funktionen) zu machen um mich auch in die API Welt einzuarbeiten werde ich diesen Konzept weiterhin durchziehen.
Ich hoffe mir oder irgenteinem von euch kommt ein Geistesblitz^.

MfG
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 18.12.08 16:28 
Z.B. mit GetWindowThreadProcessId, aber das hatten wir doch neulich erst.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 18.12.08 16:33 
user profile iconDeddyH hat folgendes geschrieben Zum zitierten Posting springen:
Z.B. mit GetWindowThreadProcessId, aber das hatten wir doch neulich erst.
Das wäre ja genau die umgekehrte Richtung, er braucht ja das Fenster. Und ich kenne keine direkte Möglichkeit es zu bekommen. Wie es geht steht ja in dem verlinkten Thread. Ich glaube nicht, dass es einfacher geht. :nixweiss:

Wie sollte es auch einfacher gehen, bei einem Delphi-Programm hat man das versteckte Application-Fenster, bei anderen Programmen nicht, usw., deshalb sehe ich keine andere Möglichkeit als alle Fenster des Prozesses durchzugehen und anzuschauen.
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 18.12.08 16:45 
Genau so habe ich das im anderen Thread ja auch gemacht. Ein "Durchgehen" wird sich nicht umgehen lassen, ob man das von dieser oder von der anderen Seite angeht (3 * "gehen" in einem Satz *gg*).
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 18.12.08 17:07 
user profile iconDerNetteNachbar hat folgendes geschrieben Zum zitierten Posting springen:
Ich dachte da gibt es eine globale Funktion dafür.
Und um dazu noch etwas zu sagen:
Warum sollte es etwas dafür geben? Du willst es auf diese Weise machen, das ist aber nicht die normale Vorgehensweise. Wenn du das so machen willst, ist das ja deine Sache, aber warum sollte es dafür etwas fertiges geben?

Das ist wie wenn du den Trampelpfad nimmst statt eines befestigten Wegs und dich dann ärgerst, wenn es keine Brücke über einen Bach gibt. ;-)
DerNetteNachbar Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 224



BeitragVerfasst: Do 18.12.08 17:15 
Alles klar Leute, ich habs gemerkt das es zu nichts führt. Nur das Problem immernoch ich bekomme doe falsche Process ID aus der DLL. Nämlich ihre eigene und nicht die der aufrufenden Application. Versucht hab ich es mit :
ausblenden Delphi-Quelltext
1:
2:
GetWindowThreadProcessID
GetCurrentProcessID


MfG
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 18.12.08 17:20 
Richtig, die DLL hat ihr eigenes Prozesshandle. Du könntest nun über Umwege versuchen, über FindWindow und GetWindowThreadProcessId das Prozesshandle Deiner Anwendung herauszufinden, bei evtl. mehreren Instanzen oder Fenstern mit gleichem Titel und gleichem Classname kann das aber arg danebengehen. U.a. aus diesen Gründen wollen wir Dir ja nahelegen, das auf anderem Wege zu machen.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 18.12.08 17:22 
Es geht, ich hatte die Doku falsch verstanden was GetCurrentProcessID anging :oops:. Richtig sollte es mit
ausblenden Delphi-Quelltext
1:
MyHandle := GetModuleHandle(nil);					
gehen, wenn ich das richtig verstehe:
msdn.microsoft.com/e...ms683199(VS.85).aspx hat folgendes geschrieben:
If this parameter is NULL, GetModuleHandle returns a handle to the file used to create the calling process (.exe file).
DerNetteNachbar Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 224



BeitragVerfasst: Do 18.12.08 17:28 
Daraufhin wird mir irgentein komisches Handle gesenden was ich gar nicht mit WinSpy ansehen kann. Komisch
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 18.12.08 17:30 
Das ist ja auch ein Prozess- und kein Fensterhandle.