Delphiで小さな実行ファイルを作ろう

このエントリーをはてなブックマークに追加
381
DDEで他のアプリに命令を送る方法判りました
 DDEって昔の技術みたいで殆ど解説が無いので結構苦労しました
DDEsendExec(相手のアプリ名 , トピック名 , メッセージ ) と使います
トピック名は エクスプローラのファイルタイプの設定で編集にすると見えるアレです


function DDeCallBack(CallType, Fmt: UINT; Conv: HConv; hsz1, hsz2: HSZ;
  Data: HDDEData; Data1, Data2: DWORD): HDDEData stdcall;
begin  result:=0;
end;

function DDEsendExec(const AppName,Topic,Cmd:string):boolean;
var DDE: Longint;
var Err: Longint;
var hszService,hszTopic:HSZ;
var Conv:HConv;
begin
DDE:=0;
Err:=DdeInitialize(DDE,DDeCallback, APPCMD_CLIENTONLY , 0);
Result:= 0=Err;
if not Result then begin exit;
end;
  hszService := DdeCreateStringHandle(DDE,PChar( AppName), CP_WINANSI);
  hszTopic  := DdeCreateStringHandle(DDE, PChar(Topic) , CP_WINANSI);

 try
  Conv := DdeConnect(DDE, hszService, hszTopic, nil);
   Result:= Conv <> 0 ;
  if not Result then exit;
  try
  err := DdeClientTransaction(PChar(Cmd),Length(Cmd)+1 ,Conv ,0, 0,XTYP_EXECUTE , TIMEOUT_ASYNC, nil);
  Result:=err<>0;
  finally
   DdeDisconnect(Conv);
  end;
 finally
  DdeFreeStringHandle(DDE, hszTopic );
  DdeFreeStringHandle(DDE, hszService);
  DdeUninitialize(DDE);
 end;
end;