[Delphi] DDE でブラウザをクローズする

DDEを使ってブラウザにクローズ命令を送ります。
(このプロシージャを作成するフォームには「DDEMan」をusesに追加する必要があります。)
SendMessageでWM_CLOSEを送っても終了します。

procedure Tform1.CloseBrowser(BrowserName: String);
var
  DDE:TDDEClientConv;
begin
  DDE := TDDEClientConv.Create(Self);
  try
    // コメントブロック内は最後のブラウザのインスタンスのみ終了させる場合に
    // 使用します。この場合、下側のwhile側をコメントアウトしてください。
{
    if DDE.SetLink(BrowserName,'WWW_Exit') then
    begin
      if DDE.PokeData('anything' ,'anything') then
      begin
        ShowMessage('Browser closed');  // この行は特に必要ありません
      end;
    end;
}
    while DDE.SetLink(BrowserName,'WWW_Exit') do
    begin
      if DDE.PokeData('anything' ,'anything') then
      begin
        ShowMessage('Browser was closed'); // この行は特に必要ありません
      end;
    end;
  finally
    DDE.Free;
  end;
end;

この関数をコールするには、プラウダがインターネットエクスプローラの場合には「IExplore」を Netscape Communicator 3.x の場合には「Netscape」、4.0 以降の場合には「NSShell」を引数に与えてやる必要があります。

procedure TForm1.Button1Click(Sender: TObject);
begin
  CloseBrowser('IExplore');
end;

コメント (0件)


くろねこ研究所
https://www.blackcat.xyz/article.php/ProgramingFAQ_del0019