动手DIY,给你的MSN机器人加上远程控制功能

155 views 八月 28, 07 by Timothy

MSN机器人是一个比较好玩的东东,通过第三方提供的SDK开发包,允许我们开发自己的MSN机器人,实现一些有趣的功能。比如自动聊天等等。

进行MSN机器人开发,需要你首先申请一个MSN帐号,然后去http://sp.incesoft.com/index注册帐号,把你的MSN机器人挂在平台上面。然后下载SDK,开发机器人逻辑。
开发出来的机器人程序,会主动和第三方的平台登录连接,这个时候,你的机器人就可以运行了。

运行的方式:
1.机器人程序–>登录incesoft服务器—>MSN机器人上线
2.MSN客户端向机器人发起聊天—>incesoft接收到数据包—>转发给你的机器人程序

这样,MSN客户端发给你的机器人的信息,就传递到你的机器人程序了,而你可以根据不同的信息,进行不同的动作,这些动作,都是在incesoft提供的SDK里面封装好了。

通过这种运行方式,要加入远程控制功能,是非常方便的,我们可以将登录MSN机器人程序的机器,作为受控端。而且还有一个好处,就是你不用去关心IP变化,只要机器人上线了,就可以开始控制了,这也是用MSN机器人实现的优势。

远程控制,流程如下:
1.被控制机器,运行MSN机器人程序,登录MSN机器人
2.管理机器,发送OP指令给MSN机器人,获取OP控制权限
3.管理机器,发送控制指令
4.被控制机器端,响应指令,做出回应

好像被我说复杂了,其实实现起来非常的简单。

需要准备的工作,申请MSN帐号,然后去http://sp.incesoft.com/index 申请一个帐号,挂上你的MSN帐号。然后下载SDK包,进行开发。

下面是我实现的一个简单的远程控制功能

1.和机器人交互,出现命令菜单

这个时候需要你进入OP模式,才能进行远程控制的操作

2.输入OP密码,这个时候,就获取了OP控制权限,可以控制远程机器了

3.远程控制示例,列举进程列表

4.杀掉指定进程

5.退出OP模式

关机和重启,功能是实现了的,这里就不演示了,呵呵

放上源代码,大家可以下载下来试试

点击下载此文件

调试运行的时候,请替换RobotService.cs Line:144 行的用户名和密码,也就是你在incesoft注册的帐号和密码。

新书推介

93 views 七月 18, 07 by Timothy

给大家推荐一本新书 《深入浅出–Visual Basic 2005入门、进阶与应用实例》
由MVP陈锐编著,是一本不可错过的好书,呵呵

【内容简介】
本书从开发平台搭建入手,详细地介绍了Visual Basic 2005开发的相关技术,包括Visual Basic 2005新特性、数据库访问、My命名空间、异常处理和调试、用户界面设计、创建自定义控件、ASP.NET 2.0编程等,并针对数据库、多媒体、系统、Web等目前几大热点主题,给出3个完整的并具代表性的应用实例,力图将Visual Basic 2005开发技术全面、系统、深入地展现给读者。.
本书不但融合了作者在使用Visual Basic 2005过程中遇到的各种常见问题和应用案例,还总结了作者几年来在CSDN社区VB版所解决的大量问题,并对不同问题的产生原因和相关的原理进行了深入浅出的讲解,更重要的是,还提供了一系列解决问题的思路和方法。
本书适用于打算进入Visual Basic开发领域的初学者,有一定Visual Basic基础并想深入学习Visual Basic 2005的开发人员。本书也可以作为各大中专院校相关专业的参考用书,或作为相关培训机构的培训教材。
本书针对如何使用Visual Basic 2005来设计丰富的Windows和Web程序,以Visual Basic 2005语言为基础进行纵向展开,详细介绍了从开发平台的搭建到完整开发实例的实现。..
本书是作者多年实践工作的积累和总结,面向实用,由浅入深,循序渐进。全书可分为三个层次,第一层次是开发平台搭建部分;第二层次是基础知识部分,介绍如何使用开发工具提供的功能及控件、如何访问数据库、如何对程序进行调试等;第三层次是实例部分,介绍了3个完整的开发实例:个人信息管理系统、坦克大战游戏和基于Web的办公自动化系统,涉及了数据库、多媒体、系统、Web、开发工具安装调试等目前几大极具关注度的知识点,其剖析和探索程度可见一斑。
本书适用于打算进入Visual Basic开发领域的初学者,有一定Visual Basic基础并想深入学习Visual Basic 2005的开发人员,尤其适用于入门、进阶以及希望深入研究Visual Basic技术的读者。
本书也可以作为各大中专院校相关专业的教学辅导和参考用书,或作为相关培训机构的培训教材。

购书地址

发布一个ASP.NET相册控件(含源码)

162 views 七月 06, 07 by Timothy

/*
* PhotoAlbum Control V1.0
* By Timothy Ye 2007.7.6
* You can modify it, and republish it.
* http://www.xiaozhou.net
*/

PhotoAlbum 功能列表:
1.无须数据库支持,直接处理服务器图片目录
2.为大图片生成缩略图,并存放到专门的目录,提高相册预览图片的效率
3.简化图片添加过程,直接上传图片到图片目录即可,相册自动获取、遍历新上传的图片,并生成缩略图
4.增加多页跳转功能
5.简单易用,直接插入控件到你的页面,并进行相关设置即可使用

PhotoAlbum 控件说明:
1.该控件在页面加载的时候,会搜索当前网站指定目录所有jpg格式的文件,在使用时需要指定原图片存放地址和生成的缩略图存放地址,需要添加到web.config文件中:

try
{
smallfoldername = Server.MapPath(ConfigurationManager.AppSettings["SmallPath"]);
bigfoldername = Server.MapPath(ConfigurationManager.AppSettings["NormalPath"]);
}
catch
{
smallfoldername = Server.MapPath("./Photo/SmallPics/");
bigfoldername = Server.MapPath("./Photo/NormalPics/");
}

如果获取用户配置路径失败,控件默认采用./Photo/SmallPics/ 和./Photo/NormalPics/ 两个目录
NormalPics为用户上传原图片的地址,SmallPics为控件生成并存放缩略图的地址。

2.控件在页面加载的时候,遍历原图地址,并逐个生成缩略图,存放到缩略图地址目录。第一次运行,会牺牲效率,当缩略图生成完毕后,运行速度大幅提高。

3.生成缩略图,采用ImageThumbnail类的MakeThumbnail方法实现,缩略图的大小和生成方式,可以自行设置。可以分别按高、宽生成,不过图片可能会产生变形,也可以用CUT裁剪方式。

4.相册处理图片文件,并把图片文件展现给前端浏览器。相册可视化部分,采用DataList控件实现。

相册控件效果图如下:
点击浏览

相册源码下载:
点击下载此文件

开发环境:
Windows XP SP2
.NET Framework2.0
Visual Studio 2005 SP1

.NET中关机、重启的类

103 views 六月 30, 07 by Timothy

这是一个封装的在.NET下面实现关机和重启的一个类,其实就是直接引用了Win32 API。
业余的时间,写了个MSN机器人,后来突发灵感,想加入远程控制主机的功能,包括重启和关机,于是用上了这个类。待MSN机器人开发完成,放出源码,hoho。

//关机、重启计算机 封装类
using System;
using System.Collections.Generic;
using System.Text;
using System;
using System.Runtime.InteropServices;

namespace MyRobot
{

class ShoutDown
{
[StructLayout(LayoutKind.Sequential, Pack = 1)]
internal struct TokPriv1Luid
{
public int Count;
public long Luid;
public int Attr;
}

[DllImport("kernel32.dll", ExactSpelling = true)]
internal static extern IntPtr GetCurrentProcess();

[DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]
internal static extern bool OpenProcessToken(IntPtr h, int acc, ref IntPtr phtok);

[DllImport("advapi32.dll", SetLastError = true)]
internal static extern bool LookupPrivilegeValue(string host, string name, ref long pluid);

[DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]
internal static extern bool AdjustTokenPrivileges(IntPtr htok, bool disall,
ref TokPriv1Luid newst, int len, IntPtr prev, IntPtr relen);

[DllImport("user32.dll", ExactSpelling = true, SetLastError = true)]
internal static extern bool ExitWindowsEx(int flg, int rea);

internal const int SE_PRIVILEGE_ENABLED = 0×00000002;
internal const int TOKEN_QUERY = 0×00000008;
internal const int TOKEN_ADJUST_PRIVILEGES = 0×00000020;
internal const string SE_SHUTDOWN_NAME = "SeShutdownPrivilege";
internal const int EWX_LOGOFF = 0×00000000;
internal const int EWX_SHUTDOWN = 0×00000001;
internal const int EWX_REBOOT = 0×00000002;
internal const int EWX_FORCE = 0×00000004;
internal const int EWX_POWEROFF = 0×00000008;
internal const int EWX_FORCEIFHUNG = 0×00000010;

public static void DoExitWin(int flg)
{
bool ok;
TokPriv1Luid tp;
IntPtr hproc = GetCurrentProcess();
IntPtr htok = IntPtr.Zero;
ok = OpenProcessToken(hproc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ref htok);
tp.Count = 1;
tp.Luid = 0;
tp.Attr = SE_PRIVILEGE_ENABLED;
ok = LookupPrivilegeValue(null, SE_SHUTDOWN_NAME, ref tp.Luid);
ok = AdjustTokenPrivileges(htok, false, ref tp, 0, IntPtr.Zero, IntPtr.Zero);
ok = ExitWindowsEx(flg, 0);
}
}
}

小福很受伤

124 views 六月 30, 07 by Timothy

今天和老婆出去吃饭,下楼无意间发现小福后门的地方,一条很长的痕迹,看样子是被别人倒车的时候刮了……
心疼加郁闷,“凶手”也没被抓到。
猜想一定是个菜鸟司机,倒车的技术也太……
无语了……
没想到小福惨遭毒手……
郁闷……

直到今天,又发现一处刮伤,而且像是人为的,无语了……