打造Windows信使服务程序
信使服务是Windows 2000/XP下面的一种通信服务,通过它我们可以在网上象QQ一样进行实时的交流,但和QQ不同的是信使服务不需要拥有一个号码,它只要知道对方的IP地址--如果在局域网中,只要知道对方的计算机名就可以了。我们可以利用"net send"在命令行下面发送消息,也可以通过"控制面板-管理工具-计算机管理"中的" *** 作"菜单里面的"所有任务-发送控制台消息…"来发送。接收方的计算机要求必须是Win2000/XP,因为 Win9x本身是不提供信服服务的,除非你手动启动了WinPopup.。程序编译运行后,在Windows2000下启动控制台,输入:netsend 192.168.0.10 127.0.0.1 "我的信使程序!"运行以上命令后,在Windows桌面上将d出一个对话框,其上标有"我的信使程序!"字符和相关IP信息。
一、实现方法
信使服务为大家在网络上提供了简便、快捷的'聊天方式,所以网上也有一些改进了的信使服务发送程序,使信息的发送可以按照自己的意愿来进行而不受微软提供的"net send"所限制。如果你经常上网,也许会收到通过信使服务发来的广告或者其他莫名其妙的信息,而在"信使服务"窗口中所显示出来的发送方的计算机名或者IP地址和你自己的竟然一样。如果你遇到过这种情况,那么你想不想知道这种改进了的信使服务发送程序是怎么实现的呢?
本实例将要带你去剖析一下Windows的信使服务,我们将从一个程序员的角度来看看这个信使服务发送程序是如何实现的。其实实现信使服务的整个过程很简单,我们只需要调用一个API函数:
NET_API_STATUS NetMessageBufferSend(
LPWSTR servername,
LPWSTR msgname,
LPWSTR fromname,
LPBYTE buf,
DWORD buflen
)
其中该函数的参数说明如下:
servername:计算机名,该函数将在指定的这个计算机上面执行。如果为NULL,则表示为本地计算机,通常我们都将其设置为NULL。
msgname:目标计算机的名字或者IP地址。
fromname:源计算机的名字或者IP地址。
buf:指向一个信息缓冲区的指针,在这里你可以填上你想发送的信息。要注意的是,这个参数用的是Unicode编码。
buflen:上述信息缓冲区中的字节数。
现在函数已经介绍完了,通过这个函数我们可以发现如果想实现匿名的信使服务实在是太简单--只需要在fromname中填上一个假冒的计算机名或者IP地址就行了。下面给出一个实际例子,在这个程序中,我们从命令行参数接受目标计算机和源计算机名字(IP地址),同时我们还可以设定信息发送的次数。
二、编程步骤
1、启动Visual C++6.0,新建项目netsend,选择控制台模式
2、在项目中添加新文件netsend.c
3、添加代码,编译运行程序。
三、程序代码
#define _UNICODE
#define UNICODE
#include
#include
#include
#include
#include
#include
#include
#pragma comment(lib,"netapi32.lib")
int wmain(int argc, wchar_t *argv[])
{
int count
wchar_t *wdest, *wfrom, *buffer,*wtarget
DWORD dwReturn
if((argc 5))
{
printf("Usge: %S [Count] ",argv[0])
printf("Count: Count means number of times to send message,default is 1. ")
return 0
}
wdest = argv[1]//目标计算机
wfrom = argv[2]//源计算机
buffer = argv[3]//发送的信息
count = _wtoi(argv[4])//发送次数,缺省为1次
if(count ==0)
count = 1
printf("count = %d ",count)
dwReturn = NetMessageBufferSend(NULL, wdest, wfrom,
(LPBYTE)buffer, 2*lstrlen(buffer))//因为buffer是Unicode编码,所以需要乘以2
if(dwReturn == NERR_Success)
{
printf("Send OK!")
while(count1)
{
NetMessageBufferSend(
所谓任务计划就是由计算机自动调用用户事先设置好的应用程序,从而达到简化用户 *** 作的目的。利用Windows2000的任务计划程序(相当与*NIX下的cron程序,这里不再对其详述),我们可以安排任何脚本、程序或文档在最恰当的时候运行,从而满足自己的需要。下面以Windows
2000为例。
具体来说,我们若需利用任务计划程序自动运行则应执行如下步骤:
单击"开始"按钮,然后依次选择"程序"→"附件"→"系统工具"→"任务计划"(或者是"设置"→"控制面板"→"任务计划"),启动Windows
2000的任务计划管理程序。
在"任务计划"窗口中双击"添加任务计划"图标,启动系统的"任务计划向导",然后单击"下一步"按钮,在给出的程序列表中选择需要自动运行的应用程序,然后单击"下一步"按钮。
设置适当的任务计划名称并选择自动执行这个任务的时间频率(如每天、每星期、每月、一次性、每次启动计算机时、每次登录时等),然后单击"下一步"按钮。
此时系统将会要求用户对程序运行的具体时间进行设置,如几号、几点钟、哪几个时间段才能运行等,我们只需根据自己的需要加以设置即可。
接下来系统将会要求用户设置适当的用户名及密码(如图5所示),以便系统今后能自动加以运行。
最后,我们只需单击"完成"按钮即可将相应任务添加到Windows
2000的任务计划程序中,此后它就会自动"记住"这个任务,一旦系统时间及相关条件与用户设置的计划相符,它就会自动调用用户所指定的应用程序,十分方
便(每次启动Windows
2000的时候,任务计划程序都会自动启动,并在后台运行,确保用户的计划能够按时执行)。
现在我们来测试一下刚才所建的任务是否成功,鼠标右键单击"php"程序图标(如图6所示),在d出的菜单里面选择"运行"。一般情况下程序图标只要这样
激活运行就可以正常启动。如果运行失败可查看用户和密码是否设置正确,还有确定"Task
Scheduler"服务是否已启动,本人当初就是为了节省系统资源把它关掉了导致运行失败,害我找了大半天。另外也可从"系统日志"里查看到底是什么原
因造成运行失败的。
好了,讲了这么多任务计划的应用,现在我们切入正题,下面将介绍两个例子:
一、让PHP定时运行
编辑如下代码,并保存为test.php:
复制代码
代码如下:
<?php
$fp
=
@fopen("test.txt",
"a+")
fwrite($fp,
date("Y-m-d
H:i:s")
.
"
让PHP定时运行吧!\n")
fclose($fp)
?>
Windows *** 作系统中的应用程序快捷方式是()模式的应用实例。
A.代理模式
B.适配器模式
C.工厂模式
D.原型模式
正确答案:代理模式
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)