请选择 进入手机版 | 继续访问电脑版

柏楚电子

查看: 2919|回复: 0

一种通过外部程序控制CypCut打开文件的方法 [复制链接]

Rank: 9Rank: 9Rank: 9

发表于 2017-6-15 15:07:24 |显示全部楼层
CypCut支持以Windows邮槽方式接受打开指定文件的指令。

方法:
    1. 使用CreateFile打开指向CypCut邮槽的句柄:
CreateFile('\\.\mailslot\Friendess\CypCut', GENERIC_WRITE, FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0)
    2. 使用WriteFile向邮槽写入数据,数据格式为
{OpenFile:{FileName: "%s"}}
其中 %s 为文件路径。譬如要打开 D:\花.dxf 的文件就发送数据
{OpenFile:{FileName: "D:\花.dxf"}}

Pascal示例代码
program MailCypCut;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  Dialogs,
  Windows;

var
  hSlot: Integer;
  Bytes: TBytes;
  nBytesWritten: Cardinal;
  cmdStr: string;

begin
  try
    with TOpenDialog.Create(nil) do
    try
      if Execute then
      begin
        hSlot := CreateFile('\\.\mailslot\Friendess\CypCut', GENERIC_WRITE,
          FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0);

        if hSlot <= 0 then
          RaiseLastOsError;

        cmdStr := Format('{OpenFile:{FileName: "%s"}}', [Filename]);
        Bytes := TEncoding.UTF8.GetBytes(cmdStr);
        if not WriteFile(hSlot, Bytes[0], Length(Bytes), nBytesWritten, nil) then
          RaiseLastOsError;
      end;
    finally
      Free;
    end;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.
注意:  
1. 需要管理员权限;  
2. CypCut正在运行并且处于停止状态;  

附件: CypCutOpenFileDemo.zip (365 KB, 下载次数: 21)

使用道具 举报

关于柏楚|support(at)fscut.com|柏楚电子 ( 沪公网安备 31011202003900号 沪ICP备14033040号-1 )

GMT+8, 2018-6-19 16:09 , Processed in 0.007583 second(s), 14 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部