-->

如何从与删除文件夹干扰保持Windows资源管理器?(How do I keep Windows E

2019-10-16 18:48发布

我有一个删除一个文件夹,一切都在它的例程。 删除所有文件后,它的最后一件事是:

if not Windows.RemoveDirectory(pname) then
  raise EInOutError.Create(SysErrorMessage(GetLastError));

不幸的是,我倾向于从该得到一个错误,如果我在Windows资源管理器打开的窗口中显示的文件夹。 该错误表示该文件夹不是空的,这是不正确的。 有什么办法来覆盖这一点,或许迫使窗口关闭?

如果它的确与众不同,我在Vista家庭高级版64。

Answer 1:

事实上,它甚至比这更普遍。 你永远不能删除任何程序,而不仅仅是浏览器的当前目录。

你可以写的东西追杀Explorer窗口在感兴趣的目录但什么其他程序指点?



Answer 2:

下面的代码显示了关窗的一般方法。 这个例子是Internet Explorer; 你将不得不调整它有点对Windows资源管理器..

program Sample;

function CloseIEs(Wnd : HWnd; Form : TForm1) : Boolean; export; stdcall;
var
  sCap : array [0..255] of char;
begin
  GetWindowText (Wnd, sCap, sizeof(sCap));
  if pos ('Microsoft Internet Explorer', sCap) > 0 then
  begin
    PostMessage (Wnd, WM_CLOSE, 0, 0);
  end
  else
  begin
    // check by class name!
    GetClassName (Wnd, sCap, sizeof(sCap));
    if sCap = 'IEFrame' then
      PostMessage (Wnd, WM_CLOSE, 0, 0);
  end;

  CloseIEs := true; { next window, please }
end;

begin
  // close all hidden instances
  EnumWindows(@CloseIEs, 0);
end.


Answer 3:

看到这个例子: http://blogs.msdn.com/oldnewthing/archive/2004/07/20/188696.aspx这里是在Delphi相同的代码: http://translate.google.com/translate?prev= HP&HL = RU&JS = N&U = HTTP://transl-gunsmoker.blogspot.com/2009/05/blog-post_7575.html&sl=ru&tl=en&history_state0=

您可以通过使用这个例子列举所有窗口,并找到资源管理器的窗口,这是你的文件夹打开。 然后,你可以通过发送WM_CLOSE消息关闭它。



文章来源: How do I keep Windows Explorer from interfering with deleting a folder?