DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: hfh9801
今日帖子: 0
在线用户: 4
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 bjdribllec ★☆☆☆☆ -
盒子活跃会员
2003/10/29 8:22:07
标题:
如何实现信使服务? 浏览:2477
加入我的收藏
楼主: net send 每次都要敲,刚显示出的信却在编程中的空格键给隐去,
能不能做个程序,简化发送,收集来信;
说白了,有没有一个或n个控件来实现?
----------------------------------------------
-
作者:
男 skertone (奇奇怪) ★☆☆☆☆ -
盒子活跃会员
2003/10/29 9:06:04
1楼: 好像可以用 mailslot 来实现 你搜搜 mailslot 相关应用实例看看
----------------------------------------------
按此在新窗口浏览图片 按此在新窗口浏览图片 按此在新窗口浏览图片
作者:
男 bjdribllec ( ) ★☆☆☆☆ -
盒子活跃会员
2003/10/29 10:24:53
2楼: 找到了,下载了,装上了,编程了,运行了。
不报错,也没动静。
CSZS_MAILSLOT附上了。
此帖子包含附件:bjdribllec_20031029102453.ZIP 大小:2,780B
----------------------------------------------
-
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2003/10/29 10:38:58
3楼: 倒,做这么难的东东,大哥你真是高水平啊,学习!
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 skertone (奇奇怪) ★☆☆☆☆ -
盒子活跃会员
2003/10/29 14:30:31
4楼: 不用找控件啊
Microsoft的WinPopup 与 net send 是使用mailslot: \\.\mailslot\messngr 来通讯的

 private
    FSHandle: HWND;
    FCHandle: HWND;
    { Private declarations }


procedure TForm1.Button1Click(Sender: TObject);  --开启接收的mailslot
var
  sSlotName: String;
begin
    sSlotName := '\\.\mailslot\messngr';
    FSHandle := CreateMailslot(
        pchar(sSlotName), // MailSlot 识别名称
        0, // 讯息长度的最大值,设为零表示不限
        MAILSLOT_WAIT_FOREVER, // read time-out
        nil); // 安全属性,先暂时采用预设值
    if FSHandle = INVALID_HANDLE_VALUE then
        ShowMessage('不行啊');
end;

procedure TForm1.Button2Click(Sender: TObject);   --手动读取实际用时用计时器就行了
  var
    NextSize: DWORD;
    MessageCount: DWORD;
    result: longbool;
    buffer: Pchar;
begin
    Result := GetMailslotInfo(Fshandle, nil, NextSize, @MessageCount, nil);
    if not Result or (NextSize = MAILSLOT_NO_MESSAGE) then
        Exit;
    // 如果还有资料 (MessageCount <> 0),逐一读出资料
    while Result and (MessageCount <> 0) do
    begin
        // 资料的长度
        Buffer := AllocMem(NextSize + 1);
        try
            // 读出资料
            FileRead(Fshandle, Buffer^, NextSize);
            Memo1.Lines.Add(buffer);
        finally
            FreeMem(Buffer, NextSize + 1);
        end;

        Result := GetMailslotInfo(Fshandle, nil, NextSize, @MessageCount, nil);
    end;
   
end;



procedure TForm1.Button4Click(Sender: TObject);  --创建写slot
var
  sSlotName: String;
begin
  sSlotName := '\\.\mailslot\messngr';
    FCHandle := CreateFile(pchar(sSlotName),
        GENERIC_WRITE, // Client 端对於 MailSlot 只能写入
        FILE_SHARE_READ, // 设定为可供分享读取
        Nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);

end;

procedure TForm1.Button5Click(Sender: TObject);  --写东东
begin
  FileWrite(Fchandle,'1234567890',10);
end;

WinPopup 的信息格是 
发送者名称#0
接叫者名称#0
信息内容#0

我对 #0没作什么处理,所以在测试中与WinPopup通讯时只能收到 发送者名称

但足以证明可以通讯,哪位有空改进一下 几十行代码就可写出WinPopup啦


----------------------------------------------
按此在新窗口浏览图片 按此在新窗口浏览图片 按此在新窗口浏览图片
作者:
男 bjdribllec ( ) ★☆☆☆☆ -
盒子活跃会员
2003/10/29 14:48:45
5楼: 全盘照抄,结果是:
此帖子包含附件:
JPEG 图像
大小:16.6K
----------------------------------------------
-
作者:
男 skertone (奇奇怪) ★☆☆☆☆ -
盒子活跃会员
2003/10/29 15:09:30
6楼: 如果你是 win98 则WinPopu已运行的话由于 mailslot已创建 所以你不能再创接收端

看你的图片应该是 Win2000 哪么你需要将你的 message 服务关掉否则不能创建接收端

但是你可以创发送端的

创一个: '\\*\mailslot\messngr' 的mailSlot

发送内容为 'XXXX' + #0 + 'XXXXX' + '#0' + 'kdfjksdjfkds'试试

应该能收到,不过是乱码,呵呵
----------------------------------------------
按此在新窗口浏览图片 按此在新窗口浏览图片 按此在新窗口浏览图片
作者:
男 bjdribllec ( ) ★☆☆☆☆ -
盒子活跃会员
2003/10/29 15:28:40
7楼: 没错,就是在2000下。
程序自身可以发出了也可接收,
但是 net send 送来的还是要跳出信使服务窗!

引用:‘需要将你的 message 服务关掉否则不能创建接收端
但是你可以创发送端的’

1.不知道在哪关掉;
2.net send 送来的还是要跳出信使服务窗,而'写东东'按钮不跳出来,为什么?
此帖子包含附件:
JPEG 图像
大小:17.5K
----------------------------------------------
-
作者:
男 skertone (奇奇怪) ★☆☆☆☆ -
盒子活跃会员
2003/10/29 15:38:29
8楼: 在win2000的管理,服务中可把信息服务停掉 我不是2000没法看

你从98下Copy一个WinPopup去 2000底下看能不能用,呵呵

对MailSlot的研究就到此啦,看看谁能把WinPopup 与 net Send 的

信息格式弄清楚。。
----------------------------------------------
按此在新窗口浏览图片 按此在新窗口浏览图片 按此在新窗口浏览图片
作者:
男 bjdribllec ( ) ★☆☆☆☆ -
盒子活跃会员
2003/10/29 15:42:36
9楼: 感谢skertone!
从:开始--设置--控制面板--管理工具--服务,把messenger关掉了,
net send 送出的东东如泥牛入海了。
再次感谢Skertone!
----------------------------------------------
-
作者:
男 pcc11051059 (人) ★☆☆☆☆ -
盒子活跃会员
2003/10/29 17:18:22
10楼: 好玩//!

----------------------------------------------
--_--
按此在新窗口浏览图片
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行99.60938毫秒 RSS