Ps和Sai文件自动保存,自动备份

很多画师朋友都有PhotoShop和Sai各种崩溃导致文件丢失,文件损坏而丢掉了辛辛苦苦的工作成果,写了这么个工具,可以定时自动保存Ps和Sai中正在编辑的文件,并且将最新保存的副本备份到C:\BackUpForPSD设置自动保存的间隔,需要的朋友拿走。文章最后有下载地址。

代码放到了github上面,需要的自取。
项目地址:https://github.com/kogodm/DesignerProtect

实现原理

PhotoShop部分

  • 使用PhotoshopCS6 的开发库PhotoshopTypeLibraryPhotoshopObjectLibrary提供的API直接对PhotoShop操作
  • 入口是app=newPhotoShop.ApplicationClass.ApplicationClass()
  • 调用 app.Documents[index].SaveAs()将打开的文档另存到备份目录
  • PhotoShop的库文件在Ps安装目录下:

sai && sai2部分

  • 利用Process.GetProcessesByName获取进程号
  • 使用EsayHook库Hook sai和sai2的一下WinApi调用
    • MoveFileA
    • GetFileAttributesA
    • GetFileAttributesW
    • MoveFileW
    • CreateFileW
  • 使用Win32 PostMessage接口定时向sai和sai2发送Ctrl+S消息
//向窗口发送Ctrl+S消息
IntPtr CTRL_KEY = new IntPtr(0x11);
uint KEY_DOWN = 0x0100;
uint KEY_UP = 0x0101;
IntPtr S_KEY = new IntPtr(0x53);
Win32.PostMessage(mainWindowHandle, KEY_DOWN, CTRL_KEY, IntPtr.Zero);
Win32.PostMessage(mainWindowHandle, KEY_DOWN, S_KEY, IntPtr.Zero);
Win32.PostMessage(mainWindowHandle, KEY_UP, S_KEY, IntPtr.Zero);
Win32.PostMessage(mainWindowHandle, KEY_UP, CTRL_KEY, IntPtr.Zero);
  • sai&&sai2在保存时会调用WinApi的MoveFile接口,sai调用MoveFileA,sai2调用MoveFileW
  • 在检测到MoveFile时,将刚保存的文件,拷贝到备份目录

请勿用管理员运行,目前只测试了64位win10其他系统如有问题,你可以在博客回复,或者无视
安装包下载地址

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值