找回密码
 加入
搜索
查看: 4854|回复: 9

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

  [复制链接]
发表于 2009-10-29 13:55:09 | 显示全部楼层 |阅读模式
论坛上找到的
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)
        Left  Single 类型,     必需。画布左侧边缘相对于锁定标记的位置,以磅为单位。
        Top  Single 类型,      必需。画布上部边缘相对于锁定标记的位置,以磅为单位。
        Width  Single 类型,    必需。画布的宽度,以磅为单位。
        Height  Single 类型,   必需。画布的高度,以磅为单位。
        Anchor  Variant 类型,  可选。代表画布绑定文本的 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 对象。
        Type  Long 类型,     必需。要返回的图形类型。可以是任何 MsoAutoShapeType 常量。
        Left  Single 类型,   必需。“自选图形”对象左侧边缘的位置,以磅为单位。
        Top  Single 类型,    必需。“自选图形”对象上部边缘的位置,以磅为单位。
        Width  Single 类型,  必需。“自选图形”对象的宽度,以磅为单位。
        Height  Single 类型, 必需。“自选图形”对象的高度,以磅为单位。
        Anchor  Variant 类型,可选。代表该“自选图形”所连接文本的 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
发表于 2009-11-2 14:08:35 | 显示全部楼层
有关word的问题,一般都得不到回答,看来太难
发表于 2009-11-2 16:46:46 | 显示全部楼层
没遇到过
我的可以
发表于 2009-11-2 16:47:16 | 显示全部楼层
sendx就可以输中文了
发表于 2009-11-12 11:40:53 | 显示全部楼层
发送汉字
#Include <ACN_String.au3>
SendX($string, $flag)
发表于 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}')
发表于 2009-12-10 14:48:36 | 显示全部楼层
正要学习~~~~
发表于 2009-12-10 16:39:55 | 显示全部楼层
#include <Word.au3>
$oWordApp = _WordCreate ("")
$oDoc = _WordDocGetCollection ($oWordApp, 0)
$oDoc.Range.insertAfter ("中文输入")
发表于 2009-12-10 20:37:31 | 显示全部楼层
send不能用来发送中文
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-27 17:31 , Processed in 0.082203 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表