fuzhizhi 发表于 2004-11-8 14:16:43

DELPHI addin 源代码

我想在BC6中编译 但不能通过

QA_BAY 发表于 2004-11-8 14:21:27

可以告诉我要怎么用上去吗?

pcl2004_27 发表于 2004-11-8 20:47:11

传说中的add_in出现了!
楼上通不过去是因为bcb是c语法,而不是pascal语法,delphi add_in所以无法在bcb中编译通过。


说句题外话,据我所知delphi的add_in 通过文件映射的方式实现,和现在网络上流传的delphi_in完全不同,这是通过两种不同的方式实现的!

这里分别代表两种识别控件的方式:
1.你上传的add_in是实现delphi和winrunner之间的桥梁。实现原理是文件映射,那么文件映射是什么呢?

内存映射文件与虚拟内存有些类似,通过内存映射文件可以保留一个地址空间的区域,同时将物理存储器提交给此区域,只是内存文件映射的物理存储器来自一个已经存在于磁盘上的文件,而非系统的页文件,而且在对该文件进行操作之前必须首先对文件进行映射,就如同将整个文件从磁盘加载到内存。

系统往往需要在多个进程之间共享数据,如果数据量小,处理方法是灵活多变的,如果共享数据容量巨大,那么就需要借助于内存映射文件来进行。

下面给出使用内存映射文件的一般方法:

  首先要通过CreateFile()函数来创建或打开一个文件内核对象,这个对象标识了磁盘上将要用作内存映射文件的文件。在用CreateFile()将文件映像在物理存储器的位置通告给操作系统后,只指定了映像文件的路径,映像的长度还没有指定。为了指定文件映射对象需要多大的物理存储空间还需要通过CreateFileMapping()函数来创建一个文件映射内核对象以告诉系统文件的尺寸以及访问文件的方式。在创建了文件映射对象后,还必须为文件数据保留一个地址空间区域,并把文件数据作为映射到该区域的物理存储器进行提交。由MapViewOfFile()函数负责通过系统的管理而将文件映射对象的全部或部分映射到进程地址空间

我们看testsrvr.pas单元中的几段代码
procedure TFormTstSrvr2.OpenMappedFile();
begin

in_out_file := OpenFileMapping(FILE_MAP_WRITE,FALSE,'DLPH2WR_IO_PARAM') ;
if (in_out_file = 0 ) then exit ;

pInOut := MapViewOfFile(in_out_file, FILE_MAP_WRITE, 0, 0, 0);
if(pInOut = nil) then
          CloseHandle(in_out_file);

end;

procedure TFormTstSrvr2.CloseMappedFile();
begin
if(pInOut <>nil) thenUnmapViewOfFile(pInOut);
if (in_out_file <> 0 ) then
   CloseHandle(in_out_file);
in_out_file:=0;
end;

这里就用到了两个函数

pcl2004_27 发表于 2004-11-8 21:08:45

2.网络中流传的delphi_add_in呢
   他是把不能识别的控件映射为标准控件,相当于定义控件为标准控件的方法!
   set_class_map ("BorBtn", "push_button");
   set_record_attr ("push_button","class label", "class_index", "location");

    实现的就是这个操作!

xob 发表于 2004-11-15 14:20:36

qiang!

dannybai 发表于 2005-2-18 17:11:17

怎么把这个东西用上去啊?

???

游牧 发表于 2005-3-23 11:23:02

pcl2004_27所说的“楼上通不过去是因为bcb是c语法”,请问这里的bcd是何物???

pcl2004_27 发表于 2005-3-24 12:56:44

bcb = borland c++ builder!

萧月禾 发表于 2005-4-2 11:59:24

感谢楼主提供的文件和超版的解释

lulenz 发表于 2005-11-3 16:18:08

不懂

这个就是WR中测试DELPHI的插件吗?看完还是不懂 请指点~~谢谢

cher 发表于 2006-4-2 12:20:24

TO pcl2004_27:
你的说法不准确,这两种方式并没有实质性的差别。
delphi addin的实现原理也不是什么文件映射,
你把它理解的太复杂了
那段代码仅仅是写入标识,获取消息返回值用的

feiyu8437 发表于 2006-4-10 10:05:07

我已经加入了delphi addin 源代码,可是好多控件还是不能识别,各位能给指点一下吗?

zengyixun 发表于 2006-4-12 13:40:28

识别还没有什么难的,关键是识别的级别,如:我有一个自定义按钮,能识别,但也只能是obj_mouse_click方法去点,不能button_press方法去触发,真的是不爽得很。

发表于 2006-4-18 10:18:04

各位大侠,Delphi控件在试用版的WR中到底要怎么识别啊?
对于TEdit:为什么我用虚拟控件不行;在WinRunner\lib\vbinit中的script文件中添加set_class_map("tedit", "edit"); set_record_attr("tedit", "class attached_text x y","MSW_id","location");也不行啊?是不是试用版的WR不支持啊?

发表于 2006-4-19 16:37:18

自己的问题还是自己解决啊,原来是在我录制脚本之前没有安装Delphi的插件,,我昨天上午装了Delphi的插件之后,大多数Delphi的控件就可以识别了,呵呵~

sima27 发表于 2006-4-26 16:09:28

缈 :
   你的DELPHI插件能给我一个吗?感谢!
   
   十分感谢!

anny417 发表于 2006-4-29 14:48:04

如何加入dephi源代码

如何加入dephi源代码 多谢
页: [1]
查看完整版本: DELPHI addin 源代码