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

> Функция 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, 23:27
Сообщение #2


**********

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



Всё работает.
код
Код
--lua
local ffi = require("ffi")
local h = require'prompt'
ffi.cdef[[
    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

-- установить позицию окна
h.promptposX = 500
h.promptposY = 300
-- вывод окна с вариантами выбора
local result = h.lua_prompt('первый', 'второй выбор', 'третий')
hint (result)
if result == 0 then
    log('Ничего не выбрано')
end
if result == 1 then
    log('Выбран пункт 1')
end
if result == 2 then
    log('Выбран пункт 2')
end
if result == 3 then
    log('Выбран пункт 3')
end
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
фонарик
сообщение 26.9.2021, 23:32
Сообщение #3


****

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



Цитата(cirus @ 26.9.2021, 23:27) *
Всё работает.
Даа! если
Код
local h = require'prompt'
перенести наверх как у вас в примере то всё работает! Товарищ cirus, большое вам спасибо за помощь, ваши знания и советами, что поделились (IMG:style_emoticons/default/smile.gif)
Пользователь в офлайне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   --lua local ffi = require("ffi") ...   26.9.2021, 20:50
фонарик   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


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

 

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