chiname

将数据导入第三方系统

                                                                    将数据导入第三方系统
       有的时候,我们有必要将数据导入到第三方系统,如果该系统支持数据库形式的导入,我们可以采用DTS;导入到ASC的形式,我们可以写文件。但是,有的时候,这些方式都不行,或者ASC文件的格式不可知,我们只有一种方式了,那就是利用窗口消息。
      思路很简单,先获得窗口的句柄,然后采用发送消息来模拟人操作的方式。在应用过程中,我们可以如下定义我们的配置文件:
     


<?xml version="1.0" encoding="utf-8"?>
<OptOutPut xmlns="http://tempuri.org/OutputKingOption.xsd">
    
<AppName>AAAAAAAAAAA</AppName>
    
<AppClsName>THUNDERRT6FORMDC</AppClsName>
    
<AppCaption>WinFormAAAAAA</AppCaption>
    
<ViewName>VIEW_OptimizeInit</ViewName>
    
<Description>
    
</Description>
    
<Controls>
        
<ID>1</ID>
        
<Type>BUTTON</Type>
        
<IsTemp>false</IsTemp>
        
<DBField>
        
</DBField>
        
<Path>THUNDERRT6COMMANDBUTTON::416:48@THUNDERRT6FRAME:添加待切割成品信息:16:24@SSTABCTLWNDCLASS::20:95</Path>
        
<Description>
        
</Description>
    
</Controls>
    
<Controls>
        
<ID>2</ID>
        
<Type>EDIT</Type>
        
<IsTemp>false</IsTemp>
        
<DBField>Length</DBField>
        
<Path>THUNDERRT6TEXTBOX::56:19@THUNDERRT6FRAME:添加待切割成品信息:16:24@SSTABCTLWNDCLASS::20:95</Path>
        
<Description>
        
</Description>
    
</Controls>
    
<Controls>
        
<ID>3</ID>
        
<Type>EDIT</Type>
        
<IsTemp>false</IsTemp>
        
<DBField>Width</DBField>
        
<Path>THUNDERRT6TEXTBOX::192:19@THUNDERRT6FRAME:添加待切割成品信息:16:24@SSTABCTLWNDCLASS::20:95</Path>
        
<Description>
        
</Description>
    
</Controls>
    
<Controls>
        
<ID>4</ID>
        
<Type>EDIT</Type>
        
<IsTemp>false</IsTemp>
        
<DBField>Num</DBField>
        
<Path>THUNDERRT6TEXTBOX::328:19@THUNDERRT6FRAME:添加待切割成品信息:16:24@SSTABCTLWNDCLASS::20:95</Path>
        
<Description>
        
</Description>
    
</Controls>
    
<Controls>
        
<ID>5</ID>
        
<Type>EDIT</Type>
        
<IsTemp>false</IsTemp>
        
<DBField>ProductName</DBField>
        
<Path>THUNDERRT6TEXTBOX::480:19@THUNDERRT6FRAME:添加待切割成品信息:16:24@SSTABCTLWNDCLASS::20:95</Path>
        
<Description>
        
</Description>
    
</Controls>
    
<Controls>
        
<ID>6</ID>
        
<Type>EDIT</Type>
        
<IsTemp>false</IsTemp>
        
<DBField>OrderCode</DBField>
        
<Path>THUNDERRT6TEXTBOX::56:48@THUNDERRT6FRAME:添加待切割成品信息:16:24@SSTABCTLWNDCLASS::20:95</Path>
        
<Description>
        
</Description>
    
</Controls>
    
<Controls>
        
<ID>7</ID>
        
<Type>BUTTON</Type>
        
<IsTemp>false</IsTemp>
        
<DBField>
        
</DBField>
        
<Path>THUNDERRT6COMMANDBUTTON::488:48@THUNDERRT6FRAME:添加待切割成品信息:16:24@SSTABCTLWNDCLASS::20:95</Path>
        
<Description>
        
</Description>
    
</Controls>
    
<Controls>
        
<ID>8</ID>
        
<Type>BUTTON</Type>
        
<IsTemp>true</IsTemp>
        
<DBField>OrderCode</DBField>
        
<Path>BUTTON:确定:24:82@#32770:警告:286:163</Path>
        
<Description>
        
</Description>
    
</Controls>
</OptOutPut>


关键的地方有这些:
1.定义的秩序:人操作是什么秩序,就怎么定义
2.Path:任何一次运行时,句柄和ID都会发生变化,所以我们要把控件的路径保存下来,在初试化时,从主窗口开始,一直找到相应的控件
3.控件要保存ClassName和Caption以及相对于父窗口的位置
4.Type:如果是Button和Edit采用不同的操作。当然,如果要完善,也可以改进配置文件,定义消息ID以及消息参数;增加更多的类别
5.IsTemp:进行了某些操作后,系统可能临时生成一些按钮控件等

可以自己制作一个小工具,来获得窗口的Path,如下图类似于Spy++的工具:

        红色部分为生成的路径。

     把配置文件配置好后,接下来就是将数据导出。建立一HashTable,初试化获得的句柄;然后依次循环数据库记录,依据配置文件的顺序,将数据导出。
    具体编代码比较简单,再此就不现丑了。关键的部分就在于思路,特别是那个Path,我个人认为。

   

评论

# re: 将数据导入第三方系统 2005-09-24 14:46 progame

想法不错 但是直接用自动测试工具的脚本录制和回放不也行么 为什么非得自己写   

# re: 将数据导入第三方系统 2005-09-24 14:51 呆在呆呆的家

不一样的了,我是要将我系统的数据(任何数据,特别是一些单据)导入到别人的软件。不知道自动测试工具可否实现。就是可以实现,我也不可能我们的软件配套一个测试软件呀

分类:

技术点:

相关文章:

  • 2021-07-11
  • 2021-12-01
  • 2021-08-19
  • 2021-12-24
  • 2022-01-02
  • 2022-12-23
猜你喜欢
  • 2021-07-21
  • 2021-08-23
  • 2021-07-02
  • 2021-08-06
  • 2022-12-23
相关资源
相似解决方案