procedure TDdeSrvrFormdoMacro(Sender: TObject;Msg: TStrings)
var
Cmd: String;
i: Integer;
begin
Cmd := ;
if MsgCount = then Exit;
for I := to MsgCount do
begin
Cmd := MsgStrings[i];
if UpperCase(Cmd) = COPYDDE then
DDETestItemCopyToClipboard
else if UpperCase(Cmd) = CLEAR then
Memotext: =
else if UpperCase(Cmd) = WS_NORMAL then
WindowState := wsNormal
else if UpperCase(Cmd) = WS_MINIMIZED then
WindowState := wsMinimized
else if UpperCase(Cmd) = WS_MAXIMIZED then
WindowState := wsMaximized
else
MessageDlg(Invalid CommandmtWarning[mbOK])
end;
end;
下面的DDE客户程序主要是为了验证上面的DDE服务器程序而设计的但同时也提供了一个DDE客户程序设计的完整实例
程序把接收到的DDE数据保存在一个TMemo类部件DDEDat中而欲发送给服务器的数据和宏指令在另一个TMemo类部件PokeDat中输入两个按钮PokeBtnExecuteBtn用于发送数据和宏指令两个菜单项File|New Link和Edit|Paste Link用于根据用户的输入建立新联接和从剪贴板上粘贴DDE联接
DDE联接的建立通过调用SetLink方法实现
建立新联接的实现代码如下
procedure TFormDdoNewLink(Sender: TObject)
begin
DDEClientSetLink (AppNameText TopicNameText)
DDEClientItemDdeConv := DDEClient;
DDEClientItemDDEItem := ItemNameText;
end;
通过从剪贴板粘贴联接信息来建立联接的实现代码如下
procedure TFormDEditClick(Sender: TObject)
var
Service Topic Item : String;
begin
PasteLinkEnabled := GetPasteLinkInfo (Service Topic Item)
end;
procedure TFormDdoPasteLink(Sender: TObject)
var
Service Topic Item : String;
begin
if GetPasteLinkInfo (Service Topic Item) then
begin
AppNameText := Service;
TopicNameText := Topic;
ItemNameText := Item;
DDEClientSetLink (Service Topic)
DDEClientItemDdeConv := DDEClient;
DDEClientItemDdeItem := ItemNameText;
end;
end;
在DDEClientItem的OnChange事件处理过程中把接收到的事件保存在DDEDat中
procedure TFormDDDEClientItemChange(Sender: TObject)
begin
DDEDatLines := DDEClientItemLines;
end;
数据发送的实现代码如下
procedure TFormDdoPoke (Sender: TObject)
var
DDECli : TDDEClientConv;
begin
DDECli := DDEClientItemDdeConv;
if DdeCli <> nil then
DDECliPokeDataLines (DDEClientItemDDEItem PokeDatLines)
end;
宏指令发送的实现代码如下
procedure TFormDdoMacro (Sender: TObject)
var
DDECli: TDDEClientConv;
Cmd: String;
begin
DDECli := DDEClientItemDdeConv;
if DDECli <> nil then
begin
Cmd := PokeDatText + ##;
DDECliExecuteMacroLines (PokeDatLines True)
end;
end;
运行以上两个程序建立DDE联接经测试数据传输数据发送和宏指令的发送与执行都达到预期要求
小结
剪贴板和DDE是Windows下数据通信的两种方法Delphi以简便友好的方式实现了相应的功能为用户编程提供了方便一般说来剪贴板多用于静态数据传输而DDE用于动态数据交换控制其它程序运行等场合这些内容对于多用户环境下的程序开发是很重要的
返回目录DELPHI基础教程
编辑推荐
Java程序设计培训视频教程
JEE高级框架实战培训视频教程
Visual C++音频/视频技术开发与实战
Oracle索引技术
ORACLEG数据库开发优化指南
Java程序性能优化让你的Java程序更快更稳定
C嵌入式编程设计模式
Android游戏开发实践指南
[] [] [] []