- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[考研英语]信史服务
如何使用WinNT/Win2000的信史服务给别人发信息呢?
用一个API就可以搞定!-
NET_API_STATUS NetMessageBufferSend( LPWSTR servername,
???????????????????????????????????? LPWSTR msgname,
???????????????????????????????????? LPWSTR fromname,
???????????????????????????????????? LPBYTE buf,
???????????????????????????????????? DWORD buflen );
??? 看看MSDN,可能还是有些地方不明白。尤其是第一个参数,其实它不是你发信息的目标计算机名,而是执行此函数的计算机名。第二个参数才是你发信息的目标计算机名。还有buf这个参数,MSDN里写的是LPBYTE型,很含糊,实际上这也是要Unicode码的。而最后那个buflen又是buf所占的字节数,如Unicode编码的hello占字节数是10。
??? 写个小例子吧。
#include windows.h#include lm.h#include lmmsg.h#pragma comment(lib,netapi32.lib)int main(){WCHAR msg[]=Lhello.;???????? //所发的信息WCHAR serv[]=Lnowcan-do-it;? //目标计算机名,如果要给一个工作组广播消息,要在工作组名后面加个*,如workgroup*WCHAR from[]=LNowCan;??????? //你的名字,可以是NULL(这时默认用你的登陆名)NetMessageBufferSend(NULL,serv,from,(unsigned char *)msg,14);return 0;}
或者
#define _UNICODE? //程序全部使用Unicode#define UNICODE#include stdio.h#include stdlib.h#include string.h#include wchar.h#include windows.h#include locale.h#include lm.h#pragma comment(lib,netapi32.lib)int wmain(int argc, wchar_t *argv[])//这里是个问题,我用BCB怎么也无法链接,说 [Linker Error] Unresolved external _main referenced from C:\PROGRAM FILES\BORLAND\CBUILDER5\LIB\C0X32.OBJ,我一直不知道怎么解决,谁有解决方案可要告诉我。{wchar_t *wtarget, *wfrom, *buffer;DWORD dwReturn;if(argc 4){printf(Usge: MsgSend Target From Message);return 0;}wtarget = argv[1];wfrom = argv[2];buffer = argv[3];dwReturn = NetMessageBufferSend(NULL, wtarget, wfrom, (LPBYTE)buffer, 2*lstrlen(buffer));//注意这里要对得出的长度乘2才是字节数,否则是字符数(一个Unicode字符占2字节)if(dwReturn == NERR_Success){printf(Send Success!);}else {printf(Error!);}return 0;}
??? 还有一个小问题,你知道怎么得到Unicode吗?用AnsiString的一些成员函数--WideChar打头的函数都是与Unicode相关的。
-*-*-PATCH-*-*-
??? 上面那个wmain的问题已经得到解答。直接用命令行bcc32,如下。
bcc32 -WU -WC netmsg.cpp
-WU 指定使用Unicode
-WC 指定为控制台应用程序
-*-*-PATCH-*-*-
文档评论(0)