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 XP-Style in DLL (https://www.delphipraxis.net/59767-xp-style-dll.html)

c113plpbr 28. Dez 2005 14:48


XP-Style in DLL
 
Hallo DP'ler,

mein Problem ist folgendes:
Ein fremdes Programm lädt meine DLL, welche dann eine VCL-Form anzeigt. Das Problem dabei ist, dass dieses fremde Programm kein XP-Style-Manifest enthält, und somit meine Form auch ohne XP-Style angezeigt wird. Dies ist aber nicht in meinem Sinne, und daher suche ich nach einer Möglichkeit dies zu ändern, zumindest für meine Form. Da ein XP-Style-Manifest in meiner DLL relativ sinnlos ist, und InitCommonControls(Ex) den Trick auch nicht fertigbringt, bin ich nun relativ am Ende mit meinem Latein ...

Ich hoffe, ihr könnt mir helfen,
ciao & thx, Philipp

c113plpbr 29. Dez 2005 18:06

Re: XP-Style in DLL
 
Na hat keiner ne Idee? *push*

md_mse 29. Dez 2005 20:58

Re: XP-Style in DLL
 
Da die DLL ja im Kontext des Programms läuft, das keine XP-Themes unterstützt, bekommst du auch keine XP Styles in deine DLL. Jedoch kannst du ja eine *.manifest Datei erstellen, die den Namen der Hostanwendung trägt, und schon sollte es gehen.
(Der Inhalt einer solche Datei sollte ja bekannt sein :gruebel: )

faux 29. Dez 2005 21:05

Re: XP-Style in DLL
 
Was hat das XP-Style mit einer DLL zu tun?
Eine DLL ist im Prinzip nur eine externe Funktionssammlung, und wenn du da nicht eine Funktion aufrusfst, die das Style deines Programmes ändert, sollte es das keine Probleme geben. :?

Grüße
Faux

md_mse 29. Dez 2005 21:10

Re: XP-Style in DLL
 
Zitat:

Zitat von faux
Was hat das XP-Style mit einer DLL zu tun?
Eine DLL ist im Prinzip nur eine externe Funktionssammlung, und wenn du da nicht eine Funktion aufrusfst, die das Style deines Programmes ändert, sollte es das keine Probleme geben. :?

Grüße
Faux

Eine DLL ist nicht unbedingt nur eine Funktionssammlung. DLL's sind im Grunde genommen ja auch nur modifizierte EXE Files.
Und in meine DLL's kann ich ja auch VCL Forms klatschen, ich weiss nicht wie es bei dir ist :wink: .

faux 29. Dez 2005 21:13

Re: XP-Style in DLL
 
Zitat:

Zitat von md_mse
Eine DLL ist nicht unbedingt nur eine Funktionssammlung. DLL's sind im Grunde genommen ja auch nur modifizierte EXE Files.
Und in meine DLL's kann ich ja auch VCL Forms klatschen, ich weiss nicht wie es bei dir ist :wink: .

Trotzdem musst du diese extra aufrufen. Alleiniges referenzieren reicht hier nicht.
Außerdem musst du trotzdem alles in Funktionen packen, wenn du eine Form in eine DLL geben willst. Klassen kannst du da IMHO nicht verwenden.

Grüße
Faux

c113plpbr 29. Dez 2005 21:55

Re: XP-Style in DLL
 
Zitat:

Zitat von faux
Zitat:

Zitat von md_mse
Eine DLL ist nicht unbedingt nur eine Funktionssammlung. DLL's sind im Grunde genommen ja auch nur modifizierte EXE Files.
Und in meine DLL's kann ich ja auch VCL Forms klatschen, ich weiss nicht wie es bei dir ist :wink: .

Trotzdem musst du diese extra aufrufen. Alleiniges referenzieren reicht hier nicht.
Außerdem musst du trotzdem alles in Funktionen packen, wenn du eine Form in eine DLL geben willst. Klassen kannst du da IMHO nicht verwenden.

Ääähm ... funktioniert folgendermaßen:
Programm lädt DLL -> Programm ruft Funktion aus der Dll auf -> DLL zeigt VCL-Form an -> ... VCL Form hat *kein* XP-Style ... -> Problem

Das mit dem Manifest wäre soweit kein problem, doch leider ist das "fremde" Programm dass meine dll lädt rundll32.exe, und dieses liegt bekanntlicherweise im system-verzeichnis, auf welches leider nicht jeder zugriffsrechte hat. Und mein Programm sollte möglichst nicht nur mit Admin-Rechten laufen ...
Aber es wird doch wohl ne andere möglichkeit geben, oder? Hoffe ich zumindest ... ideen?

ciao, Philipp

md_mse 29. Dez 2005 22:19

Re: XP-Style in DLL
 
Zitat:

Zitat von faux
Zitat:

Zitat von md_mse
Eine DLL ist nicht unbedingt nur eine Funktionssammlung. DLL's sind im Grunde genommen ja auch nur modifizierte EXE Files.
Und in meine DLL's kann ich ja auch VCL Forms klatschen, ich weiss nicht wie es bei dir ist :wink: .

Trotzdem musst du diese extra aufrufen. Alleiniges referenzieren reicht hier nicht.
Außerdem musst du trotzdem alles in Funktionen packen, wenn du eine Form in eine DLL geben willst. Klassen kannst du da IMHO nicht verwenden.

Grüße
Faux

Das beste Beispiel für Objekte in DLL's sind gut programmierte Plugins (und natürlich ein Pluginsystem).
DLL instantiizert Objekt das ein Interface implementiert. Anwendung die das Objekt benutzen möchte, verwendet das Interface direkt (überschreibt die Referenz natürlich mit der aus der DLL). So funktionniert übrigens auch DirectX: dem Porgrammierer stehen nur Interfaces zur Verfügung die von den DX DLL's implementiert und instatiiert werden.

@c113plpbr: Hm, da weiss ich leider auch nicht mehr weiter...

faux 29. Dez 2005 22:37

Re: XP-Style in DLL
 
@md_mse:
Schon klar, aber ich wollte ja nur sagen, dass du in DLLs nur Funktionen unterbringenkannst. Du hast dann gesagt, dass man auch Forms reinpacken kann, und ich dann wiederum, dass auch diese in Funktionen sind. ;)

Ist die DLL von dir, also hast du den Code?
md_mse hat bereits vorgeschlagen, dass du mal mit manifest probieren kannst. ;)

md_mse 29. Dez 2005 22:46

Re: XP-Style in DLL
 
@faux: Ja gut, sind das Programme nicht auch? :thumb:
@c113plpbr: Hast du eigentlich mal versucht diese manifest XML in die Ressourcen hinzuzufügen?


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

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz