首页  编辑  

用DDE创建程序组和快捷方式

Tags: /超级猛料/COM、ActiveX,DDE/DDE/   Date Created:
用DDE创建程序组和快捷方式
procedure TMainForm.CreateWinGroup(Sender: TObject);
var
 Name: string;
 Name1: string;
 Macro: string;
 Macro1: string;
 Cmd, Cmd1: array[0..255] of Char;
begin
{destDir is the dos directory to hold the YourFile.Ext'}
   Name := 'GroupName';
   Name1 := destDir + 'YourFile.Ext, FileName_in_Group  ';
   Macro := Format('[CreateGroup(%s)]', [Name]) + #13#10;
   Macro1 :=Format('[Additem(%s)]',[Name1]) +#13#10;
   StrPCopy (Cmd, Macro);
   StrPCopy (cmd1, Macro1);
   DDEClient.OpenLink;
   if not DDEClient.ExecuteMacro(Cmd, False) then
     MessageDlg('Unable to create group '+Name,mtInformation, [mbOK], 0)
   else
   begin
     DDEClient.ExecuteMacro(Cmd1, False);
   end;
   DDEClient.CloseLink;
end;

很久以前的了,一直没有收录,今天收录进来了。
要产生程序组, 常用的方法是与程序管理员进行 DDE 对话,呼叫程式管理员事先预备好
的宏集, 关於这些, 以下有一个例子您可以参考看看:
步骤:
1. File | New Project
2. 在 Form 中安置一个 TDDEClientConv 控件
3. 对於 DdeClientConv1, 在 Object Inspector 中点一下 DdeService 这个属性,
  然后点一下在其右方'...'的按钮, 然后在 DdeService 这栏填入 ProgMan,在
  DdeTopic 这栏填入 Progman 。
4. 对于 DdeClientConv1 将 ConnectMode 设为 ddeManual
5. 在 Form1 中安排一个 TButton
6. 在 Button1 的 OnClick 事件:
  procedure TForm1.Button1Click(Sender: TObject);
  var
     sMacro: String;
     szMacro: Array[0..254] of Char;
     sGroupDesc, sGroupName: String;
     sProgDesc: String;
     sProgIcon: String;
  begin
     // 打开对话通路
     if not DdeClientConv1.OpenLink then begin
         ShowMessage('无法建立 DDE 连结');
         Exit;
     end;
     // 建立组群
     sGroupDesc := '纯测试的 Group';
     sGroupName := 'Test';
     // 组成宏指令
     sMacro := '[CreateGroup(' + sGroupDesc + ',' + sGroupName + ')]';
     StrPCopy(szMacro, sMacro);                   // 转成 Null-Term. 字串
     DdeClientConv1.ExecuteMacro(szMacro, False); // 执行宏指令
     // 建立 Icon 图像
     sProgIcon := 'c:\windows\notepad.exe';
     sProgDesc := '记事本';
     sMacro := '[AddItem(' + sProgIcon + ',' + sProgDesc + ')]';
     StrPCopy(szMacro, sMacro);                   // 转成 Null-Term. 字串
     DdeClientConv1.ExecuteMacro(szMacro, False);
     // 关闭 DDE 对话
     DdeClientConv1.CloseLink;
  end;
7. 保存后, 执行看看吧!