一键调整Word中所有图片的大小

这是利用AHK实现一键调整Word中所有图片的大小,方便批量打印图片。

;-----------------------------------------
; 一键调整Word中所有图片的大小  By FeiYue
;
; 用法:为了方便图片打印,可以先统一调整大小,再手动微调旋转
;-----------------------------------------


; 热键左Win键启动,第一次按热键需先激活Word或者WPS
LWin::
SetBatchLines, -1

; 获取COM对象,图片类型为InlineShapes,1cm等于28.35px
doc:=Word_Get("").ActiveDocument, cm:=28.35

Loop % doc.InlineShapes.Count
{
  r:=doc.InlineShapes(A_Index), r.LockAspectRatio:=0

  ; 每一页放两张图片,左右边距最大3cm,上下边距最大2cm
  r.Width := 15 * cm, r.Height := 10 * cm

}
MsgBox, 4096,, 执行完毕!, 1
return


;======== 下面是函数 ========


;-- 获取Word窗口的COM对象
Word_Get(WinTitle="Microsoft Word")
{
  static obj
  Try
    if (obj.Version)
      return obj
  return obj:=Office_Get(WinTitle)
}

;-- 获取Excel窗口的COM对象
Excel_Get(WinTitle="Microsoft Excel")
{
  static obj
  Try
    if (obj.Version)
      return obj
  return obj:=Office_Get(WinTitle)
}

;-- 获取PowerPoint窗口的COM对象
PowerPoint_Get(WinTitle="Microsoft PowerPoint")
{
  static obj
  Try
    if (obj.Version)
      return obj
  return obj:=Office_Get(WinTitle)
}


;-- 获取所有Office窗口的COM对象  By FeiYue
Office_Get(WinTitle="")
{
  static h:=DllCall("LoadLibrary", "Str","oleacc", "Ptr")
  SetTitleMatchMode, 2
  WinGet, idlist, List, % WinTitle ? WinTitle : "A"
  Loop, % idlist
  {
    id:=idlist%A_Index%
    WinGet, ControlList, ControlListHwnd, ahk_id %id%
    For i,hwnd in StrSplit(ControlList, "`n")
    {
      ControlGetPos, x, y, w, h,, ahk_id %hwnd%
      if (w>=100 and h>=100)
      and DllCall("oleacc\AccessibleObjectFromWindow", "Ptr", hwnd
      , "UInt", 0xFFFFFFF0, "Ptr", 0*(VarSetCapacity(IID,16)
      +NumPut(0x0000000000020400,IID,"Int64")
      +NumPut(0x46000000000000C0,IID,8,"Int64"))+&IID, "Ptr*", pacc)=0
      {
        Acc:=ComObject(9, pacc, 1)
        Try
          if (Acc.Application.Version)
            return Acc.Application
      }
    }
  }
  MsgBox, 4096,, Error: Can't Get Object From ACC !
  Exit
}


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值