C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 163 - Программный вход и выход из сети / Win 32 API / Win32 API

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

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

#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. В заголовочных файлах они не описаны и по этому придется вызывать их напрямую. Об этом читайте "Шаг 41 - Явный вызов функций DLL". Итак, что мы имеем. Выйдите из сети. Запустите программу и Вы увидите то, что наверно не видели не когда. Вход в сесть при работающих приложениях.

163_1.gif (9351 b)

Достаточно ввести пароль и Вы войдете в сеть. После ввода в окно буквы и нажатия Enter Вы выйдите из сети.

163_2.gif (4001 b)

Пароль нужно будет вводить только один раз. При всех остальных запусках и остановках работы с сетью пароль будет уже не нужен.


| |
Автор Каев Артем.
[AD]