如何从桌面应用程序关闭浏览器的当前选项卡?

时间:2012-12-06 19:02:03

标签: delphi winapi exit tabbed-browsing

我正在开发一个系统,该系统包含在桌面(Windows)中运行的程序。

每分钟检测活动程序是否为浏览器,在这种情况下检查活动标签的网址是否在“黑名单”中

在这种情况下,我想关闭浏览器的当前选项卡。我现在正在做的是杀死浏览器进程,这意味着黑名单中不包含网址的标签也被关闭了。

为了检测有效标签的网址,我使用How to get the url from Chrome using delphi

中的解决方案

我正在使用Delphi 7,但任何语言的解决方案都会受到欢迎。

2 个答案:

答案 0 :(得分:0)

使用以下过程:

  • 开始录制宏
  • 打开浏览器
  • 按键盘快捷键关闭选项卡
  • 停止录制宏
  • 创建宏的快捷方式

答案 1 :(得分:0)

我正在使用此方法关闭浏览器标签。如您所知,Chrome和Iexplorer对每个标签使用不同的过程。我找到进程名称并杀死它们。在下面的代码中,将使用chrome或iexplore或者您想要的内容中的所有进程终止。别忘了在你的使用线上添加winapi.tlhelp32单元。

function KillTask(ExeFileName: string): Integer;
const
  PROCESS_TERMINATE = $0001;
var
  ContinueLoop: BOOL;
  FSnapshotHandle: THandle;
  FProcessEntry32: TProcessEntry32;
begin
  Result := 0;
  FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
  ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
  // find all process and kill them all one by one    
  while Integer(ContinueLoop) <> 0 do
  begin
    if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
      UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
      UpperCase(ExeFileName))) then
      Result := Integer(TerminateProcess(
                        OpenProcess(PROCESS_TERMINATE,
                                    BOOL(0),
                                    FProcessEntry32.th32ProcessID),
                                    0));
     ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
  end;
  CloseHandle(FSnapshotHandle);
end;