控制台应用, 代码如下:

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格式文档的更多相关文章

  1. C# word文档转换成PDF格式文档

    最近用到一个功能word转pdf,有个方法不错,挺方便的,直接调用即可,记录下 方法:ConvertWordToPdf(string sourcePath, string targetPath) so ...

  2. Navicat for MySQL定时备份数据库及数据恢复

    在做数据库修改或删除操作中,可能会导致数据错误,甚至数据库奔溃,而有效的定时备份能很好地保护数据库.本篇文章主要讲述Navicat for MySQL定时备份数据库和数据恢复等功能,同时可以定时播放电 ...

  3. linux定时备份mysql并同步到其它服务器

    数据在任何一家公司里面都是最核心的资产,定期备份则是为了保证数据库出现问题的时候能够及时回滚到最近的备份点,将损失缩小到最小 这篇文章将会两部分来说明:1.mysql的定期备份:2.同步到其它服务器 ...

  4. Linux下使用crontab定时备份日志

    上周学习了Linux,其中有使用crontab定时备份日志的内容,现把主要步骤记录如下: 首先需要备份的日志的源目录位于/opt/lampp/logs/access_log 备份到/tmp/logs下 ...

  5. windows下mysql数据库定时备份。

    注意:看本教程先必须会windows自带的"任务计划程序". 首先创建一个bat后缀的文件我的是timerExecutePhp.bat文件 timerExecutePhp.bat ...

  6. Python +crontab定时备份目录发送邮件

    公司有一台静态页面展示服务器仅供给客户展示我们做的项目,当时买的时候是最低配,也就是磁盘空间为20G的系统盘,考虑到代码量很小所以没有另加磁盘,后来项目多了,就写了个crontab 定时备份目录. 就 ...

  7. PHP定时备份MySQL,mysqldump语法大全

    几个常用操作: 1.备份 # 只导出表结构 d:/PHP/xampp/mysql/bin/mysqldump -h127.0.0.1 -P3306 -uroot -p123456 snsgou_sns ...

  8. Windows下为MySQL做定时备份

    第一种:新建批处理文件 backup.dat,里面输入以下代码:  代码如下 复制代码 net stop mysqlxcopy "C:/Program Files/MySQL/MySQL S ...

  9. mysql线上一个定时备份脚本

    数据库服务使用的是阿里云的mysql,远程进行定时的全量备份,备份到本地,以防万一.mysql数据库远程备份的数据最好打包压缩: [root@huanqiuPC crontab]# pwd/Data/ ...

随机推荐

  1. JSJ—类与对象

    当你在设计类时,要记得对象时靠类的模型塑造出来的,你可以这样看: ——对象是已知事物 ——对象会执行的动作 对象本身已知的事物称为实例变量,它们代表对象的状态(数据),且该类型的每一个对象都会独立的拥 ...

  2. Spring Boot(Spring的自动整合框架)

    Spring Boot 是一套基于Spring框架的微服务框架,由于Spring是一个轻量级的企业开发框架,主要功能就是用于整合和管理其他框架,想法是将平时主流使用到的框架的整合配置预先写好,然后通过 ...

  3. Redirect all output to file

    That part is written to stderr, use 2> to redirect it. For example: foo > stdout.txt 2> std ...

  4. c3p0链接池配置使用

    c3p0链接池初步使用:直接上代码 c3p0是开源面粉的连接池,目前使用它的开源项目主要有:Spring,Hibernate等,使用时需要导入相关jar包及配置文件c3p0-config.xml文件 ...

  5. JavaScript中的let和const

    在ES6之前,JavaScript中只有两种作用域:全局作用域和函数内部的局部作用域.ES6中新增了两个重要的关键字,let和const,从而引入了块级作用域. 关键字var 使用var关键字声明的变 ...

  6. [HTML/CSS]浮动的那点事儿

    元素是怎样浮动 元素的水平方向浮动,意味着元素只能左右移动而不能上下移动. 一个浮动元素会尽量向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止. 浮动元素之后的元素将围绕它. 浮动元素 ...

  7. vue从入门到进阶:简介(一)

    前言 用了这么久的vue了,但是一直没有时间写个系列文章,现在抽一定时间总结下vue的知识点. 首先,Vue 不支持 IE8 及以下版本,因为 Vue 使用了 IE8 无法模拟的 ECMAScript ...

  8. 20.Odoo产品分析 (三) – 人力资源板块(1) – 员工目录(1)

    查看Odoo产品分析系列--目录 人力资源指在一个国家或地区中,处于劳动年龄.未到劳动年龄和超过劳动年龄但具有劳动能力的人口之和.狭义讲就是企事业单位独立的经营团体所需人员具备的能力(资源).(解释来 ...

  9. Boostrap模态框,以及通过jquery绑定td的值,使模态框回显

    做页面不管是登录或是修改信息,难免会使用到模态框,在此分享一个比较漂亮的模态框 Boostrap模态框 使用之前首先导入jquery-3.2.1.min.js,和bootstrap.min.js 先添 ...

  10. mac 苹果多版本jdk自由切换

    场景 手头上的工具有时候依赖低版本jdk,有时候需要高版本jdk, 如何在不同版本jdk之间来回自由的切换? 安装 首选需要去官网下载dmg安装包,地址:https://www.oracle.com/ ...