Как получить список открытых окон (Делфи)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by heJiZzZ, 5 Feb 2013.

  1. heJiZzZ

    heJiZzZ Member

    Joined:
    1 Jun 2009
    Messages:
    40
    Likes Received:
    18
    Reputations:
    10
    САБЖ. Для вин хп нарыл такой ход:
    Code:
    procedure GetTitleList(sl: TStringList);
    var wnd: hwnd;
        buff: array [0..127] of char;
    begin
    sl.clear;
    wnd := GetWindow(Application.handle, gw_hwndfirst);
    while wnd <> 0 do
    begin // Не показываем:
    if (wnd <> Application.Handle) // Собственное окно
    and IsWindowVisible(wnd) // Невидимые окна
    and (GetWindow(wnd, gw_owner) = 0) // Дочерние окна
    and (GetWindowText(wnd, buff, SizeOf(buff)) <> 0) then
    begin
    GetWindowText(wnd, buff, SizeOf(buff));
    sl.Add(StrPas(buff));
    end;
    wnd := GetWindow(wnd, gw_hwndnext);
    end;
    end;
    Но на 7ке отказывается работать. Нужно какое то единое решение. (Или может можно это через cmd сделать >file.txt , а потом оттуда спарсить.) Вобщем подскажите что нибудь


    ________
    Update. Код оказался рабочим на вин7, это мои кривые руки виноваты :(
     
    #1 heJiZzZ, 5 Feb 2013
    Last edited: 5 Feb 2013