[原]VC极域电子教室相关功能的实现dll(差不多是“外挂”)

名       称:极域电子教室终结者dll
版       本:V1.0(支持极域电子教室V6 2007豪华版)
主要功能:(和极域电子教室相关的)
            获取/设置极域电子教室学生端密码
            获取/设置极域电子教室学生端班级
            获取极域电子教室学生端绑定IP
            获取/设置极域电子教室学生端进程保护状态
            获取/设置极域电子教室学生端断线锁屏状态
            关闭极域电子教室学生端进程
            模拟教师端发送远程消息(最累的。。)
其他功能:
            设置端口复用
            初始化Windows Socket 2
            获得注册表键值
            设置注册表键值
下载地址: http://yunpan.cn/QGQAdVLcExC75 (360云盘)
说      明:
1.打开"源文件\TopdomainTer.dsw",编译,生成TopdomainTer.dll文件和TopdomainTer.lib文件。
2.打开你自己的工程,在"工程->设置->连接"的"对象/库模块"中输入ws2_32.lib和TopdomainTer.lib,中间用空格分隔。
3.将TopdomainTer.h添加到你的工程,这样就可以引用里面的函数了,函数名称比较好理解,具体的函数功能可以在源文件中查看。
4.生成你的软件,使用时将TopdomainTer.dll放在你exe程序所在的目录下。
dll仅供学习和交流使用,不允许用于商业用途。但可以对程序完善、修改,如果发现了一些Bug或完善了程序,我希望您能发送一份到sunnysab@yeah.net。
您可以在任何地方免费发布这个程序并且不说明作者地址,但是别把别人的功劳清零了。。。
最后,感谢您的使用

有一个功能,获取网段内所有教师端的列表,代码已经写好,但是由于依赖MFC,没有加在dll中。代码如下:
DWORD  WINAPI  MonitorThread( LPVOID lpParameter )
{
    SOCKADDR_IN Local, 
                SockAddr;
    SOCKET      Socket,
                NewSocket;
    char        LocalIp[20];
    CListCtrl  *List = (CListCtrl*)lpParameter;

    if( List == NULL )
    {
        MessageBox( NULL, "List为空", NULL, 0 );
    }
    if( !InitWinsock2() )
    {
        MessageBox( NULL, "初始化 Windows Socket 2 失败!", NULL, MB_OK );
        return FALSE;
    }

    memset( LocalIp, 0, 20 );
    if( !GetTopdomainStudentIp( LocalIp ) )
    {
        MessageBox( NULL, "获取绑定的IP地址失败!", NULL, MB_OK );
        WSACleanup();
        return FALSE;
    }
    Socket = WSASocket( AF_INET, SOCK_DGRAM, 0, NULL, 0, WSA_FLAG_MULTIPOINT_D_LEAF|
                                                         WSA_FLAG_MULTIPOINT_C_LEAF|
														 WSA_FLAG_OVERLAPPED );
    if( !Socket )
    {
        MessageBox( NULL, "获取套接字失败!", NULL, MB_OK );
        WSACleanup();
        return FALSE;
    }
    if( !SetPortReUse( Socket ) )
    {
        MessageBox( NULL, "设置端口重用失败!", NULL, MB_OK );
        closesocket( Socket );
        WSACleanup();
        return FALSE;
    }
    Local.sin_family = AF_INET;
    Local.sin_addr.s_addr = inet_addr( LocalIp );
    Local.sin_port = htons(4804);

    if( bind( Socket, (sockaddr*)&Local, sizeof(Local)) == SOCKET_ERROR )//绑定
    {
        MessageBox( NULL, "绑定端口失败!", NULL, MB_OK );
        closesocket( Socket );
        WSACleanup();
        return FALSE;
    }
    SockAddr.sin_family    =   AF_INET;
    SockAddr.sin_port      =   htons( 4804 );
    SockAddr.sin_addr.S_un.S_addr   =   inet_addr( "224.40.40.40" );

	if( ( NewSocket = WSAJoinLeaf( Socket, (SOCKADDR*)&SockAddr,sizeof(SockAddr),NULL,NULL,NULL,NULL, JL_BOTH) ) == SOCKET_ERROR )
	{
        MessageBox( NULL, "加入组播失败!", NULL, MB_OK );
        closesocket( Socket );
        WSACleanup();
        return FALSE;
	}

    for( ; ; )
    {
        char Js[100];
        int  len = sizeof(SockAddr);

        memset( Js, 0, 100 );

        if( recvfrom( NewSocket, Js, 100, 0, (SOCKADDR*)&SockAddr, &len ) == SOCKET_ERROR )
        {
            MessageBox( NULL, "接收后数据失败!", NULL, MB_OK );
            closesocket( Socket );
            WSACleanup();
            return FALSE;
        }
        char  *TeacherIp = new char[20];
        char  *MultIp    = new char[20];
        char  *TeacherName = new char[30];
        char  *port = new char[10];
        char  *_class = new char[10];
        int    Class = 0;
        short  Port = 0;
        int    ret = 0;

        memset( TeacherIp, 0, 20 );
        memset( MultIp, 0, 20 );
        memset( TeacherName, 0, 30 );
        memset( _class, 0, 10 );
        memset( port, 0, 10 );
        ret = ResolveTeacherMessage( Js, TeacherIp, MultIp, TeacherName, Class, Port );

        sprintf( port, "%d", (unsigned short)Port );
        sprintf( _class, "%d", Class );
        switch( ret )
        {
        case 0: {
                    int  Count = List->GetItemCount();
                    bool Repeat = false;
                    CString Rclass;

                    Rclass.Format( "%d", Class );
                    for( int i = 0; i < Count; i ++ )
                    {
                        if( !Rclass.CompareNoCase( List->GetItemText( i,2 ) ) )
                        {
                            Repeat = true;
                            break;
                        }
                    }
                    if( !Repeat )
                    {
                        List->InsertItem(  Count, TeacherIp, 0 );
                        List->SetItemText( Count, 1, MultIp );
                        List->SetItemText( Count, 2, _class );
                        List->SetItemText( Count, 3, port );
                        List->SetItemText( Count, 4, TeacherName );
                    }
                    break;
                }
        }
        delete[]  TeacherIp;
        delete[]  MultIp;
        delete[]  _class;
        delete[]  port;
        delete[]  TeacherName;
    }
    closesocket(Socket);
    WSACleanup();
    
    return TRUE;
}

       这是一个线程函数。参数一定要是由(CListCtrl*)转换来的。由于可移植性不强,代码仅供参考。
        更多功能希望你来完善!
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
红蜘蛛多媒体教学软件500用户破解版。多媒体教室很好用的软件 安装中需要注意的事项: 1. 安装的时候,如果点击安装程序SETUP.EXE后没有任何反应, 请尝试重新启动操作系统、暂时关闭防火墙程序、 暂时关闭查杀病毒软件、或者卸载QQ地址栏搜索工具等。 如果还是不行,请进入操作系统的安全模式,运行SETUP.EXE开始安装过程, 直到安装过程结束,或者安装程序提示你重新启动电脑。 然后,重新启动电脑进入正常模式即可。 2. 安装的时候,如果安装界面长时间没有响应, 特别是在卸载旧版本的时候,请尝试暂时关闭防火墙程序 或者暂时停止其保护功能。 3. 安装步骤: 1. 教师机:运行安装包里的SETUP.EXE,按提示选择“安装教师机/管理机”。 2. 学生机:将安装包共享或复制到学生机上,运行SETUP.EXE,按提示选择“安装学生机”。 安装结束启动程序时,请首先确保设置防火墙程序以允许我们的程序访问网络。 4. 如果安装后发现程序无法启动,到安装目录下手工启动RSagent.exe程序也没有任何反应, 则请先查杀一下系统上是否感染了“AV终结者”病毒,因为该病毒会劫持这个程序导致无法使用。 5. 如果学生端程序不能正常启动,或者当鼠标移到系统托盘区学生端程序图标上,该图标自动消失的话, 可以先检查一下系统“服务”里的“Application Checker for Windows”项是否正确设置和启动。 因为某些机房管理类软件或安全类软件可能禁止了其他服务进程的执行。 6. 如果要“网络影院”功能支持RM/RMVB格式视频流的网络播放,还需要在所有电脑上 安装RealPlayer/RealOne Player或者Real Alternative软件,以便进行正确解码。 7. 如果进行教学广播、学生示范时,其他学生机上只看到黑屏锁定状态,看不到屏幕画面时, 请进入“功能菜单”下的《使用教程》,找到其中“解决教师演示时学生机屏幕上显示黑屏状态、 无图像的问题”一节,按此说明应该就可以找到问题因。 8. 进行3DMAX软件演示时,如果学生机上无法看到三维窗口的画面, 请在3DMAX的程序组中找到Change Graphics Mode,设置为“SOFTWARE”方式即可。 9. 如果安装软件后发现Pro/E等绘图或三维软件不可使用、或者无法广播其窗口画面, 可以找到这个文件:windows\system32\drivers\3kmirror.sys,删除之, 然后重新启动电脑后即可使用。 10.如果教学演示的内容是DVD、含视频内容的多媒体课件等“网络影院”无法支持的格式时, 可以同时启动“教师演示”和“语音广播”功能实现这些视频内容的广播教学。 注意广播时选择“较好”或“一般”的画面质量会得到更加流畅的刷新速度,而传输声音时 也需要参照帮助文档中的“如何正确设置语音教学中需要的录音控制选项?”进行正确设置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值