light_he 发表于 2014-7-11 17:33:41

au3可以用namespace吗

因要做个小功能,将cdr文件转成图片格式,在c#调试成功,但因实施麻烦,想转成au3的
在使用过程式中发现au3不能调用CorelDRAW里定义里的namespace
请问有办法解决吗
谢谢Local $oShell = ObjCreate("CorelDRAW.Application")
If @error Then
      MsgBox(0,0,@error)
EndIf
If IsObj($oShell) Then
      $oShell.OpenDocument("c:\1.cdr",0)
      $oShell.ActiveDocument.ExportBitmap("C:\1.png",CorelDRAW.cdrFilter.cdrPNG,CorelDRAW.cdrExportRange.cdrCurrentPage,CorelDRAW.cdrImageType.cdrRGBColorImage,0, 0, 72, 72,CorelDRAW.cdrAntiAliasingType.cdrNoAntiAliasing,false,true,true,false,CorelDRAW.cdrCompressionType.cdrCompressionNone)
      $oShell.ActiveDocument.Close();
      $oShell.Quit();
EndIf
如下为c#代码,可以正常运行;   private static void ConvertCDR2JPG(string Sourcefile, string Targetfile)
      {
            CorelDRAW.Application cdr = new CorelDRAW.Application();
            cdr.OpenDocument(Sourcefile, 1);
            cdr.ActiveDocument.ExportBitmap(Targetfile,
                  CorelDRAW.cdrFilter.cdrJPEG,
                  CorelDRAW.cdrExportRange.cdrCurrentPage,
                  CorelDRAW.cdrImageType.cdrRGBColorImage,
                  0, 0, 100, 100,
                  CorelDRAW.cdrAntiAliasingType.cdrNoAntiAliasing,
                  false,
                  true,
                  true,
                  false,
                  CorelDRAW.cdrCompressionType.cdrCompressionJPEG,
                  null).Finish();
            cdr.ActiveDocument.Close();
            cdr.Quit();
      }

kevinch 发表于 2014-7-11 18:19:21

如果是常量需要用值来代替,如果是属性,那么引用的对象要明确对应到当前程序里的对象

light_he 发表于 2014-7-11 19:09:06

回复 2# kevinch


有将CorelDRAW.cdrFilter.cdrPNG转换成相应的值,也是不行,在c#里转换值也不行。
还搞不清楚是什么原因,能提供个例子吗
谢谢

kevinch 发表于 2014-7-11 20:05:59

不会coreldraw的对象操作,经验来自于office vba环境转au3

light_he 发表于 2014-7-12 08:43:15

回复 4# kevinch

看了看excel的au3,没发现在类似的功能,都是引用$oExcel对象的变量,你有相关的例子吗,应该都是相通的。
Local $oExcel = ObjCreate("Excel.Application")

kevinch 发表于 2014-7-12 10:11:01

Dim $arr=[["a","b","c","d","e"],]
$oexcel=ObjCreate("excel.application")
$oexcel.visible=True
$wb=$oexcel.workbooks.add
With $wb.activesheet
        .range("a1").resize(UBound($arr,2),UBound($arr)).value=$arr
        $chart=.shapes.addchart
        $chart.type=51
        $chart.SetSourceData(.range("a1").resize(UBound($arr,2),UBound($arr)))
        $chart.chart.export(@ScriptDir&"\temp.gif","gif")
EndWith
MsgBox(0,"",@ScriptDir&"\temp.gif")
$wb.close(false)
$oexcel.quit写了个excel导出图表的例子,看一下能不能参考

light_he 发表于 2014-7-12 12:02:56

回复 6# kevinch


    还是有差别,这个例子中所有的对象属性都是创建好对象$oexcel

   而我需要的是引用 CorelDRAW这个namespace定义好的属性与值,但是在au3里根本就不知道怎么引用CorelDRAW这个namespace,在c$里就简单咯,using CorelDRAW;就全部搞掂了
CorelDRAW.cdrFilter.cdrPNG

kevinch 发表于 2014-7-12 12:08:15

回复 7# light_he
无论如何,CorelDRAW.cdrFilter.cdrPNG一定会对应一个实际的值或者对象,你要找出来

light_he 发表于 2014-7-12 12:16:52

回复 8# kevinch


   是的,其实都是有对应到值,但我将参数转换为值,也是不行,所以才会想到能否直接引用定义好的namespace
也有可能是其他原因,我再想想,如果 实在不行,就只能用c#了
谢谢啦
页: [1]
查看完整版本: au3可以用namespace吗