Contributor: ANDY COOPER unit ProgIcon; {Please feel free to use these routines as you wish, provided you keep the comments with my name in} {Any comments or problems then contact me, Andy Cooper - 100622.1041@COMPUSERVE.COM} interface uses DdeMan; {First parameter is a ddeClientConv that has already been created on the calling form} function CreateProgManGroup(DDEClient : TDdeClientConv; strGroup : string) : Boolean; function CreateProgManItem(DDEClient : TDdeClientConv; strGroup, strItem, strFile : string) : Boolean; implementation function CreateProgManGroup(DDEClient : TDdeClientConv; strGroup : string) : Boolean; {By Andy Cooper - 100622.1041@COMPUSERVE.COM} var pstrCmd : array[0..255] of char; begin try StrPCopy (pstrCmd, Format('[CreateGroup(%s)]', [strGroup]) + #13#10); Result := DDEClient.ExecuteMacro(pstrCmd, False); except Result := False; end; {try} end; function CreateProgManItem(DDEClient : TDdeClientConv; strGroup, strItem, strFile : string) : Boolean; {By Andy Cooper - 100622.1041@COMPUSERVE.COM} var pstrCmd : array[0..255] of char; begin try StrPCopy (pstrCmd, Format('[ShowGroup(%s, 1)]', [strGroup]) + #13#10); DDEClient.ExecuteMacro(pstrCmd, False); StrPCopy (pstrCmd, Format('[ReplaceItem(%s)]', [strItem]) + #13#10); DDEClient.ExecuteMacro(pstrCmd, False); StrPCopy (pstrCmd, Format('[AddItem(%s,%s' + ',,)]', [strFile,strItem]) + #13#10); Result := DDEClient.ExecuteMacro(pstrCmd, False); StrPCopy (pstrCmd, Format('[ShowGroup(%s, 1)]', [strGroup]) + #13#10); DDEClient.ExecuteMacro(pstrCmd, False); except Result := False; end; {try} end; end.