用delphi写了个DLL,用DELPHI调用成功,但现在想用VBSCRIPT调用该DLL该怎么处理呢,我的代码如下:
type
  WProperty = record
     sWidgetName:ShortString;
     nLeft:Integer;
     nTop:Integer;
     nHeight:Integer;
     nWidth:Integer;
     sContent:ShortString;
  end;
  PWProperty = ^WProperty;function GetCtrInfo(HWnd:THandle;CtrlName:ShortString):WProperty;
var
  FHwnd: THandle;
begin
  FHwnd := GetFormHwnd();
  New(p);
  p^.sWidgetName := CtrlName;
  Data.cbData := SizeOf(p^);
  Data.lpData := p;
  if HWnd <> 0 then
    SendMessage(HWnd, WM_COPYDATA, FHwnd, Longint(@Data));
  result.nLeft:= p^.nLeft;
  result.nTop:= p^.nTop;
  result.nHeight:= p^.nHeight;
  result.nWidth:= p^.nWidth;
  result.sContent:= p^.sContent;
  Dispose(p);
end;exports
  GetCtrInfo;DELPHI的调用程序:
function GetCtrInfo(HWnd:THandle;CtrlName:ShortString):WProperty;external 'Project4';
procedure TForm2.btn3Click(Sender: TObject);
var
   HWnd: THandle;
   t:WProperty;
begin
  HWnd := FindWindow('TForm1' ,'待测程序');
  t:=GetCtrInfo(HWnd, 'lbl1');
  ShowMessage(IntToStr(t.nLeft));
  ShowMessage(t.sContent);
end;最好能给出相应的源码及VBS方面调用的代码,谢谢!!!

解决方案 »

  1.   

    你先建一个activex dll工程,把你的dll里面的函数拷贝过去
    编译生成MyDll.dll在E:\test目录下运行regsvr32   MyDll.dll   提示注册成功
    同上目录下编辑test.vbs文件,内容如下:
    dim   obj
    set   obj   =   CreateObject( "MyDll.MyClass ")
    obj.MyFunc() 
      

  2.   

    已按你的方法尝试,注册DLL提示成功,运行VBS提示ActiveX部件不能创建对象:‘Project6.MyClass’
    代码如下:
    DLL:
    library Project6;uses
      ComServ,
      Windows,
      Messages,
      Dialogs,
      Unit6 in 'Unit6.pas' {Form6};exports
      DllGetClassObject,
      DllCanUnloadNow,
      DllRegisterServer,
      DllUnregisterServer;function GetFormHwnd():Integer;
    begin
      if Not Assigned(Form6) then
        Form6:=TForm6.Create(nil);
        //Form4.ShowModal;
      //返回创建窗口句柄
      Result:=Form6.Handle;
    end;function GetCtrInfo(HWnd:THandle;CtrlName:ShortString):WProperty;
    var
      FHwnd: THandle;
    begin
      FHwnd := GetFormHwnd();
      New(p);
      p^.sWidgetName := CtrlName;
      Data.cbData := SizeOf(p^);
      Data.lpData := p;
      if HWnd <> 0 then
        SendMessage(HWnd, WM_COPYDATA, FHwnd, Longint(@Data));
      result.nLeft:= p^.nLeft;
      result.nTop:= p^.nTop;
      result.nHeight:= p^.nHeight;
      result.nWidth:= p^.nWidth;
      result.sContent:= p^.sContent;
      Dispose(p);
    end;{$R *.res}exports
      GetCtrInfo;begin
    end.VBS:
    dim  obj 
    set  obj  =  CreateObject( "Project6.MyClass ") 
    obj.GetCtrInfo()请指教!!!
      

  3.   

    最好不要把代码分散开,写到一个unit里面进行编译
      

  4.   

    估计是我的MYCLASS写做了,但是又不知道该写什么
      

  5.   

    1、新建工程
    ActiveX->ActiveX Library
    工程名为Project6
    2、添加类
    ActiveX->Automation Object,
    CoClass Name为MyClass类名为MyClass
    调用 
    工程名.类名
    ===>
    Project6.MyClass