简易小工具实现批量打开多个网页

文章介绍了一个使用C++编写的程序,该程序能读取配置文件中的网址列表并依次打开,为解决超过一定数量或重复网址导致的系统调用失败问题,作者采用了延时策略。代码中通过std::thread实现间隔打开,确保每个网址的成功调用。程序在Win10x64系统下测试有效。
摘要由CSDN通过智能技术生成

最近有个需求,希望一次性可以打开多个网页,网址自由指定,这个需求的实现非常简单,使用基本的c++代码调用system函数即可,都不需要MFC相关的东西。

但是我实测一些工具后发现一个问题,当打开超过大约3个网址的时候,有可能调用失败,而尤其是当打开的是相同的网址,则即时你一次性只打开两个网址(相同),也会大概率被判定成一次调用,我猜想可能是接口函数进行了一定的去重处理。如果是相同的网页进行去重处理倒也没问题,但是不同的网址,也会有极大概率打开失败,这自然是我不想看到的,我经过测试,发现加入一定的延时处理,即可正常调用,目前实测8个网页一次性打开也没问题。

于是我自己编写了一个小工具,实现一次性打开多个网页。

 

下面是主要代码:

//author:autumoon
//联系邮箱:9506#163.com
//日期:2023-04-06 
// batWebsites.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <thread>
#include "../../Common/often/StdStrFile.h"

int main()
{
    //读取配置文件
	_tstring stWebPath = L"urls.txt";

	std::vector<_tstring> vUrls;
	size_t nLineCount = CStdFile::ParseTXTFile(stWebPath, vUrls);

	if (nLineCount <= 0 || nLineCount > 100)
	{
		CStdFile::SaveTXTLine(stWebPath, L"www.baidu.com");
		system("start www.baidu.com");
		return -1;
	}

	for (size_t i = 0; i < nLineCount; i++)
	{
		_tstring stCmd = L"start " + CStdStr::AddQuoteIfContains(vUrls[i]);

		if (i % 3 == 0)
		{
			std::this_thread::sleep_for(std::chrono::milliseconds(200));
		}

		std::string sCmd = CStdStr::ws2s(stCmd);
		system(sCmd.c_str());
	}

	return 0;
}

// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单

// 入门使用技巧: 
//   1. 使用解决方案资源管理器窗口添加/管理文件
//   2. 使用团队资源管理器窗口连接到源代码管理
//   3. 使用输出窗口查看生成输出和其他消息
//   4. 使用错误列表窗口查看错误
//   5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
//   6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件

关键代码为1个for循环,每三次调用加入延时。

Win10x64系统下成品下载:batWebsites.rar - 蓝奏云

欢迎交流与讨论。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值