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

类别:VC语言 点击:0 评论:0 推荐:
 

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:[email protected]

未来工作室(Future Studio)

 

本文地址:http://com.8s8s.com/it/it2294.htm