|
发表于 2006-8-10 10:51:08
|
|阅读模式
来自 中国湖北武汉
转贴请著明:
作者:小K(Kid) 地址:落伍者论坛
本人头像就是演示
这里还是利用了本人提供的Robber()类,如有不明请查看本人帖子
http://www.im286.com/viewthread.php?tid=1539095
添加引用,引入kClass(就是Robber类).导入命名空间clsRobber
声明:
protected Bitmap b;
一个user接收传入值,也就是用户名(这里提醒一点.可能有的人会无法正确处理中文字符)
中文处理解决办法:
修改Web.config
requestEncoding="gb2312"
responseEncoding="gb2312"
修改为:gb2312,就OK了...
开始截取首页在线列表:
在线列表地址如下:http://www.im286.com/index.php?showoldetails=yes#online
查看源文件后,列表块如下:
我们以开头,以结尾就够了,不用那么精细..^^
然后判断用户是否在线:
判断传入的user值,在截取后的页面中的位置.位置如果==-1,就说明没有在其中,也就是不在线.
如果!=-1,不管等于多少,都说明在线.
如果在线,就声明 bmap=new Bitmap(Server.MapPath("online.jpg" ));
如果不在线,就声明 bmap=new Bitmap(Server.MapPath("offline.jpg" ));
保存图片:
声明一个MemoryStream对象,然后保存bmap到这个对象.(为什么不是Stream?自己想吧; ))
bmap.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);
输出:
Response.ContentType="image/jpeg";
Response.BinaryWrite(ms.ToArray());
完成!
完整代码如下:
- private void Page_Load(object sender, System.EventArgs e)
- {
- try
- {
- string user=Request.QueryString["user"];
-
- if(this.IsPostBack ||user==null)
- return;
-
- Robber r=new Robber("http://www.im286.com/index.php?showoldetails=yes#online");
- r.Rob();
- r.Cut("",2,"",1);
- bool online=r.Value.IndexOf(user)==-1?false:true;
-
- if(online)
- bmap=new Bitmap(Server.MapPath("online.jpg"));
- else
- bmap=new Bitmap(Server.MapPath("offline.jpg"));
-
- MemoryStream ms=new MemoryStream();
- bmap.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);
- Response.ContentType="image/jpeg";
- Response.BinaryWrite(ms.ToArray());
- ms.Close();
- }
- catch(Exception ea)
- {
- string eas=ea.Message;
- }
- finally
- {
- if(bmap!=null)
- bmap.Dispose();
- }
-
- }
复制代码
嗯,明白了吧.其实就是截取落伍首页的在线列表,然后判断其中是否有此人存在,由于论坛的统计不是实时更新,所以有一点点不准确.
原理不是很难,只是难想到而已,说白了,就是一个想法问题,只是一般人不容易想到..
作为本人20000的纪念贴,特整理一番,申请精华.希望对大家有用.
[ 本帖最后由 传说中的Kid 于 2006-8-10 10:57 编辑 ] |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
评分
-
查看全部评分
|