Здраствуйте,нужно написать программу на С++,которая будет принудительно отключать и через N-ный промежуток времени включать интернет.Дело в том,что ни на форуме да и в гугле я найти никакой инфы не смог.Поэтому если кто то обладает информацией киньте ссылку,чтобы было откуда начать шагать,а заодно в последствии помоч в разработке самой программы.Винда Хр ,внешний модем стримовский.
Начать копать можно отсюда:
http://msdn.microsoft.com/en-us/library/aa365084%28v=VS.85%29.aspx. Для WinXP подойдет, в новых версиях Windows - не уверен, читай ремарки в MDSN внимательно.
Отключение соответствующего сетевого соединения (network connection) приведет к невозможности его использования. Где-то на expert-exchange выкладывался пример использования этого интерфейса для отключения/подключения Интернета. Искать сейчас некогда, попробуй поискать сам. Если у тебя нет аккаунта в ЕЕ - в ГуглоКэше должно было сохраниться...
Да не надо ничего подключать:
http://webcache.googleusercontent.com/search?q=cache:2DNF_FwboVkJ:www.experts-exchange.com/Programming/Misc/Q_20696554.html+disable+%22internet+connection%22+programmatically&cd=6&hl=ru&ct=clnk пост abdij от 09/15/03 - именно С/С++
Воистину я лол....
Нечто подобное на намного более примитивное я пытался написать...
#include <netcon.h>
#include <stdio.h>
void DisableNIC(char* InterfaceName)
{
INetConnectionManager* pNet;
INetConnection* pConn;
IEnumNetConnection* pEnum;
NETCON_PROPERTIES* pProps;
wchar_t Temp[255];
ULONG uCount = 0;
swprintf(Temp, L"%S", InterfaceName);
CoInitialize(NULL);
CoCreateInstance(CLSID_ConnectionManager, NULL, CLSCTX_SERVER, IID_INetConnectionManager, (void**)&pNet);
pNet->EnumConnections(NCME_DEFAULT, &pEnum);
while (pEnum->Next(1, &pConn, &uCount) == S_OK)
{
pConn->GetProperties( &pProps );
if (!wcscmp(pProps->pszwName, Temp))
{
printf("Found %S\n", pProps->pszwName);
printf("Going to disable connection now!\n");
pConn->Disconnect();
printf("Disabled!");
CoTaskMemFree(pProps->pszwName);
CoTaskMemFree(pProps->pszwDeviceName);
CoTaskMemFree(pProps);
pConn->Release();
}
}
pEnum->Release();
pNet->Release();
CoUninitialize();
}
void main()
{
DisableNIC("Local Area Connection");
}
Тааак,я попробовал скомпилировать и посомтреть тот код, про кторый ты говорил,что то он у меня не работает а точнее он не проходит проверку.
void main(int argc, char** argv)
......
.......
if (argc <= 2)
А можно посмотреть, с какими параметрами запускается программа? Ей вообще-то должно передаваться как минимум 2 параметра: первый - название интерфейса (для примера - "Local Area Connection"), который надо отключить/включить, второй - "0" для отключения, "1" для включения.
А по моему наоборот так как первый параметр интовый тобиш число,а второй массив символов.лан щас попробую ручками передать.
А еще лучше - так:
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
}
Не ты меня наверно немного не понял.У меня в программе до этого даже не доходило.....Насчет того что ты запускать на своем компе не будет это я прекрасно понимаю.Насчет параметров я имел в виду
void main(int argc, char** argv)
Да я конешно дико извиняюсь за свою тупку,щас я уже разобрался почти во всем,откуда что берется,но тут возникла небольшая проблема.Варианты проверки статусов порта и линка работают коректно,а вот при попытке включения и отключения возникает такая ошибка 'pConnectionUI' используется без инициализации.Причем эта ошибка возникает как при включении так и при отключении.
Ошибка происходит в строке.
if(SUCCEEDED(pConnection->QueryInterface(IID_INetConnectionConnectUi, (void**)pConnectionUI)))