本文告诉大家一个可以使用的 C# 脚本,可以用来自动打开 PPT 文件,然后不断执行翻页。每次翻页都截图。翻页之后自动关闭 PPT 再次打开



最近发现给 Office 做的插件,会在一定翻页次数的时候,就 gg 了,所以我就写了这样的脚本,小伙伴可以拿去用

编译下面的代码,然后将几个需要测试的 PPTX 文件放在编译出来的程序相同文件夹,双击运行这个程序就可以进行测试

    class Program
{
static void Main(string[] args)
{
var guid = Guid.NewGuid().ToString("N");
for (int i = 1; i <= 10000; i++)
{
Process p = new Process();
//设置要启动的应用程序
p.StartInfo.FileName = "cmd.exe";
//是否使用操作系统shell启动
p.StartInfo.UseShellExecute = false;
// 接受来自调用程序的输入信息
p.StartInfo.RedirectStandardInput = true;
//输出信息
p.StartInfo.RedirectStandardOutput = true;
// 输出错误
p.StartInfo.RedirectStandardError = true;
//不显示程序窗口
p.StartInfo.CreateNoWindow = true; Thread.Sleep(2000); var directory = new DirectoryInfo($"第{i}次 {guid}");
directory.Create();
string pptFile = GetPPT();
Console.WriteLine("启动文件: " + pptFile); Console.WriteLine(@"第 " + i + " 次启动:");
p.Start();
//向cmd窗口发送输入信息
Thread.Sleep(2000);
p.StandardInput.WriteLine("\"" + pptFile + "\"");
p.StandardInput.AutoFlush = true;
Console.WriteLine(@"开始启动客户端"); Thread.Sleep(10000); //触发F5按键
keybd_event(116, 0, 0, 0); // 翻多少页
for (int j = 1; j < 10; j++)
{
Thread.Sleep(2000);
keybd_event(vbKeyDown, 0, 0, 0);
Console.WriteLine(@"开始翻页"); // 翻一页截图
// 通过Graphics的CopyFromScreen方法把全屏图片的拷贝到我们定义好的一个和屏幕大小相同的空白图片中,
// 拷贝完成之后,CatchBmp就是全屏图片的拷贝了,然后指定为截图窗体背景图片就好了。
// 新建一个和屏幕大小相同的图片
Bitmap CatchBmp = new Bitmap(Screen.AllScreens[0].Bounds.Width, Screen.AllScreens[0].Bounds.Height); // 创建一个画板,让我们可以在画板上画图
// 这个画板也就是和屏幕大小一样大的图片
// 我们可以通过Graphics这个类在这个空白图片上画图
Graphics g = Graphics.FromImage(CatchBmp); // 把屏幕图片拷贝到我们创建的空白图片 CatchBmp中
g.CopyFromScreen(new Point(0, 0), new Point(0, 0),
new Size(Screen.AllScreens[0].Bounds.Width, Screen.AllScreens[0].Bounds.Height)); var file = new FileInfo(Path.Combine(directory.FullName, $"{j}.png")); var fileStream = new FileStream(file.FullName, FileMode.Create, FileAccess.Write); using (fileStream)
{
CatchBmp.Save(fileStream, ImageFormat.Png);
CatchBmp.Dispose();
} Console.WriteLine("保存截图" + file.FullName);
} Thread.Sleep(2000); keybd_event(18, 0, 0, 0);
keybd_event(115, 0, 0, 0);
keybd_event(18, 0, 2, 0);
keybd_event(115, 0, 2, 0); Thread.Sleep(2000); Console.WriteLine("干掉进程"); foreach (var temp in Process.GetProcesses())
{
try
{
if (temp.ProcessName.IndexOf("power", StringComparison.InvariantCultureIgnoreCase) >= 0)
{
temp.Kill();
}
}
catch (Exception e)
{
Console.WriteLine(e);
}
} p.Kill();
}
} private static string GetPPT()
{
var directory = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory);
var list = directory.GetFiles("*.pptx").ToList(); return list[_random.Next(list.Count)].FullName;
} private static readonly Random _random = new Random(); [DllImport("user32.dll")]
public static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo); public const byte vbKeyDown = 0x28; // DOWN ARROW 键
}

用这个脚本运行几天然后我就去看截图,就可以发现在翻到一定的页面,我的插件就 gg 了。在我修复之后再次运行这个脚本,发现没有 gg 于是就可以和微软说我修复了我的插件,再次上传

如何写 Office 插件,推荐陈希章的Office 365 开发概览系列

我搭建了自己的博客 https://blog.lindexi.com/ 欢迎大家访问,里面有很多新的博客。只有在我看到博客写成熟之后才会放在csdn或博客园,但是一旦发布了就不再更新

如果在博客看到有任何不懂的,欢迎交流,我搭建了 dotnet 职业技术学院 欢迎大家加入


本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系

C# 自动翻页 PPT 测试脚本的更多相关文章

  1. 万能js实现翻页,动态生成内容自动翻页,兼容各种浏览器(已测试)----神器版!

    转--http://www.2cto.com/kf/201402/277535.html 万能js实现翻页,动态生成内容自动翻页,兼容各种浏览器(已测试)----神器版! 2014-02-11     ...

  2. ViewPager实现自动翻页功能 --转载出处找不到了,根据自己的理解写个随笔方便以后的记忆以及代码的共享,感谢给我启发的那位高手--第一次写博客哈

    xml文件 textview 用于显示图片的标题 viewpager 用于实现翻页效果 <LinearLayout xmlns:android="http://schemas.andr ...

  3. 10款无限滚动自动翻页jquery插件

    2012年3月29日 无限滚动自动翻页可以说是web2.0时代的一项堪称伟大的技术,它让我们在浏览页面的时候只需要把滚动条拉到网页底部就能自动显示下一页的 结果,改变了一直以来只能通过点击下一页来翻页 ...

  4. pyspider示例代码五:实现自动翻页功能

    实现自动翻页功能 示例代码一 #!/usr/bin/env python # -*- encoding: utf- -*- # Created on -- :: # Project: v2ex fro ...

  5. WPF 把图片分割成两份自动翻页 WpfFlipPageControl:CtrlBook 书控件

    原文:WPF 把图片分割成两份自动翻页 WpfFlipPageControl:CtrlBook 书控件 版权声明:本文为博主原创文章,需要转载尽管转载. https://blog.csdn.net/z ...

  6. Python-爬虫之股转系统下载文件自动翻页

    上次代码只能抓取一个网页上的链接,本次可以自主设定抓取的页面个数. 代码如下: from selenium import webdriver import os, time class Downloa ...

  7. C#图片采集软件 自动翻页 自动分类(收集美图必备工具)(一)

    网站管理员希望将别人的整站数据下载到自己的网站里或者将别人网站的一些内容保存到自己的服务器上.从内容中抽取相关的字段,发布到自己的网站系统中.有时需要将网页相关的文件也保存到本地,如图片.附件等. 图 ...

  8. 使用Python在自己博客上进行自动翻页

    先上一张代码及代码运行后的输出结果的图! 下面上代码: # coding=utf-8 import os import time from selenium import webdriver #打开火 ...

  9. store procedure 翻页

    store procedure 翻页例子 .turn page CREATE PROCEDURE pageTest --用于翻页的测试 --需要把排序字段放在第一列 ( )=null, --当前页面里 ...

随机推荐

  1. JavaScript--DOM操作例子:隔行变色

    上效果: 实现思想: 主要是js动态创建标签,还有动态结合css实现样式 <!DOCTYPE html> <html lang="en"> <head ...

  2. 批量或者选择导出datagrid列表数据到表格

    //导出项目信息 function exportXmxx(){ //判断是否选择站址 var index = $("#dgObj").datagrid('getChecked'); ...

  3. 判断php的运行模式

    我们一般情况下,都是在apache下面运行我们的php程序,当然也有些人是用IIS环境的 我们要是想知道我们目前运行的环境是什么的话,那我们可以用函数php_sapi_name()来测试 代码: &l ...

  4. 【转载】 C++ stl string 操作

        总结一下C++中string的操作,来自〈C++ Primer〉第四版. 1. string对象的定义和初始化: 12345678910111213 string s1; //空串string ...

  5. SQL左连接查询 left join ... on

    左连接查询 保留左边主表的所有行(即使在右表没有匹配的行),右表输出满足 on 条件的行,不满足的输出null   示例:组合两个表 - 力扣 表1: Person +--------------+- ...

  6. 三 nginx+uWSGI+django+virtualenv+supervisor发布web服务器

    https://www.cnblogs.com/pyyu/p/9481344.html?tdsourcetag=s_pcqq_aiomsg 一 uwsgi安装 1.安装uwsgi,进入到一个虚拟机环境 ...

  7. C - League of Leesins-构造

    题意就是给多个三元组(内部没有顺序),让你构造一个序列,使得所有的三元组都是存在的 简单的思考后就会发现一个简单的思路,开头的数一定只出现一次,进而可以找到头或者尾部的第一个三元组,然后我们知道序列最 ...

  8. POJ-2502_Subway

    Subway Time Limit: 1000MS Memory Limit: 65536K Description You have just moved from a quiet Waterloo ...

  9. tf.cast用法

    tf.cast:用于改变某个张量的数据类型 例如: import tensorflow as tf;import numpy as np; A = tf.convert_to_tensor(np.ar ...

  10. oracle函数 end

    [功能]当:<表达式>=<表达式条件值1……n> 时,返回对应 <满足条件时返回值1……n> 当<表达式条件值1……n>不为条件表达式时,与函数deco ...