用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方面调用的代码,谢谢!!!
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方面调用的代码,谢谢!!!
解决方案 »
- 关于用DELPHI运行一个DOS命令
- 想做一个小软件,能操作外网服务器上的sql数据库!
- imageen使用中的内存问题
- 急求delphi开源作品(具有学生收费之类的),在线等待!急~~~`
- 判断输入的内容是否是数字的函数是什么呢?急用!!!
- 大哥们再帮小弟一把。。。。。。。。
- 散分~~~~~~~~~~~~散分~~~~~~~~~~~~~~~~~~~~~~
- 在dbgrid里的options属性里,有一个dgediting,我怎么在程序中动态地给他改变值?
- 朋友们,帮帮我吧!
- 紧急求助-----怎么做帮助文件?
- 求助。。谢谢。。
- 请问我在查询数据库中的报表时,其中有字段为2009/08/05,如果在edit中输入2009/08/05时,查询2009/08的所有内容?
编译生成MyDll.dll在E:\test目录下运行regsvr32 MyDll.dll 提示注册成功
同上目录下编辑test.vbs文件,内容如下:
dim obj
set obj = CreateObject( "MyDll.MyClass ")
obj.MyFunc()
代码如下:
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()请指教!!!
ActiveX->ActiveX Library
工程名为Project6
2、添加类
ActiveX->Automation Object,
CoClass Name为MyClass类名为MyClass
调用
工程名.类名
===>
Project6.MyClass