思路

这个方法的通用性比较差,用到了一个火狐的插件,这个插件可以将单篇csdn博客保存成pdf,如下图:

整体步骤就是,首先用java爬取我个人博客的所有链接,然后把这些链接复制到txt文档中,如下图:

然后让程序去做重复性操作,每次剪切txt里面的第一行链接,粘贴到浏览器的地址栏中,点击插件下载即可。

最后的效果是这样的:

C++ 代码

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<conio.h>
#include<windows.h>
#include<iostream>
#include<windows.h>
#include<time.h>
#include<string>
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
using namespace std;class Cor {public:int x;int y;Cor(int x, int y) {this->x = x;this->y = y;}
};class Position {public:Cor* urlFrom = new Cor(289, 53);Cor* urlTo = new Cor(2537, 55);Cor* print = new Cor(3511, 51);Cor* save = new Cor(3202, 690);
};class Mouse {public:Mouse() {}void click_one() {Sleep(100);mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);Sleep(100);mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);Sleep(100);}void click_two() {click_one();click_one();}void click_three() {click_one();click_one();click_one();}void moveTo(int x, int y) {POINT p;GetCursorPos(&p);SetCursorPos(x, y);POINT tempPoint;GetCursorPos(&tempPoint);}void hideCMD() {HWND hwnd = GetForegroundWindow();ShowWindow(hwnd, SW_HIDE);}bool isMoving() {POINT p;POINT last_p;GetCursorPos(&last_p);Sleep(100);GetCursorPos(&p);if (p.x == last_p.x && p.y == last_p.y) {return false;}else {printf("moved,do nothing.\n");return true;}}void printPos() {POINT p;POINT last_p;while (true) {GetCursorPos(&last_p);cout << "鼠标位置:" << last_p.x << " " << last_p.y << endl;Sleep(1000);GetCursorPos(&p);}}
};class KeyBoard {public:void btn_ctrl_c() {Sleep(100);keybd_event(17, 0, 0, 0);Sleep(10);keybd_event(67, 0, 0, 0);Sleep(10);keybd_event(67, 0, KEYEVENTF_KEYUP, 0);Sleep(10);keybd_event(17, 0, KEYEVENTF_KEYUP, 0);Sleep(1000);}void btn_ctrl_v() {Sleep(100);keybd_event(17, 0, 0, 0);Sleep(100);keybd_event(86, 0, 0, 0);Sleep(100);keybd_event(86, 0, KEYEVENTF_KEYUP, 0);Sleep(100);keybd_event(17, 0, KEYEVENTF_KEYUP, 0);Sleep(1000);}void btn_ctrl_x() {Sleep(100);keybd_event(17, 0, 0, 0);Sleep(100);keybd_event(88, 0, 0, 0);Sleep(100);keybd_event(88, 0, KEYEVENTF_KEYUP, 0);Sleep(100);keybd_event(17, 0, KEYEVENTF_KEYUP, 0);Sleep(1000);}void btn_ctrl_a() {Sleep(100);keybd_event(17, 0, 0, 0);Sleep(100);keybd_event(65, 0, 0, 0);Sleep(100);keybd_event(65, 0, KEYEVENTF_KEYUP, 0);Sleep(100);keybd_event(17, 0, KEYEVENTF_KEYUP, 0);Sleep(1000);}void btn_del() {Sleep(100);keybd_event(46, 0, 0, 0);Sleep(100);keybd_event(46, 0, KEYEVENTF_KEYUP, 0);Sleep(1000);}void btn_enter() {Sleep(100);keybd_event(13, 0, 0, 0);Sleep(500);keybd_event(13, 0, KEYEVENTF_KEYUP, 0);Sleep(1000);}void btn_right() {Sleep(100);keybd_event(39, 0, 0, 0);Sleep(500);keybd_event(39, 0, KEYEVENTF_KEYUP, 0);Sleep(1000);}
};int main() {Mouse m;KeyBoard k;Position p;Sleep(3000);//m.printPos();for (int i = 0; i < 400; i++) {m.moveTo(p.urlFrom->x, p.urlFrom->y);//url源Sleep(500);m.click_two();k.btn_ctrl_c();k.btn_del();k.btn_del();if (m.isMoving())break;Sleep(500);m.moveTo(p.urlTo->x, p.urlTo->y);//url目标m.click_two();k.btn_ctrl_a();k.btn_ctrl_v();m.click_one();k.btn_enter();Sleep(8000);if (m.isMoving())break;m.moveTo(p.print->x, p.print->y);//点击打印Sleep(500);m.click_one();Sleep(2000);if (m.isMoving())break;m.moveTo(p.save->x, p.save->y);//点击保存Sleep(500);m.click_one();Sleep(500);if (m.isMoving())break;}
}

【C++鼠标键盘操作】自动下载CSDN博客文章到PDF相关推荐

  1. 8.一个项目实战(下载CSDN博客文章)

    专栏地址 ʅ(‾◡◝)ʃ 前言 要写一个下载器,首先要实现一个接口函数,而这个函数可以对请求的数据进行处理也就是爬虫,其次才是写图形化界面 接口的实现 其实CSDN的浏览器页面的接口很复杂,是直接通过 ...

  2. Python 实用爬虫-04-使用 BeautifulSoup 去水印下载 CSDN 博客图片

    Python 实用爬虫-04-使用 BeautifulSoup 去水印下载 CSDN 博客图片 其实没太大用,就是方便一些,因为现在各个平台之间的图片都不能共享,比如说在 CSDN 不能用简书的图片, ...

  3. python+shell 备份 CSDN 博客文章,CSDN博客备份工具

    python+shell 备份 CSDN 博客文章,CSDN博客备份工具 在 csdn 写了几年的博客了.多少也积累了两三百篇博文,近日,想把自己的这些文章全部备份下来,于是开始寻找解决方案. 我找到 ...

  4. C/C++ | Qt 实现爬虫功能,爬取CSDN博客文章

    话不多说,先看程序运行截图: 注意: 本人没有看过爬虫相关的书籍,第一次写这种程序,这个程序是半屌子的,原理很简单,没有学习过爬虫的朋友,也可以写. 程序思路如下: 1.下载要爬网站的页面. 2.用正 ...

  5. 解决CSDN博客文章 保存网页到本地后,页面显示不全的问题

    更新:2018.3.29 问题 CSDN博客文章设置为新版皮肤("大白"),保存网页到本地后.打开离线保存的网页,会出现页面显示不全的问题.(或者,点击"展开阅读全文&q ...

  6. 【工具】复制别人的CSDN博客文章到本地

    复制别人的CSDN博客文章到本地 操作流程 1.打开自己喜欢的博客的文章,然后同时按shift+ctrl+I三个键,打开开发者工具. 2.选择elements选项,按下面图片选择(chorme浏览器) ...

  7. CSDN博客文章写作技巧

    CSDN博客文章写作技巧 1. CSDN博客文章段落缩进问题的解决办法 1.1 解决办法   由于在写文档的时候,段落首习惯了缩进两个字符,发现使用 Tab 键无法解决这个问题,同时使用多个空格代替的 ...

  8. 真正CSDN博客文章一键转载插件(含源码)

    插件地址:https://greasyfork.org/zh-CN/scripts/381053-csdn%E5%8D%9A%E5%AE%A2%E6%96%87%E7%AB%A0%E8%BD%AC%E ...

  9. 如何快速转载别人的CSDN博客文章并附带格式与图片

    1.问题背景 最近在学习Git过程中想了解git reflog命令的高级用法与命令详解,于是找到了这几篇特别优秀的文章: [1]使用git reflog 命令来查看历史提交记录并使用提交记录恢复已经被 ...

最新文章

  1. python configure函数 循环_使用python统计git仓库中频繁修改的热点函数
  2. 在 Linux shell 中自由操作时间变量
  3. XNA实现不停循环的路的效果
  4. Lightroom Classic 教程,如何在 Lightroom 中使用边界变形保留完整视图?
  5. [erlang]一次erlcron崩溃引起的事故分析
  6. vodplayer.exe
  7. 一文读懂元宇宙,AI、灵境计算...核心技术到人文生态
  8. K3S高可用安装体验
  9. 大数据在推荐系统中的作用
  10. BitMap生成艺术字体Bf文件
  11. linux 查看ps命令大全,linux中ps命令使用大全
  12. 科技生活第一季:解读数字孪生概念 —— 智慧城市大脑
  13. 《人月神话》(P8)巴比伦塔的失败
  14. r语言 精美rda图_R语言高质量绘图的10条tips
  15. 有没有开以修改服务器游戏数据,剑网3指尖江湖第二批服务器数据互通啦 来看看有没有你所在的大区...
  16. c语言中循环体表达式,C语言的循环语句
  17. 自定义php模板引擎
  18. 《计算机科学与探索》期刊投稿
  19. 【ESP32_8266_WiFi (一)】网络通信基础
  20. java 计算星座_Java根据出生日期计算星座

热门文章

  1. POJ - 3259 Wormholes(判断负环)
  2. windows server 2016安装oracle 10_Weblogic12.1.3.0补丁安装(win server与linux安装步骤介绍)
  3. mysql innodb索引覆盖_Mysql InnoDB 覆盖索引与回表
  4. C++虚继承(五) --- 虚拟继承的概念
  5. Gradle构建中:No cached version available for offline mode解决方案
  6. 极客精神|自制机械臂!被任正非表扬的华为天才少年
  7. 如何防止单例模式被JAVA反射攻击
  8. 曹大带我学 Go(6)—— 技术之外
  9. STL中sort算法简析
  10. 【内含福利】七牛云线下专场活动免费报名