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

223 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注册的帐号和密码。

新书推介

96 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相册控件(含源码)

196 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中关机、重启的类

118 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);
}
}
}

小福很受伤

126 views 六月 30, 07 by Timothy

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

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

2007 MVP Open Day @ Chengdu

131 views 五月 18, 07 by Timothy

2007年的MVP Open Day合影,不过感觉比去年冷清了一些,可能成都区的MVP都有事在身,呵呵。这次除了见到以前的老面孔Leo Liang,Eric Liu,Eric Zhong,Simon Lu ,还认识了一个新任的MVP:朱永光。Jack Zou,Aaron Zhao,Kim Luo都有事没能参加。放一张合影看看.

WinLogon事件通知包编程

213 views 五月 18, 07 by Timothy

今天看到CSDN中有网友问道如何获取用户按Ctrl+Alt+Del锁定桌面的事件。回帖后大致整理了一下,希望对大家有帮助。
首先我们要了解一下WinLogon,他是负责提供给用户交互式界面的一个程序。

WinLogon初始化时会创建3个桌面:
(1)、winlogon桌面:主要显示window 安全等界面,如你按下CTRL+ALT+DEL,登陆的界面等
(2)、应用程序桌面:我们平时见到的那个有我的电脑的界面(这个大家都见过了吧,呵呵)
(3)、屏幕保护桌面:屏幕保护显示界面。

到这里,仿佛我们找到了方法,就是编写Hook程序,截获CTRL+ALT+DEL,按下的消息,这样不就可以判断用户是否要锁定桌面了吗?其实不然,在WinLogon初始化时,就向系统注册截获CTRL+ALT+DEL消息,所以其他程序就无法得到CTRL+ALT+DEL的消息。
WinLogon会和GINA DLL进行交互,缺省是MSGINA.DLL(在System32目录下)。微软同时也为我们提供的接口,自己可以编GINA DLL来代替MSGINA.DLL。

到这里,我们还能想到的方法,就是采用建立远程线程的方式,注入到WinLogon.exe中,这样也可以截获到Ctrl+Alt+Del的按下的事件。不过写远程线程比较麻烦,而且调试起来也不方便。

其实WinLogin还为我们提供了另外一种方式,就是WinLogin通知包的方式。

Winlogon通知包(Winlogon Notification Package)”就是处理winlogon在切换状态时发出的事件的DLL。你可以通过“Winlogon Notification Package”来监视winlogon事件的响应。你可以注册这些DLL,那么winlogon.exe会在启动时加载它们,并且会在系统状态切换时来调用注册DLL的事件处理函数。

其实说简单一点,就是我们可以自己编写处理winlogon的事件的逻辑,将其作为函数导出,把它编译为Win32 Dll,然后添加信息到注册表。接下来的工作,我们就不用操心了,Winlogon会根据不同的事件,自己来调用我们DLL提供的函数进行处理。

为了注册你的“Winlogon Notification Package”,必须在“HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify”下创建你的“notification package”子键。在“Notify”项下,可以根据需要创建如下键值:

Asynchronous[REG_DWORD]:表明是否异步处理winlogon事件,如设为 1,winlogon将启动一个新线程来处理。
DllName[REG_EXPAND_SZ]:指定要加载的DLL名。
Impersonate[REG_DWORD]:表明是否以登陆用户的权限来处理事件。
Lock[REG_SZ]:锁定桌面事件。
Logoff[REG_SZ]:注销事件。
Logon[REG_SZ]:登陆事件。
Shutdown[REG_SZ]:关机事件。
StartScreenSaver[REG_SZ]:启动屏保事件。
StartShell[REG_SZ]:启动shell(一般指explorer.exe)事件。
Startup[REG_SZ]:系统开机事件。
StopScreenSaver[REG_SZ]:停止屏保事件。
Unlock[REG_SZ]:解除桌面锁定事件。

其中每个事件对应DLL中的一个导出函数,即每当有事件发生时,winlogon.exe便调用相应的函数。
譬如:DllName的值为“test.dll”,Lock的值为“testLock”,那么系统锁定时,winlogon.exe将调用test.dll中导出的“testLock”函数。

关于DLL的实现非常地简单:只要导出处理事件是要调用的函数就行,其他和别的DLL无异。以下是代码的简单实现:

// WinLogonNotify.cpp : Defines the entry point for the DLL application.
//

#include "stdafx.h"
#include "WinLogonNotify.h"

#ifdef _MANAGED
#pragma managed(push, off)
#endif

BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
      )
{
 switch (ul_reason_for_call)
 {
 case DLL_PROCESS_ATTACH:
 case DLL_THREAD_ATTACH:
 case DLL_THREAD_DETACH:
 case DLL_PROCESS_DETACH:
  break;
 }
    return TRUE;
}

#ifdef _MANAGED
#pragma managed(pop)
#endif

// This is an example of an exported function.
WINLOGONNOTIFY_API void _stdcall testLock(DWORD param)
{
 MessageBox(NULL,L"Lock!",L"Tips",MB_OK);
 return;
}

以上代码在Visual Studio 2005 开发平台上编译通过。

大家可以大包下载代码参考。

点击下载此文件

这个帖子的源地址如下:

标题:如何获取锁定计算机事件
http://community.csdn.net/Expert/topic/5536/5536030.xml?temp=6.365603E-02

Dopod D600 , I got it!

135 views 五月 07, 07 by Timothy

向往Windows Mobile系统的手机已久,昨天终于下手了。呵呵。
Dopod D600,用起来整体感觉还不错。遗憾的地方好像不支持无线局域网,比较郁闷。
从此以后可以在公车上看电影,听音乐,看书,活活~~

手机制式 GSM手机
功能特色 商务手机
网络数据传输 EGPRS/GPRS
支持频段 GSM(900/1800/1900MHz)
手机类型 直板手机
硬件性能 CPU:TI OMAP850 201MHz
通话时间(分钟) 210-300
待机时间(小时) 150
智能手机 Windows系统
操作系统 Windows Mobile 5.0 简体中文版
机身内存 RAM64M,ROM128M

Page: 30 of 49 1 ... 26 27 28 29 30 31 32 33 34 ... 49