Здраствуйте,нужно написать программу на С++,которая будет принудительно отключать и через N-ный промежуток времени включать интернет.Дело в том,что ни на форуме да и в гугле я найти никакой инфы не смог.Поэтому если кто то обладает информацией киньте ссылку,чтобы было откуда начать шагать,а заодно в последствии помоч в разработке самой программы.Винда Хр ,внешний модем стримовский.
volvo
4.07.2010 23:09
Начать копать можно отсюда: INetConnection Interface. Для WinXP подойдет, в новых версиях Windows - не уверен, читай ремарки в MDSN внимательно.
Отключение соответствующего сетевого соединения (network connection) приведет к невозможности его использования. Где-то на expert-exchange выкладывался пример использования этого интерфейса для отключения/подключения Интернета. Искать сейчас некогда, попробуй поискать сам. Если у тебя нет аккаунта в ЕЕ - в ГуглоКэше должно было сохраниться...
Krjuger
4.07.2010 23:39
Цитата
INetConnection Interface
Это я более менее понял,но это уже идет обработка события,а для начала,надо как то это событие создать..Насчет Экспертов,да там поднята парочка подобных тем,но прочитать коментарии из всех я смог только в 1 и то не очень понял.
Цитата
In general declarations:
Private Declare Function InternetAutodial Lib "wininet.dll" (ByVal dwFlags As Long, ByVal dwReserved As Long) As Long Private Const INTERNET_AUTODIAL_FORCE_ONLINE = 1 Private Const INTERNET_AUTODIAL_FORCE_UNATTENDED = 2 Private Declare Function InternetAutodialHangup Lib "wininet.dll" (ByVal dwReserved As Long) As Long
Private Sub Command1_Click()
'Shell "rundll32.exe rnaui.dll,RnaDial" & "your dial-up connection", 1 'To prompt the user to connect to the Internet use: ' If InternetAutodial(INTERNET_AUTODIAL_FORCE_ONLINE, 0) Then ' MsgBox "Connected" End If
'To display the "Dial-up Connection" window and automatically start dialing use:
If InternetAutodial(INTERNET_AUTODIAL_FORCE_UNATTENDED, 0) Then 'MsgBox "Connected" End If
'To disconnect an automatically dial Internet connection use: ' If InternetAutodialHangup(0) Then ' MsgBox "Disconnected" End If
Но что то это через чур мудрено и явно не для СИ++.По крайней мере я не совсем представляюю как dll библиотеку подключить эту.
All comments and solutions are aviable to premium service members only.
Так что не могу я посмотреть его ответ даже через кеш.Все атки там люди не глубые администрируют сайт))))
Так что если тебя не затруднит не мог бы ты суда скопироват что там написано,как я понмаю у тебя доступ то есть.
volvo
5.07.2010 22:57
Цитата
Так что не могу я посмотреть его ответ даже через кеш.
А ты до конца страничку-то вниз прокрути... Сначала - сообщения "All comments and solutions are aviable to premium service members only.", потом - рекламный блок. А потом - чудо, правда? - открытым текстом сами сообщения... С Гуглом не проходят такие штуки, он все видит
Krjuger
5.07.2010 23:15
Воистину я лол....
Нечто подобное на намного более примитивное я пытался написать...
А вместо имени там выводится какая то белиберда на китайском.короче эту проверку не проходит и выкидывает сразу на ошибку.
И еще такой вопрос,надо ли отключать анитирусы и файрволы, а то они не любят когда такие дела проворачиваются.или же все таки пропускают такие манипулции?
volvo
6.07.2010 0:33
А можно посмотреть, с какими параметрами запускается программа? Ей вообще-то должно передаваться как минимум 2 параметра: первый - название интерфейса (для примера - "Local Area Connection"), который надо отключить/включить, второй - "0" для отключения, "1" для включения.
Krjuger
6.07.2010 0:36
А по моему наоборот так как первый параметр интовый тобиш число,а второй массив символов.лан щас попробую ручками передать.
volvo
6.07.2010 0:37
А еще лучше - так:
myProg.exe "Local Area Connection" 4 0
(это для отключения, для включения - надо последним параметром передать "1")
Там же все написано, кодом, какие параметры откуда читаются, и как потом обрабатываются... Я, кстати, запускать и ставить эксперименты на рабочей машине не буду, это так, для информации.
Добавлено через 2 мин.
Цитата
А по моему наоборот так как первый параметр интовый тобиш число,а второй массив символов
Зарекался уже тебе отвечать - нет, опять ответил. Знаешь что, иди ка ты... Учи язык, а? Где у тебя первый параметр интовый? Где второй - массив символов?
Цитата
swprintf(ifname,L"%S",argv[1]); //Copy the interface name "Local Area Connection" nCmd = atoi(argv[2]); //Copy the Command if ( argc == 4 ) { nPortStatus = ( argv[3][0] == '1' ) ? 1:0 ; //Copy the Status to be Set }
В общем, с тобой ясно, до свидания.
Krjuger
6.07.2010 0:46
Не ты меня наверно немного не понял.У меня в программе до этого даже не доходило.....Насчет того что ты запускать на своем компе не будет это я прекрасно понимаю.Насчет параметров я имел в виду
void main(int argc, char** argv)
У меня проверку argc не проходило,так что это наверно недопонимание между нами возникло.Так что не надо уж так радикально то..В этой сфере я действительно знаю оочень мало.Поэтому и прошу помощи.
Да до этого мы пару раз довольно бурно дискутировали,но зачем же каждый раз так "в штыки" меня воспринимать то.
Krjuger
6.07.2010 2:35
Да я конешно дико извиняюсь за свою тупку,щас я уже разобрался почти во всем,откуда что берется,но тут возникла небольшая проблема.Варианты проверки статусов порта и линка работают коректно,а вот при попытке включения и отключения возникает такая ошибка 'pConnectionUI' используется без инициализации.Причем эта ошибка возникает как при включении так и при отключении. Ошибка происходит в строке.