【C++鼠标键盘操作】自动下载CSDN博客文章到PDF
思路
这个方法的通用性比较差,用到了一个火狐的插件,这个插件可以将单篇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相关推荐
- 8.一个项目实战(下载CSDN博客文章)
专栏地址 ʅ(‾◡◝)ʃ 前言 要写一个下载器,首先要实现一个接口函数,而这个函数可以对请求的数据进行处理也就是爬虫,其次才是写图形化界面 接口的实现 其实CSDN的浏览器页面的接口很复杂,是直接通过 ...
- Python 实用爬虫-04-使用 BeautifulSoup 去水印下载 CSDN 博客图片
Python 实用爬虫-04-使用 BeautifulSoup 去水印下载 CSDN 博客图片 其实没太大用,就是方便一些,因为现在各个平台之间的图片都不能共享,比如说在 CSDN 不能用简书的图片, ...
- python+shell 备份 CSDN 博客文章,CSDN博客备份工具
python+shell 备份 CSDN 博客文章,CSDN博客备份工具 在 csdn 写了几年的博客了.多少也积累了两三百篇博文,近日,想把自己的这些文章全部备份下来,于是开始寻找解决方案. 我找到 ...
- C/C++ | Qt 实现爬虫功能,爬取CSDN博客文章
话不多说,先看程序运行截图: 注意: 本人没有看过爬虫相关的书籍,第一次写这种程序,这个程序是半屌子的,原理很简单,没有学习过爬虫的朋友,也可以写. 程序思路如下: 1.下载要爬网站的页面. 2.用正 ...
- 解决CSDN博客文章 保存网页到本地后,页面显示不全的问题
更新:2018.3.29 问题 CSDN博客文章设置为新版皮肤("大白"),保存网页到本地后.打开离线保存的网页,会出现页面显示不全的问题.(或者,点击"展开阅读全文&q ...
- 【工具】复制别人的CSDN博客文章到本地
复制别人的CSDN博客文章到本地 操作流程 1.打开自己喜欢的博客的文章,然后同时按shift+ctrl+I三个键,打开开发者工具. 2.选择elements选项,按下面图片选择(chorme浏览器) ...
- CSDN博客文章写作技巧
CSDN博客文章写作技巧 1. CSDN博客文章段落缩进问题的解决办法 1.1 解决办法 由于在写文档的时候,段落首习惯了缩进两个字符,发现使用 Tab 键无法解决这个问题,同时使用多个空格代替的 ...
- 真正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 ...
- 如何快速转载别人的CSDN博客文章并附带格式与图片
1.问题背景 最近在学习Git过程中想了解git reflog命令的高级用法与命令详解,于是找到了这几篇特别优秀的文章: [1]使用git reflog 命令来查看历史提交记录并使用提交记录恢复已经被 ...
最新文章
- python configure函数 循环_使用python统计git仓库中频繁修改的热点函数
- 在 Linux shell 中自由操作时间变量
- XNA实现不停循环的路的效果
- Lightroom Classic 教程,如何在 Lightroom 中使用边界变形保留完整视图?
- [erlang]一次erlcron崩溃引起的事故分析
- vodplayer.exe
- 一文读懂元宇宙,AI、灵境计算...核心技术到人文生态
- K3S高可用安装体验
- 大数据在推荐系统中的作用
- BitMap生成艺术字体Bf文件
- linux 查看ps命令大全,linux中ps命令使用大全
- 科技生活第一季:解读数字孪生概念 —— 智慧城市大脑
- 《人月神话》(P8)巴比伦塔的失败
- r语言 精美rda图_R语言高质量绘图的10条tips
- 有没有开以修改服务器游戏数据,剑网3指尖江湖第二批服务器数据互通啦 来看看有没有你所在的大区...
- c语言中循环体表达式,C语言的循环语句
- 自定义php模板引擎
- 《计算机科学与探索》期刊投稿
- 【ESP32_8266_WiFi (一)】网络通信基础
- java 计算星座_Java根据出生日期计算星座
热门文章
- POJ - 3259 Wormholes(判断负环)
- windows server 2016安装oracle 10_Weblogic12.1.3.0补丁安装(win server与linux安装步骤介绍)
- mysql innodb索引覆盖_Mysql InnoDB 覆盖索引与回表
- C++虚继承(五) --- 虚拟继承的概念
- Gradle构建中:No cached version available for offline mode解决方案
- 极客精神|自制机械臂!被任正非表扬的华为天才少年
- 如何防止单例模式被JAVA反射攻击
- 曹大带我学 Go(6)—— 技术之外
- STL中sort算法简析
- 【内含福利】七牛云线下专场活动免费报名