Здравствуйте, гость ( Вход | Регистрация )

> Функция ShowWindow, Срабатывает не всегда ShowWindow #win TOP
фонарик
сообщение 26.8.2021, 12:03
Сообщение #1


****

Apprentice
Сообщений: 145
Регистрация: 23.11.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 14.305



Подскажите пожалуйста, как можно решить проблему. Есть окошки игры много штук, все одинаковые, друг поверх друга. Скрипт периодически выводит поочерёдно эти окошки поверх экрана чтобы проверить как там дела. Но иногда рабочее окошко не выводится на передний план, вместо этого окошко просто моргает другим цветом на панели задач (IMG:style_emoticons/default/sad.gif) Повторные попытки повторять одну и ту же команду к успеху не приводят, вместо передвижения окошка на передний план оно моргает на панели задач, так никуда и не передвигаясь.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
cirus
сообщение 26.9.2021, 20:50
Сообщение #2


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26802
Пользователь №: 16.971
Возраст: 29



Цитата
как получить массив с этими окнами?

Поиск окон
Код
--lua
local ffi = require("ffi")
ffi.cdef[[
    typedef const char *LPCSTR;
    struct HWND__ { int unused; }; typedef struct HWND__ *HWND;
    HWND FindWindowExA (HWND hWndParent, HWND hWndChildAfter, LPCSTR lpszClass, LPCSTR lpszWindow);
]]

function _FindWindow(name, class, name_child, class_child)
    local ListWindow = {}
    local h = ffi.C.FindWindowExA(nil, nil, class or nil, name or nil)
    while tonumber(ffi.cast('int', h)) > 0 do
        local child = nil
        if name_child or class_child then
            child = ffi.C.FindWindowExA(h, nil, class_child or nil, name_child or nil)
        end
        if child then
            ListWindow[#ListWindow+1] = tonumber(ffi.cast('int', child))
        else
            ListWindow[#ListWindow+1] = tonumber(ffi.cast('int', h))
        end
        h = ffi.C.FindWindowExA(nil, h, class or nil, name or nil)
    end

    if #ListWindow > 0 then
        return ListWindow
    end
    return nil
end

-- Найти окна всех блокнотов
log 'clear' log 'mode compact'
local handle = _FindWindow(nil, 'Notepad', nil, nil)   -- имя окна, класс окна, имя дочернего окна, класс дочернего окна
if handle then
    log ("Найдено окон: " .. tostring(#handle))
    log (table.concat(handle, '\r\n'))
else
    log ('Окно не найдено')
end

-- Найти окно редактора всех блокнотов
local handle = _FindWindow(nil, 'Notepad', nil, 'Edit')  -- имя окна, класс окна, имя дочернего окна, класс дочернего окна
if handle then
    log ("Найдено окон: " .. tostring(#handle))
    log (table.concat(handle, '\r\n'))
else
    log ('Окно не найдено')
end
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
фонарик   Функция ShowWindow   26.8.2021, 12:03
BlackBot   я так работаю с окнами игры log clear //чистим ло...   26.8.2021, 12:15
Madeus   Может окно зависло "не отвечает" в диспе...   26.8.2021, 16:57
фонарик   Окошки все работают, вручную можно переключить на ...   26.8.2021, 20:35
cirus   Да. Можно использовать SetForegroundWindow. --lua...   27.8.2021, 1:43
sutra   У меня в своё время была точно такая же проблема. ...   27.8.2021, 12:01
фонарик   sutra, всё верно, 1 в 1 как у меня описали проблем...   28.8.2021, 11:24
31ost   Подскажите пожалуйста, как можно решить проблему....   1.9.2021, 19:55
фонарик   Товарищ cirus, а есть возможность вашим методом на...   26.9.2021, 19:12
cirus   --lua local ffi = require("ffi") ...   26.9.2021, 19:43
фонарик   Да! Работает! :yahoo: Но возникла пробле...   26.9.2021, 20:14
фонарик   cirus, вы просто волшебник, как хорошо что такие р...   26.9.2021, 22:07
фонарик   Опять незадача: а как теперь воспользоваться вашим...   26.9.2021, 22:46
cirus   Убрать из скрипта эти строки: typedef const char *...   26.9.2021, 23:07
фонарик   Удалив эти 2 строки, получается другая ошибка :( Н...   26.9.2021, 23:23
cirus   Всё работает. --lua local ffi = require("f...   26.9.2021, 23:27
фонарик   Всё работает.Даа! еслиlocal h = require'pr...   26.9.2021, 23:32


Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 28.5.2024, 15:02
Designed by Nickostyle