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;