神话宝宝 发表于 2023-12-17 15:58:40

C++用户自定义拦截指定弹窗源码

C++用户自定义拦截指定弹窗源码,实现自定义广告拦截电脑拦截各种流氓弹窗源码

#include <afxwin.h>
#include <iostream>
#include <fstream>
#include <string>
#include <thread>
#define RULE_FILE "rules.data"
using namespace std;

HWND hWnd;
string wndtitle;
BOOL showflag = false;

bool Init();
void GetWnd(HWND& wnd, string& title);
void WriteRules(string rule);
bool IsHit(string title);
void FindAd();
void ShowHide();
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam);

int main()
{
    SetWindowTextA(GetForegroundWindow(),"Panel AD Killer made by Panel www.52pojie.cn");

    if (!Init())
    {
      return 0;
    }

    HANDLE hThread;
    hThread = CreateThread(
      NULL,                  
      0,                     
      (LPTHREAD_START_ROUTINE)FindAd,      
      NULL,            
      0,               
      NULL);         

    // 消息循环
    MSG msg = { 0 };
    while (GetMessage(&msg, NULL, 0, 0) != 0) {
      if (msg.wParam == 1) {
            GetWnd(hWnd, wndtitle);
            WriteRules(wndtitle);
      }if (msg.wParam == 2)
      {
            ShowHide();
      }
      if (msg.message == WM_CLOSE) {

            ShowWindow(hWnd, SW_HIDE);
      }
    }
}

bool Init()
{
    BOOL flag;
    if (RegisterHotKey(NULL, 1, MOD_CONTROL | MOD_ALT, 'E')) {
      cout << "初始化成功1\n";
      flag = true;
    }
    else {
      cout << "初始化失败,热键可能被占用1\n";
      flag = false;
    }
    if (RegisterHotKey(NULL, 2, MOD_CONTROL | MOD_ALT, 'T')) {
      cout << "初始化成功2\n";
      flag = true;
    }
    else {
      cout << "初始化失败,热键可能被占用2\n";
      flag = false;
    }
    return flag;
}
void GetWnd(HWND& wnd, string& title)
{

    POINT pNow = { 0,0 };
    if (GetCursorPos(&pNow))
    {
      HWND hwndPointNow = NULL;
      hwndPointNow = WindowFromPoint(pNow);
      wnd = hwndPointNow;
      if (hwndPointNow)
      {
            char szWindowTitle;
            ::GetWindowTextA(hwndPointNow, szWindowTitle, sizeof(szWindowTitle));
            title = string(szWindowTitle);
            //cout << hex << (int)hwndPointNow << endl;
            cout << szWindowTitle << endl;
      }
      else
            cout << "Error!!" << endl;
    }
}
void WriteRules(string rule)
{
    ofstream file(RULE_FILE,ios::binary|ios::app);
    if (!file.is_open()) {
      std::cerr << "配置文件无法打开" << std::endl;
      return;
    }
    file << rule << std::endl;
    file.close();
}
bool IsHit(string title)
{
    ifstream inputFile(RULE_FILE,ios::app);

    if (!inputFile.is_open()) {
      std::cerr << "无法打开文件" << std::endl;
      return false; // 返回错误代码
    }

    std::string line;
    while (std::getline(inputFile, line)) {
      if (line == title)
      {
            inputFile.close();
            return true;
      }
    }

    return false;
}
void FindAd()
{
    do
    {
      EnumWindows(EnumWindowsProc, 0); Sleep(1000);
    } while (true);
}
void ShowHide()
{
    showflag = !showflag;
    if (showflag)
    {
      ShowWindow(GetForegroundWindow(), SW_HIDE);
    }
    else {
      ShowWindow(GetForegroundWindow(), SW_SHOW);
    }
}
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) {
    char windowTitle;

    GetWindowTextA(hwnd, windowTitle, sizeof(windowTitle));

    if (string(windowTitle) == "")
    {
      return true;
    }

    if (string(windowTitle).find("shadow") != string::npos)
    {
      PostMessage(hwnd, WM_CLOSE, 0, 0);
    }

    if (IsHit(string(windowTitle)))
    {
      PostMessage(hwnd, WM_CLOSE, 0, 0);
    }

    return TRUE; // 继续列举下一个窗口
}



行走的蜗牛 发表于 2023-12-18 00:40:17

来瞧瞧的,呵呵

fghjgfkjhgk 发表于 2023-12-18 09:21:54

支持,赞

Hacker 发表于 2023-12-18 18:03:31

这个好好支持一下

501369613 发表于 2023-12-19 02:45:08

这个不错,谢谢共享

lllll557 发表于 2023-12-19 12:35:31

多上传一点源码

找找找 发表于 2023-12-19 13:44:18

谢谢楼主的辛苦分享

asd26297 发表于 2023-12-19 14:53:05

不错不错 支持下

lllll557 发表于 2023-12-19 16:01:53

这个好好支持一下

22222222 发表于 2023-12-19 17:10:40

感谢您的无私精神...
页: [1] 2 3 4 5 6
查看完整版本: C++用户自定义拦截指定弹窗源码