获得桌面图标所在窗口--兼容Win7

Win7父窗口类名是 WorkerW,但是WorkerW有多个


function Find_Window(XParent: HWND; XFromIndex: Integer; const XClassNames: array of string): HWND;

var

  LName: string;

  LChild: HWND;

begin

  Result := XParent;

  if (XFromIndex < Low(XClassNames)) or (XFromIndex > High(XClassNames)) then

  begin

    Exit;

  end;


  LName := XClassNames[XFromIndex];

  LChild := 0;

  while True do

  begin

    LChild := FindWindowEx(XParent, LChild, PChar(LName), nil);

    if LChild = 0 then

    begin

      Result := 0;

      Exit;

    end;

    Result := Find_Window(LChild, XFromIndex + 1, XClassNames);

    if Result <> 0 then

      Exit;

  end;

end;


function FindDesktopIconWindow(var RetParent, RetChild: HWND): Boolean;

var

  LDesktop: HWND;

begin

  LDesktop := GetDesktopWindow;

  RetChild := Find_Window(LDesktop, 0, ['Progman', 'SHELLDLL_DefView', 'SysListView32']);

  if RetChild = 0 then

  begin

    RetChild := Find_Window(LDesktop, 0, ['WorkerW', 'SHELLDLL_DefView', 'SysListView32']);

  end;


  if RetChild <> 0 then

  begin

    RetParent := GetParent(GetParent(RetChild));

  end;


  Result := (RetChild <> 0) and (RetParent <> 0) and (RetParent <> LDesktop); 

end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值