chujj 发表于 2009-10-29 13:55:09

运用于word,send发送中文乱码 求救!

论坛上找到的
1
Run("notepad.exe")
WinWaitActive("无标题 - 记事本")
ControlSetText("无标题 - 记事本","","","这是一些文字.")

2

Run("notepad.exe")
WinWaitActive("无标题 - ")
$Text = "CHINA"& @CR
$Text &= "繁體 :請多關照 " & @LF
$Text &= "日文 :よろしくお願いします " & @CR
$Text &= "特殊符号: ♂☆⊙①ⅠΘ┆" & @LF
$Text &= "@CRLF 会换行2次" & @CRLF
$Text &= "End"

SendC($Text)

Func SendC($Str)
For $i = 1 To StringLen($Str)
    Send('{ASC ' & StringToBinary(StringMid($Str, $i, 1) & ' ') & '}')
   Next
EndFunc   ;==>SendC
这两种方法均可以实现中文显示,
可是将这两种方法应用到word中时就会出现乱码,无法显示中文。
恳请各位帮帮忙!
我昨天刚接触这个软件,
而此问题必须今天解决!
所以在此发帖请求!
小女子先谢过!
拜托!

心照不宣 发表于 2009-10-30 20:48:56

查找word专用的au3脚本


自AU3将WORD应用纳入之后,国内的AU3朋友们在这方面研究很少!今天放几个小脚本供参考。

#include <array.au3>
#include <Word.au3>
Const $msoPatternDarkDownwardDiagonal = 15
Const $msoShapeRectangle = 1
Const $msoGradientHorizontal = 1

_WordErrorHandlerRegister()
$oWordApp = _WordCreate()
$oDocActive = _WordDocGetCollection($oWordApp, 0);;画一条红直线

_WordDocLine($oDocActive, 510, 50, 90, 50, 1.5, 255)

Func _WordDocLine($o_DocActive, $s_Left, $s_left_H, $s_Line, $s__right_H, $s_Weight, $s_Color)
      With $o_DocActive.Shapes.AddLine($s_Left, $s_left_H, $s_Line, $s__right_H).Line
                .Weight = $s_Weight
                .ForeColor.RGB = $s_Color
                ;.BackColor.RGB = 128
      EndWith
EndFunc   ;==>_WordDocLine

;;;下面示例为活动文档添加图案线条。

With $oDocActive.Shapes.AddLine(200, 80, 350, 80).Line
      .Weight = 8
      .ForeColor.RGB = 255
      .BackColor.RGB = 128;;;线条的背景色
      .Pattern = $msoPatternDarkDownwardDiagonal;;;加图案
EndWith
;;;下面示例为活动的文档添加一条线段。直线的起点有一个短且窄的椭圆,终点有一个长且宽的三角形。
Const $msoArrowheadShort = 1
Const $msoArrowheadOval = 6
Const $msoArrowheadNarrow = 1
Const $msoArrowheadLong = 3
Const $msoArrowheadTriangle = 2
Const $msoArrowheadWide = 3

With $oDocActive.Shapes.AddLine(100, 200, 200, 300).Line
      .BeginArrowheadLength = $msoArrowheadShort
      .BeginArrowheadStyle = $msoArrowheadOval
      .BeginArrowheadWidth = $msoArrowheadNarrow
      .EndArrowheadLength = $msoArrowheadLong
      .EndArrowheadStyle = $msoArrowheadTriangle
      .EndArrowheadWidth = $msoArrowheadWide
EndWith

;;;下面示例将一个具有五个顶点的任意多边形添加至活动文档中。
Const $msoSegmentCurve = 1
Const $msoEditingCorner = 1
Const $msoEditingAuto = 0
Const $msoSegmentLine = 0
With $oDocActive.Shapes.BuildFreeform($msoEditingCorner, 360, 200)
      .AddNodes($msoSegmentCurve, $msoEditingCorner, 380, 230, 400, 250, 450, 300)
      .AddNodes($msoSegmentCurve, $msoEditingAuto, 480, 200)
      .AddNodes($msoSegmentLine, $msoEditingAuto, 480, 400)
      .AddNodes($msoSegmentLine, $msoEditingAuto, 360, 200)
      .ConvertToShape
EndWith

;;;下面例在当前文档中添加一个标注,然后设置标注的角度。
#cs
      在文档中添加画布。返回代表该画布的 Shape 对象,并将其添加到 Shapes 集合。
      .AddCanvas(Left, Top, Width, Height, Anchor)
      LeftSingle 类型,   必需。画布左侧边缘相对于锁定标记的位置,以磅为单位。
      TopSingle 类型,      必需。画布上部边缘相对于锁定标记的位置,以磅为单位。
      WidthSingle 类型,    必需。画布的宽度,以磅为单位。
      HeightSingle 类型,   必需。画布的高度,以磅为单位。
      AnchorVariant 类型,可选。代表画布绑定文本的 Range 对象。
      如果指定 Anchor,则锁定标记将出现在锁定区域第一段的开头。
      如果省略该参数,将自动选定锁定区域,而画布将相对于页面的上部和左侧边缘进行定位。
#ce
;示例
Const $msoCalloutTwo = 2
Const $msoCalloutAngle30 = 2
_WordDocNewCallout($oDocActive)
Func _WordDocNewCallout($o_DocActive)
      
      With $o_DocActive.Shapes.AddCallout($msoCalloutTwo, 250, 180, 100, 80)
                .TextFrame.TextRange.Text = "在当前文档中添加一个标注."
                .Callout.Angle = $msoCalloutAngle30
      EndWith
      
EndFunc   ;==>_WordDocNewCallout

;;;下列示例在新文档中添加画布,然后在画布上添加两个图形,并设置填充和线条属性。

Const $wdWrapInline = 7
Const $msoShapeHeart = 21

_WordDocAddInlineCanvas($oDocActive)
Func _WordDocAddInlineCanvas($o_DocActive)


      $shpCanvas = $o_DocActive.Shapes.AddCanvas(150, 150, 70, 70)
      $shpCanvas.WrapFormat.Type = $wdWrapInline

      With $shpCanvas.CanvasItems
                .AddShape($msoShapeHeart, 10, 10, 50, 60)
                .AddLine(0, 0, 70, 70)
      EndWith
      With $shpCanvas
                .CanvasItems(1).Fill.ForeColor = 255
                .CanvasItems(2).Line.EndArrowheadStyle = $msoArrowheadTriangle
      EndWith

      
EndFunc   ;==>_WordDocAddInlineCanvas
;;;下列示例实现的功能是:将两个图形添至 myDocument,并组合这两个新图形,设置图形组合的填充格式,旋转此组合并将其置于绘图层的下面。
Const $msoShapeCan = 13
Const $msoShapeCube = 14
Const $msoTextureBlueTissuePaper = 17 ;(&H11)
Const $msoSendToBack = 1
$oDocActive.Shapes.AddShape($msoShapeCan, 150, 350, 100, 200).Name = "shpOne"
$oDocActive.Shapes.AddShape($msoShapeCube, 150, 550, 100, 200).Name = "shpTwo"
With $oDocActive.Shapes.Range(_ArrayCreate("shpOne", "shpTwo") ).Group
      .Fill.PresetTextured($msoTextureBlueTissuePaper)
      .Rotation = 45
      .ZOrder($msoSendToBack)
EndWith


;;;下列示例将一个用绿色大理石纹理填充的矩形添至活动文档中。
Const $msoTextureGreenMarble = 9
$oDocActive.Shapes.AddShape($msoShapeCan, 490, 490, 40, 80).Fill.PresetTextured($msoTextureGreenMarble)

;;;下列示例将包含文本“Test”的“艺术字”添加到活动文档中,并将文字由横排(指定“艺术字”样式的默认值,即 msoTextEffect1)转换为纵排。

Const $msoTextEffect1 = 0
$newWordArt = $oDocActive.Shapes.AddTextEffect($msoTextEffect1, "Test", "Arial Black", 36, False, False, 350, 100)
$newWordArt.TextEffect.ToggleVerticalText

;;;下列示例向活动文档添加三个三角形,并加以组合,为整个组合设置一个颜色,然后只更改第二个三角形的颜色。
Const $msoShapeIsoscelesTriangle = 7
;Const $msoTextureBlueTissuePaper = 17 ;(&H11)
;Const $msoTextureGreenMarble = 9
$oDocActive.Shapes.AddShape($msoShapeIsoscelesTriangle, _
                100, 600, 100, 100).Name = "shpOne"
$oDocActive.Shapes.AddShape($msoShapeIsoscelesTriangle, _
                240, 600, 100, 100).Name = "shpTwo"
$oDocActive.Shapes.AddShape($msoShapeIsoscelesTriangle, _
                390, 600, 100, 100).Name = "shpThree"
With $oDocActive.Shapes.Range(_ArrayCreate("shpOne", "shpTwo", "shpThree") ).Group
      .Fill.PresetTextured($msoTextureBlueTissuePaper)
      .GroupItems(2).Fill.PresetTextured($msoTextureGreenMarble)
EndWith


;;;本示例向活动文档添加两个十字形形状,并为每一个十字形设置第一种调整值(对于此类“自选图形”,该调整方式是唯一的)。
Const $msoShapeCross = 11

With $oDocActive.Shapes
    .AddShape($msoShapeCross, _
      10, 10, 100, 100).Adjustments.Item(1) = 0.4
    .AddShape($msoShapeCross, _
      150, 10, 100, 100).Adjustments.Item(1) = 0.2
EndWith

#cs
      ;;;向活动文档中添加一个矩形,然后设置矩形填充的前景色、背景色和过渡。
      .AddShape(Type, Left, Top, Width, Height, Anchor)
      expression   必需。该表达式返回一个 Shapes 对象。
      TypeLong 类型,   必需。要返回的图形类型。可以是任何 MsoAutoShapeType 常量。
      LeftSingle 类型,   必需。“自选图形”对象左侧边缘的位置,以磅为单位。
      TopSingle 类型,    必需。“自选图形”对象上部边缘的位置,以磅为单位。
      WidthSingle 类型,必需。“自选图形”对象的宽度,以磅为单位。
      HeightSingle 类型, 必需。“自选图形”对象的高度,以磅为单位。
      AnchorVariant 类型,可选。代表该“自选图形”所连接文本的 Range 对象。
      如果指定 Anchor,则锁定标记位于锁定区域第一段的起始位置。
      如果忽略该参数,则 Word 将自动选定锁定区域,
      而自选图形将相对于页面的上部和左侧边缘进行定位。
#ce
_WordDocRectangle($oDocActive);向活动文档中添加一个矩形,
Func _WordDocRectangle($o_DocActive)
      
      With $o_DocActive.Shapes.AddShape($msoShapeRectangle, 250, 120, 90, 50).Fill
                .ForeColor.RGB = 128
                .BackColor.RGB = 170
                .TwoColorGradient($msoGradientHorizontal, 1)
      EndWith
EndFunc   ;==>_WordDocRectangle

ndyndy 发表于 2009-11-2 14:08:35

有关word的问题,一般都得不到回答,看来太难

rikthhpgf2005 发表于 2009-11-2 16:46:46

没遇到过
我的可以

xz00311 发表于 2009-11-2 16:47:16

sendx就可以输中文了

xlcwxl 发表于 2009-11-12 11:40:53

发送汉字#Include <ACN_String.au3>
SendX($string, $flag)

ahkang 发表于 2009-12-6 02:54:30

下面这段是我在编写一个叫做 "Word修复工具" 时使用的部分代码, (早期 "萝卜家园" 的装机系统会出现 Word 与系统不兼容现象, 特编写解决 Word 运行时出错之用):Opt('WinTitleMatchMode',2)
#InClude <Acn_String.Au3>

$WinTitle='Microsoft Word'
$WinText='菜单栏'
$String='这是一些用来测试的文字内容, 您可以根据实际需要来进行修改...'
Run(@ProgramFilesDir&'\Microsoft Office\Office11\WinWord.eXe')
ProcessWait('WinWord.eXe')
WinWait($WinTitle,$WinText)
SendKeepActive($WinTitle,$WinText)
ClipPut('')
ClipPut($String)
Send('^a')
Send('^v')
Send('^a')
Send('^e')
Send('^d')
WinWait('字体','')
Send('!c')
Send('!{Down 3}')
Send('{Enter}')
Send('{Tab}')
Send('{Enter}')
WinActivate($WinTitle,$WinText)
Send('{End}')

ajian555 发表于 2009-12-10 14:48:36

正要学习~~~~

smartzbs 发表于 2009-12-10 16:39:55

#include <Word.au3>
$oWordApp = _WordCreate ("")
$oDoc = _WordDocGetCollection ($oWordApp, 0)
$oDoc.Range.insertAfter ("中文输入")

ajian55 发表于 2009-12-10 20:37:31

send不能用来发送中文
页: [1]
查看完整版本: 运用于word,send发送中文乱码 求救!