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

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


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26785
Пользователь №: 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 h = ffi.C.FindWindowExA(nil, nil, class or nil, name or nil)
    if tonumber(ffi.cast('int', h)) > 0 then
        if name_child or class_child then
            h = ffi.C.FindWindowExA(h, nil, class_child or nil, name_child or nil)
        end
        return tonumber(ffi.cast('int', h))
    end
    return nil
end

-- Найти окно блокнота
log 'clear' log 'mode compact'
local handle = _FindWindow(nil, 'Notepad', nil, nil)   -- имя окна, класс окна, имя дочернего окна, класс дочернего окна
if handle then
    log (handle)
else
    log ('Окно не найдено')
end

-- Найти окно редактора блокнота
local handle = _FindWindow(nil, 'Notepad', nil, 'Edit')  -- имя окна, класс окна, имя дочернего окна, класс дочернего окна
if handle then
    log (handle)
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
фонарик   Да! Работает! :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
cirus   Всё работает. --lua local ffi = require("f...   26.9.2021, 23:27
фонарик   Всё работает.Даа! еслиlocal h = require'pr...   26.9.2021, 23:32


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

 

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