Розгорнути чуже вікно
Користуюсь наступним: ShowWindow(hwnd, SW_SHOW); SetForegroundWindow(hwnd); Якщо вікно не згорнуто в панель завдань - працює скільки завгодно раз (як і належить переміщається на передній план). Але варто згорнути - розгорне його одного разу, потім його можна тільки закрити, згорнути не виходить. Чи залежить це від ОС? Якщо так, то як створити універсальний додаток, тобто. працездатне від W98 до XP?
спробуй докопатися до "головного" вікна(для Delphi додатків - це Application): var _wnd, wnd: HWND; beginwnd:= hwnd; _wnd:= GetParent(wnd); while(_wnd <> 0)do beginwnd:= _wnd; _wnd:= GetParent(wnd); end; ShowWindow(wnd, SW_SHOW); SetForegroundWindow(hwnd); . - у нього прапор Visible не виставляється (при показі дочірнього вікна минаючи головне), тому згорнути більше не виходить.
hwnd := FindWindow("TfrmMain", "My programm name");
//debug window - hwnd = 8601822
_hwnd:= GetParent(hwnd); //debug window - _hwnd = 0
Виходить, що головніше за вікно, ніж це просто немає.
ЗИ. Підняття вікна на передній план постійно блокується від версії до версії. SetForegroundWindow далеко не завжди допомагає в NT.
> hwnd := FindWindow("TfrmMain", "My programm name"); .. > _hwnd:= GetParent(hwnd);
Application для Form виступає дещо в іншому відношенні, тобто, AppWnd := GetWindowLong(hwnd, GWL_OWNER)
Все запрацювало, тільки не з GWL_OWNER, а GWL_HWNDPARENT. Thank"s
Млин, звичайно, мав на увазі саме GWL_HWNDPARENT, бо першого в природі не існує. Sorry.
Скажіть, що відбувається з додатком при натисканні на "згорнути всі вікна" ?