C#定时备份正在播放的幻灯片、word文档、excel电子表格,mht格式文档
控制台应用, 代码如下:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Reflection;
using Microsoft.Office.Interop.Word;
using Microsoft.Office.Interop.PowerPoint;
using Microsoft.Office.Interop.Excel; /*
1. 添加引用COM里面的 Microsoft Word 12.0 Object. Library 引用(12.0表示Word 2007版本) 2. 导命名空间
using Microsoft.Office.Interop.Word;
using System.IO;
using System.Reflection; 3. 把引用中的Microsoft.Office.Interop.Word的“属性”中的嵌入互操作设为False
*/
//同理添加ppt和excel引用
//SHDocVw需 添加引用 ->com->MicroSoft Internet Controls ,不过我这里是参考https://www.xuebuyuan.com/895822.html取IE地址,因为引用shdocvw后程序就出问题。
namespace bak
{
class Program
{
[DllImport("User32.dll")] //User32.dll是Windows操作系统的核心动态库之一
static extern int FindWindow(string lpClassName, string lpWindowName);
[DllImport("User32.dll")]
static extern int FindWindowEx(int hwndParent, int hwndChildAfter, string lpszClass, string lpszWindow);
[DllImport("User32.dll")]
static extern int GetWindowText(int hwnd, StringBuilder buf, int nMaxCount);
[DllImport("User32.dll")]
static extern int SendMessage(int hWnd, int Msg, int wParam, StringBuilder lParam);
const int WM_GETTEXT = 0x000D; //获得文本消息的16进制表示
static void Main(string[] args)
{
Thread thread25yi = new Thread(new ThreadStart(MethodTimer1));
thread25yi.Start();
}
//方法一:调用Thread线程执行方法,在执行方法中实现死循环,在每个循环Sleep里设定时间 static void MethodTimer1()
{
while (true)
{
//Console.WriteLine(DateTime.Now.ToString() + "_" + Thread.CurrentThread.ManagedThreadId.ToString());
//object oMissing = System.Reflection.Missing.Value;
//创建c:\windows\bak文件夹
var dir = @"c:/windows/bak/";
try
{
if (!Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
}
}
catch { } try
{ //word文档
Microsoft.Office.Interop.Word.Application wordObj = (Microsoft.Office.Interop.Word.Application)Marshal.GetActiveObject("Word.Application");
string a = wordObj.ActiveDocument.FullName;
var fname = Path.GetFileNameWithoutExtension(a) + Path.GetExtension(a);
File.Copy(a, dir + fname, false);
wordObj = null; }
catch { }
try { //ppt幻灯片
Microsoft.Office.Interop.PowerPoint.Application pptObj = (Microsoft.Office.Interop.PowerPoint.Application)Marshal.GetActiveObject("PowerPoint.Application");
string b = pptObj.ActivePresentation.FullName;
var fname = Path.GetFileNameWithoutExtension(b) + Path.GetExtension(b);
File.Copy(b, dir + fname, false);
pptObj = null; }
catch { }
try
{ //excel电子表格
Microsoft.Office.Interop.Excel.Application xlsObj = (Microsoft.Office.Interop.Excel.Application)Marshal.GetActiveObject("Excel.Application");
string c = xlsObj.ActiveWorkbook.FullName;
var fname = Path.GetFileNameWithoutExtension(c) + Path.GetExtension(c);
File.Copy(c, dir + fname, false);
xlsObj = null; }
catch { } try
{
var url = GetURL();
if (url.Contains(".mht"))
{ var fname = Path.GetFileNameWithoutExtension(url) + Path.GetExtension(url);
File.Copy(url, dir + fname, false);
} }
catch { } Thread.CurrentThread.Join();//阻止设定时间 }
}
public static string GetURL()
{
int parent = FindWindow("IEFrame", null);
int child = FindWindowEx(parent, , "WorkerW", null);
child = FindWindowEx(child, , "ReBarWindow32", null);
child = FindWindowEx(child, , "Address Band Root", null);
child = FindWindowEx(child, , "Edit", null); //通过SPY++获得地址栏的层次结构,然后一层一层获得
StringBuilder buffer = new StringBuilder(); //child表示要操作窗体的句柄号
//WM_GETTEXT表示一个消息,怎么样来驱动窗体
//1024表示要获得text的大小
//buffer表示获得text的值存放在内存缓存中
int num = SendMessage(child, WM_GETTEXT, , buffer);
string URL = buffer.ToString();
return URL;
} }
}
如果希望控制台程序不显示窗口,可以创建好控制台程序后,选中项目,右键,属性,输出类型选为“windows 应用程序” 这样就没有dos窗口了(参考:https://blog.csdn.net/liyifei21/article/details/7948385)
如果希望开机启动,在命令行执行类似命令:
REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v QQ /t REG_EXPAND_SZ /d "d:\qq.com"
C#定时备份正在播放的幻灯片、word文档、excel电子表格,mht格式文档的更多相关文章
- C# word文档转换成PDF格式文档
最近用到一个功能word转pdf,有个方法不错,挺方便的,直接调用即可,记录下 方法:ConvertWordToPdf(string sourcePath, string targetPath) so ...
- Navicat for MySQL定时备份数据库及数据恢复
在做数据库修改或删除操作中,可能会导致数据错误,甚至数据库奔溃,而有效的定时备份能很好地保护数据库.本篇文章主要讲述Navicat for MySQL定时备份数据库和数据恢复等功能,同时可以定时播放电 ...
- linux定时备份mysql并同步到其它服务器
数据在任何一家公司里面都是最核心的资产,定期备份则是为了保证数据库出现问题的时候能够及时回滚到最近的备份点,将损失缩小到最小 这篇文章将会两部分来说明:1.mysql的定期备份:2.同步到其它服务器 ...
- Linux下使用crontab定时备份日志
上周学习了Linux,其中有使用crontab定时备份日志的内容,现把主要步骤记录如下: 首先需要备份的日志的源目录位于/opt/lampp/logs/access_log 备份到/tmp/logs下 ...
- windows下mysql数据库定时备份。
注意:看本教程先必须会windows自带的"任务计划程序". 首先创建一个bat后缀的文件我的是timerExecutePhp.bat文件 timerExecutePhp.bat ...
- Python +crontab定时备份目录发送邮件
公司有一台静态页面展示服务器仅供给客户展示我们做的项目,当时买的时候是最低配,也就是磁盘空间为20G的系统盘,考虑到代码量很小所以没有另加磁盘,后来项目多了,就写了个crontab 定时备份目录. 就 ...
- PHP定时备份MySQL,mysqldump语法大全
几个常用操作: 1.备份 # 只导出表结构 d:/PHP/xampp/mysql/bin/mysqldump -h127.0.0.1 -P3306 -uroot -p123456 snsgou_sns ...
- Windows下为MySQL做定时备份
第一种:新建批处理文件 backup.dat,里面输入以下代码: 代码如下 复制代码 net stop mysqlxcopy "C:/Program Files/MySQL/MySQL S ...
- mysql线上一个定时备份脚本
数据库服务使用的是阿里云的mysql,远程进行定时的全量备份,备份到本地,以防万一.mysql数据库远程备份的数据最好打包压缩: [root@huanqiuPC crontab]# pwd/Data/ ...
随机推荐
- sourcetree Authentication failed
sourcetree 的 git 密码存在 mac 的 钥匙串里面, 需要在钥匙串里删除掉对应信息,再次打开就会让你重新输入密码, 问题就解决了。 参看: https://stackoverflow. ...
- 什么是Docker Volume?
摘要:Docker Volume,通常翻译为数据卷,用于保存持久化数据.当我们将数据库例如MySQL运行在Docker容器中时,一般将数据通过Docker Volume保存在主机上,这样即使删除MyS ...
- Java中重写与重载
重写(覆盖):发生在子类与父类之间:方法名相同方法的个数.类型相同返回值类型小于等于父类的返回值类型 重载:发生在一个类中:方法名相同方法的个数.类型不同返回值类型可以相同也可以不相同
- canvas学习笔记之2d画布基础的实现
一. Canvas是啥 < canvas > 是一个可以使用脚本(通常是js)来绘图的HTML元素 < canvas > 最早由Apple引入WebKit,用于Mac OS X ...
- Git学习(二)Git命令
1.创建新的git仓库 初始化一个Git仓库,使用git init命令. 上图中我们新建了目录/home/honey/cxf,并进入目录cxf执行命令git init完成新git仓库的初始化,初始化成 ...
- javascript中加号(+)操作符的作用
// 16进制转换:+”0xFF”; // -> 255 // 获取当前的时间戳,相当于`new Date().getTime()`:+new Date(); // 比 ...
- centos6 自带python2.6升级python2.7+
centos6系统自带Python为2.6.6版本,升级搞版本操作如下(python2-python3都一样) 1.下载需要升级的python包 官方下载地址:https://www.python.o ...
- Python Elasticsearch批量操作客户端
基于Python实现的Elasticsearch批量操作客户端 by:授客 QQ:1033553122 1. 代码用途 1 2. 测试环境 1 3. 使用方法 1 3.1 配置ES服务器信息 1 ...
- html + css3 demo
最近,在做一个比较大的网站,主要服务于欧美地区,全站为英文版本,因为是电子产品,因此,要展示产品内在美(扯个蛋!)仿照小米.錘子.苹果等网站,着重于css3动效效果,搜集整理了一些网站中用到的动效图, ...
- MySQL5.7 搭建主从同步
性能更好的新服务器申请下来了,我们决定在2台新服务器上使用mysql5.7,并且使用主从同步.读写分离架构,很不幸这个任务落到了我的头上.读写分离是在业务代码中实现的,在此不做详述,介绍一下我搭建My ...