Hice algo muy sencillo que funciona sin problemas:
Código Delphi
[-]
library Project2;
uses
Windows, Messages;
function GetComboCount(Handle: HWND): DWORD; stdcall;
begin
Result := SendMessage(Handle, CB_GETCOUNT, 0, 0);
end;
exports
GetComboCount;
begin
end.
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
ComboBox1: TComboBox;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
function GetComboCount(Handle: HWND): DWORD; stdcall;
implementation
{$R *.dfm}
function GetComboCount; external 'Project2.dll';
procedure TForm1.Button1Click(Sender: TObject);
begin
ComboBox1.Items.Add('Hi!');
ShowMessageFmt('Cantidad de Items: %d', [GetComboCount(ComboBox1.Handle)]);
end;
end.
Me surge una duda... ¿Cómo estas pasando el handle del combo?... ¿Lo estas guardando en una variable en la dll o lo haces para cada llamado?
Saludos!