24小时热门版块排行榜    

查看: 158  |  回复: 0
当前主题已经存档。

zsglly

木虫 (著名写手)

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

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

// 激活当前屏幕保护程序
       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();

[ Last edited by 幻影无痕 on 2006-11-27 at 08:17 ]
回复此楼
做人要厚道啊!厚道啊!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zsglly 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见