提示:使用DDE!
在帮助中找一找!网上也有很多关于使用DDE修改开始菜单的文章。
去找找!记住是DDE(动态数据交换)!!
在帮助中找一找!网上也有很多关于使用DDE修改开始菜单的文章。
去找找!记住是DDE(动态数据交换)!!
解决方案 »
- 从文本文件读入的按钮名称怎么写单击事件?
- 怎么实现bpl各form间共用一个数据库模块
- 如何控制任务栏窗口按钮
- 过年喽,祝愿所有Delphi的xdjm在2004年大展宏图!!!!!!!!!!!
- Sybase的浮点数与Numeric类型之间隐式转换的问题。急
- 给个思路!表的例可以动态的改变!应该怎么作??!!
- 控制光驱开关的简短代码
- 用什么函数可以使一个数除一个数的得数保留两位小数(如:1/3=0.33)
- 一个很严重的问题
- delphi 的隱藏問題....
- 如何往DHTMLEDIT里添加FLASH 动画呢 (可以调整大小,文件名属性$^^&$%^#%^^@#%#$@%@#%$#%@$#@$!!#@!#!#!@#$#!!!!!!@$@!#!
- 爱好星际的朋友请到这边签个名
麻烦你多说一点好吗?
程序管理器提供了应用程序的DDE接口命令字符串,应用程序利用这些命令字符串可以实现以下的功能:
1.创建程序组
命令格式为:
CreateGroup(程序组名[,程序组所在的路径])
程序组不存在时进行创建;如程序组存在则按照指定的路径激活。
2.删除程序组
命令格式为:
DeleteGroup(程序组名)
3.显示程序组
命令格式为;
ShowGroup(程序组名,显示标志)
显示标志用于控制程序组在程序管理器中以极大、极小或正常方式显示。
4.重新装入程序组
命令格式为:
ReLoadGroup(程序组名)
该命令使程序管理器先删除而后再重新装入一个已有的程序组。
5.向程序组中添加程序项
命令格式为:
AddItem(命令行[,描述[,图标路径[,图标序号[,图标横坐标,图标纵坐标[,工作区目录[,热键[,是否最小化显示标志]]]]]]])
命令行控制程序项的执行,可包括路径、参数等。其它参数分别对应在程序管理器中添加一个程序项时需要设置的参数和选项。它们都有缺省设置,因而是可选的。
6.替换程序组中的程序项
命令格式为:
ReplaceItem(程序项名)
该命令删除一个程序项,并将所删除程序项的位置记录下来,以后通过AddItem在这个所记录的位置增加新项目。
7.从程序组中删除程序项
命令格式为:
DeleteItem(程序项名)
从当前活动程序组中删除一个程序项。
8.关闭程序管理器
命令格式为:
ExitProgram(是否保存程序组信息标志)
DDEClientConv在设计时和程序管理器建立一个DDE会话,其中DDE服务器和DDE主题 都为PROGMAN。联接模式ConnectMode设置为ddeManual。
我们把只有一个字符串参数的命令发送情况抽象出来,形成下面的SendMacro函数。
function TForm1.SendMacro(Name: String;Command: String): Boolean;
var
Macro: String;
Cmd: array[0..255] of Char;
begin
Result := True;
if Name <> '' then
begin
Macro := Format('['+Command+'(%s)]', [Name]) + #13#10;
StrPCopy (Cmd, Macro);
DDEClient.OpenLink;
if not DDEClient.ExecuteMacro(Cmd, False) then
Result := False;
DDEClient.CloseLink;
end;
end;
过程首先利用Format函数形成宏字符串:
Macro := Format('['+Command+'(%s)]', [Name]) + #13#10;
而后把Pascal类型的字符串拷贝到一个程序管理器可接受的PChar类型字符串中。
DDE联接采用人工模式。首先调用OpenLink方法。而后调用ExecuteMacro方法发送命令,如失败则返回False。最后用CloseLink关闭联接。
三个按钮CreateButton、AddButton、DeleteButton分别用于创建程序组、添加程序项、删除程序组。它们的程序实现大同小异,如下所示。
(只给你添加程序项的例子,替换改为ReplaceItem及可) procedure TForm1.AddButtonClick(Sender: TObject);
var
Name: String;
begin
Name := InputBox('Input Box','Input Application full_Path name','');
if Name = '' then
MessageDlg('Application name can not be blank.', mtError, [mbOK], 0)
else
if SendMacro(Name,'AddItem') = False then
MessageDlg('Unable to Add Item.', mtInformation, [mbOK], 0);
end;
当然dde、com接口也行