Программный вход и выход из сети

Microsoft, Microsoft - сколько мною времени потрачено на выяснение этой простой веши, как же программно зайти в сеть. То есть вызвать инициализацию для входа в сеть. Реализована она в Windows отвратно. При входе или выходе из сети выгружаются приложения. Но есть возможность это обойти. Сразу смотрим код.

#include "stdafx.h"
#include "windows.h"
#include "iostream.h"

typedef BOOL (WINAPI LOGON)(LPSTR,HWND);
typedef BOOL (WINAPI LOGOOFF)(LPSTR,HWND);

void main()
{
HINSTANCE hModule=NULL;
hModule=::LoadLibrary("mpr.dll");
if (hModule!=NULL)
{
cout << "ok load" << endl;
LOGON* logon=NULL;
logon=(LOGON*)::GetProcAddress((HMODULE)hModule,"WNetLogonA");
if (logon!=NULL)
{
cout << "OK Load" << endl;
BOOL result;
result=(*logon)(NULL,NULL);
if (result==0)
{
cout << "Ok function" << endl;
char c;
cin >> c;
LOGOOFF* logoof=NULL;
logoof=(LOGOOFF*)::GetProcAddress((HMODULE)hModule,"WNetLogoffA");
if (logoof!=NULL)
{
cout << "Ok Function" << endl;
result=(*logoof)(NULL,NULL);
if (result==0)
{
cout << "Ok Exit Net" << endl;
}
}
} else cout << GetLastError() << endl;

}
::FreeLibrary(hModule);
}
else cout << "error load Dll" << endl;
}

Здесь использованы две функции, такие как WnetLogonA и WnetLogoffA. В заголовочных файлах они не описаны и по этому придется вызывать их напрямую. Итак, что мы имеем. Выйдите из сети. Запустите программу и Вы увидите то, что наверно не видели не когда. Вход в сесть при работающих приложениях - Достаточно ввести пароль и Вы войдете в сеть. После ввода в окно буквы и нажатия Enter Вы выйдите из сети.

 
« Предыдущая статья   Следующая статья »