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

 
Ответить в эту темуОткрыть новую тему
> Изменить прозрачность окна, Готовый скрипт
cirus
сообщение 3.4.2020, 0:10
Сообщение #1


**********

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



Пример как изменить прозрачность окна. Пилот 2.41. Запускать от админа.
Код
--lua
local ffi = require("ffi")
local user = ffi.load('User32.dll')
ffi.cdef[[
struct HWND__ { int unused; }; typedef struct HWND__ *HWND;
bool SetLayeredWindowAttributes(HWND hwnd, unsigned long crKey, unsigned char bAlpha, unsigned long dwFlags);
long GetWindowLongA(HWND hWnd, int nIndex);
long SetWindowLongA(HWND hWnd, int nIndex, long dwNewLong);
]]
local LWA_ALPHA, GWL_EXSTYLE, WS_EX_LAYERED = 2, -20, 524288
function transparency(hWnd, transp)
    local h = ffi.cast('HWND', hWnd)
    user.SetWindowLongA(h, GWL_EXSTYLE, bit.bor(user.GetWindowLongA(h, GWL_EXSTYLE), WS_EX_LAYERED))
    user.SetLayeredWindowAttributes(h, 0, transp, LWA_ALPHA)
end

-- указать нужное окно Ctrl+A
transparency(workwindow(), 120)  -- передавать хендл окна и уровень прозрачности от 0 до 255
wait (3000)
transparency(workwindow(), 255)

Прозрачность окна не влияет на клики left и нажатия send, также будут работать findimage/findcolor с типом поиска workwindow. Т. е. можно полностью скрыть окно, при этом можно искать картинки, делать клики и прочее.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Fors1k
сообщение 3.4.2020, 1:39
Сообщение #2


*****

Journeyman
Сообщений: 497
Регистрация: 19.12.2017
Группа: Пользователи
Наличность: 2397
Пользователь №: 18.746



Цитата(cirus @ 3.4.2020, 0:10) *

Можно полностью скрыть окно, при этом можно искать картинки, делать клики и прочее.

Затестил файндколором - все работает (IMG:https://forums.overclockers.ru/images/smilies/good3.gif)
Проверил left - тоже работает, но только пилотовский. Left на lua почему-то не работает ни в видимом ни в невидимом окне.

И при прозрачности 0 окно не просто скрывается и становится невидимым, а вообще исчезает, так как можно спокойно кликать в то, что находится под ним - что тоже очень интересно.


--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 3.4.2020, 2:01
Сообщение #3


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1318
Пользователь №: 18.346
Возраст: 25



Мои желания начинает потиху сбываться... Осталось прикрутить к пилоту экранную лупу и возможность нажатия кнопок по их имени класссу (IMG:style_emoticons/default/rolleyes.gif)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 3.4.2020, 9:59
Сообщение #4


**********

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



Цитата
Left на lua почему-то не работает

Работает.
Цитата
Осталось прикрутить к пилоту экранную лупу

Это не проблема. Только зачем она в пилоте? В InqSoft Window Scanner есть лупа.
Цитата
возможность нажатия кнопок по их имени класссу

Клик в окно блокнота без привязки
Код
--lua
local ffi = require("ffi")
local user = ffi.load('User32.dll')
ffi.cdef[[
struct HWND__ { int unused; }; typedef struct HWND__ *HWND;
HWND FindWindowA(const char* lpClassName, const char* lpWindowName);
HWND FindWindowExA(HWND hWndParent, HWND hWndChildAfter, const char* lpszClass, const char* lpszWindow);
]]

log "clear" log "mode compact"

local owned = user.FindWindowA("notepad", nil)   -- поиск окна по классу, вместо nil можно указать имя
if owned then
    log ('Хендл главного окна:'    .. tonumber(ffi.cast('int', owned)))
    local child = user.FindWindowExA(owned, nil, "edit", nil)    -- поиск по классу относительно родительского окна
    if child then
        log ('Хендл дочернего окна:'    .. tonumber(ffi.cast('int', child)))
        local handle = tonumber(ffi.cast('int', child))
        left (150, 80, handle)  -- клик в координаты 150 80 (поставит курсор в эти координаты)
    end
end
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 3.4.2020, 11:44
Сообщение #5


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1318
Пользователь №: 18.346
Возраст: 25



Цитата(cirus @ 3.4.2020, 9:59) *
Это не проблема. Только зачем она в пилоте? В InqSoft Window Scanner есть лупа.

Иметь свой набор инструментов, ключей и отверток целесобразней(без хлопотней, правильней и быть независимым) чем ходить постоянно просить у соседей.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Fors1k
сообщение 3.4.2020, 12:50
Сообщение #6


*****

Journeyman
Сообщений: 497
Регистрация: 19.12.2017
Группа: Пользователи
Наличность: 2397
Пользователь №: 18.746



Цитата(cirus @ 3.4.2020, 9:59) *

Работает.

Сейчас заработал.


--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

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