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;
}
То магическим образом сразу нихрена не работает. То есть если заставить программу нажимать на галку, то все, капут. Так не каеф. Поможете нерадивому кодеру?
Последнее редактирование: