激活当前屏幕保护及获取网上计算机名及其IP地址

王朝vc·作者佚名  2006-01-08
宽屏版  字体: |||超大  

1. 如何激活当前屏幕保护程序

// 激活当前屏幕保护程序, jingzhou xu

PostMessage(WM_SYSCOMMAND,SC_SCREENSAVE,0);

2. 如何获取局域网上计算机名及它们的IP地址

l 连接ws2_32.lib和 mpr.lib库

l #include winsock2.h

CString strTemp;

struct hostent *host;

struct in_addr *ptr; // 检索IP地址

DWORD dwScope = RESOURCE_CONTEXT;

NETRESOURCE *NetResource = NULL;

HANDLE hEnum;

WNetOpenEnum( dwScope, NULL, NULL,

NULL, &hEnum );

WSADATA wsaData;

WSAStartup(MAKEWORD(1,1),&wsaData);

if ( hEnum )

{

DWORD Count = 0xFFFFFFFF;

DWORD BufferSize = 2048;

LPVOID Buffer = new char[2048];

WNetEnumResource( hEnum, &Count,

Buffer, &BufferSize );

NetResource = (NETRESOURCE*)Buffer;

char szHostName[200];

unsigned int i;

for ( i = 0;

i < BufferSize/sizeof(NETRESOURCE);

i++, NetResource++ )

{

if ( NetResource->dwUsage ==

RESOURCEUSAGE_CONTAINER &&

NetResource->dwType ==

RESOURCETYPE_ANY )

{

if ( NetResource->lpRemoteName )

{

CString strFullName =

NetResource->lpRemoteName;

if ( 0 ==

strFullName.Left(2).Compare("\\\\") )

strFullName =

strFullName.Right(

strFullName.GetLength()-2);

gethostname( szHostName,

strlen( szHostName ) );

host = gethostbyname(strFullName);

if(host == NULL) continue;

ptr = (struct in_addr *)

host->h_addr_list[0];

// =. 分隔开IP:211.40.35.76.

int a = ptr->S_un.S_un_b.s_b1; // 211

int b = ptr->S_un.S_un_b.s_b2; // 40

int c = ptr->S_un.S_un_b.s_b3; // 35

int d = ptr->S_un.S_un_b.s_b4; // 76

strTemp.Format("%s --> %d.%d.%d.%d",

strFullName,a,b,c,d);

AfxMessageBox(strTemp);

}

}

}

delete Buffer;

WNetCloseEnum( hEnum );

}

WSACleanup();

联系方式:

地址:陕西省西安市劳动路2号院六单元

邮编:710082

作者EMAIL:jingzhou_xu@163.net

未来工作室(Future Studio)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有