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();
} 如果是常量需要用值来代替,如果是属性,那么引用的对象要明确对应到当前程序里的对象 回复 2# kevinch
有将CorelDRAW.cdrFilter.cdrPNG转换成相应的值,也是不行,在c#里转换值也不行。
还搞不清楚是什么原因,能提供个例子吗
谢谢 不会coreldraw的对象操作,经验来自于office vba环境转au3 回复 4# kevinch
看了看excel的au3,没发现在类似的功能,都是引用$oExcel对象的变量,你有相关的例子吗,应该都是相通的。
Local $oExcel = ObjCreate("Excel.Application") 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导出图表的例子,看一下能不能参考 回复 6# kevinch
还是有差别,这个例子中所有的对象属性都是创建好对象$oexcel
而我需要的是引用 CorelDRAW这个namespace定义好的属性与值,但是在au3里根本就不知道怎么引用CorelDRAW这个namespace,在c$里就简单咯,using CorelDRAW;就全部搞掂了
CorelDRAW.cdrFilter.cdrPNG 回复 7# light_he
无论如何,CorelDRAW.cdrFilter.cdrPNG一定会对应一个实际的值或者对象,你要找出来 回复 8# kevinch
是的,其实都是有对应到值,但我将参数转换为值,也是不行,所以才会想到能否直接引用定义好的namespace
也有可能是其他原因,我再想想,如果 实在不行,就只能用c#了
谢谢啦
页:
[1]