Программный вход и выход из сети
|
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 Вы выйдите из сети. |