[DLL] Constructeur à l'objet suffisant pour autres langages ?
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 2016
-
21 janv. 2009 à 19:07
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 2016
-
21 janv. 2009 à 20:36
Bonjour, alors voici mon problème - j'essaye d'introduire mon unité AlphaUtils dans une DLL. Tout roule pour l'instant, mais je voudrais juste savoir si un simple constructeur d'objet exporté suffit à un autre langage pour utiliser l'objet. Voyez plutôt (je ne vous montre pas l'unité AlphaUtilsUnit, elle est sur le site) :
<hr />
library AlphaUtils;uses
Windows,
Types,
SysUtils,
Classes,
AlphaUtilsUnit in 'AlphaUtilsUnit.pas';
{$R *.res}
function CreateTList: TList; stdcall; // Ici !
begin
Result := TList.Create;
end;
function CreateTLayeredWindow(Wnd: HWND; BackToOldStyle, DoNotTouchLayeredSettingsParam: Boolean; ForceLayering: Boolean): TLayeredWindow; stdcall; // Ici !
begin
Result : = TLayeredWindow.Create(Wnd, BackToOldStyle, DoNotTouchLayeredSettingsParam, ForceLayering);
end;
function GetTrayHWnd: HWND; stdcall;
begin
Result := AlphaUtilsUnit.GetTrayHWnd;
end;
function SearchHWnds(var HwndList: TList): Longword; stdcall;
begin
Result := AlphaUtilsUnit.SearchHWnds(HwndList);
end;
function GetHWndByWindowName(WindowName: String): HWND; stdcall;
begin
Result := AlphaUtilsUnit.GetHWndByWindowName(WindowName);
end;
function GetHWndByWindowClassName(WindowClassName: String): HWND; stdcall;
begin
Result := AlphaUtilsUnit.GetHWndByWindowClassName(WindowClassName);
end;
function PrepareLayering(Wnd: HWND): Boolean; stdcall;
begin
Result := AlphaUtilsUnit.PrepareLayering(Wnd);
end;
function ReleaseLayering(Wnd: HWND): Boolean; stdcall;
begin
Result := AlphaUtilsUnit.ReleaseLayering(Wnd);
end;
function SupportsLayering(Wnd: HWND): Boolean; stdcall;
begin
Result := AlphaUtilsUnit.SupportsLayering(Wnd);
end;
function GetWindowAlpha(Wnd: HWND; var Value: Byte): Boolean;
begin
Result := AlphaUtilsUnit.GetWindowAlpha(Wnd, Value);
end;
function SetWindowAlpha(Wnd: HWND; var Value: Byte): Boolean;
begin
Result := AlphaUtilsUnit.SetWindowAlpha(Wnd, Value);
end;
function GetLayeredWindowAttributes(hWnd: HWND; var crKey: COLORREF; var bAlpha: BYTE; var dwFlags: DWORD): BOOL; stdcall;
begin
Result := AlphaUtilsUnit.GetLayeredWindowAttributes(hWnd, crKey, bAlpha, dwFlags);
end;
function SetLayeredWindowAttributes(hWnd: HWND; crKey: COLORREF; bAlpha: BYTE; dwFlags: DWORD): BOOL; stdcall;
begin
Result := AlphaUtilsUnit.SetLayeredWindowAttributes(hWnd, crKey, bAlpha, dwFlags);
end;
function IsHungAppWindow(hWnd: HWND): Bool; stdcall;
begin
Result := AlphaUtilsUnit.IsHungAppWindow(hWnd);
end;
exports
CreateTList, // Ce constructeur ...
CreateTLayeredWindow, // ... et celui-là suffisent-t-ils pour un autre langage ? GetTrayHWnd,
SearchHWnds,
GetHWndByWindowName,
GetHWndByWindowClassName,
PrepareLayering,
ReleaseLayering,
SupportsLayering,
GetWindowAlpha,
SetWindowAlpha,
GetLayeredWindowAttributes,
SetLayeredWindowAttributes,
IsHungAppWindow;
begin
end.
<hr />
Je veux dire par là, faut-il que j'introduise dans la DLL toutes les méthodes de l'objet TList et TLayeredWindow pour le rendre utilisable en C ou en VB, par exemple ? Ou est-ce-que une simple référence à l'objet suffit (je précise qu'une documentation sera fournie, et que les autres langages pourront écrire la structure de l'objet TLayeredWindow dans leur code ...).
Merci de votre réponse :)
Cordialement, Bacterius !
A voir également:
[DLL] Constructeur à l'objet suffisant pour autres langages ?