[Back to DELPHI SWAG index]  [Back to Main SWAG index]  [Original]


{Here is what's left from what I got from borland some time ago.
The DDEClient is a component you drop on the form (System, DdeClientItem). }


Var Macro : String;
Var Cmd: array[0..255] of Char;
NewPrg,Desc : String;
Begin
    { Create the group, does nothing if it existst } 
    Name := 'StartUp';
    Macro := Format('[CreateGroup(%s)]', [Name]) + #13#10;
    StrPCopy (Cmd, Macro);
    DDEClient.OpenLink;
    if not DDEClient.ExecuteMacro(Cmd, False) then
      MessageDlg(<ErrorMsg>, mtInformation, [mbOK], 0);

    { Then you add you program }
    NewPrg := 'C:\HELLO.EXE';      {Full path of the program you}
    Desc := 'Say Hello';           {Description that appears under the icon|    

    Macro := '[AddItem('+NewPrg+','+Desc+')]'+ #13#10;
    StrPCopy (Cmd, Macro);
    if not f1_.DDEClient.ExecuteMacro(Cmd, False) then
      MessageDlg(<errorMsg>,mtInformation, [mbOK], 0);

    { To make sure the group is saved }

    StrPCopy (Cmd,'[ShowGroup(nonexist,1)]');
    DDEClient.ExecuteMacro(Cmd, False);


     { Now... this part doesn't work and I don't know why }   
     { Anybody who knows why is welcome }

    StrPCopy (Cmd,'[reload()]');
    DDEClient.ExecuteMacro(Cmd, False);


     { and close the link }
    DDEClient.CloseLink;
End;

A procedure to get all groups from the program manager using a DDEclientconv:
{This example needs a listbox called AllGroups}

procedure GetGroups(Sender: TObject);
var
Thedata: pchar; 	{pchar that holds the groups}
dat: char;		{used to process each group}
charcount: word;		
 Theitem,theline:string;

begin
{get allgroups items}
charcount:=0;
TheData:= DDEClientConv2.RequestData('Groups');
theline:='';
repeat
       application.processmessages;
       dat:=Thedata[charcount];{get character from the Thedata}
       if (dat=chr(10)) {or (dat=chr(13))} then
          begin
            	while Pos(char(10), Theline) > 0 do
            		delete(Theline,pos(char(10),Theline),1);
            	while Pos(char(13), Theline) > 0 do
            		delete(Theline,pos(char(13),Theline),1);
          	If theline='' then continue;
          	allgroups.items.add(theline); {Allgroups is a LISTBOX}
          	theline:='';
          end;
       Theline:=theline+dat;
       inc(charcount);
until charcount>=strlen(Thedata);
strdispose(Thedata);
end;

[Back to DELPHI SWAG index]  [Back to Main SWAG index]  [Original]