UI Hacks (foo_ui_hacks)

Список разделов foobar2000 Плагины

Описание: Все о плагинах, компонентах, расширениях

Сообщение #1 DRON » 28.05.2009, 15:11

Компонент позволяет изменять поведение главного окна плеера и реакцию на некоторые действия пользователя. Настройки компонента можно найти на странице "UI Hacks" в окне конфигурации foobar2000.

Функционально компонент заменяет foo_lock, foo_noss, foo_minimize_on_close, foo_notaskbar, foo_snap, foo_fullscreen и foo_playpause_on_tray_click. Также имеется возможность настройки уведомлений (Balloon tooltip), за что благодарите Mr.Merak.

Увы, официальный сайт более недоступен, и судя по всему, разработка заморожена или вовсе прекращена. С каждой новой версией foobar2000 функционал становится все более несовместимым с плеером, поэтому возможно вам стоит отказаться от его использования в новейших версиях foobar2000.

Последнюю версию можно найти тут:
foo_ui_hacks_2013-02-19.zip
(124.19 КБ) Скачиваний: 9698

Иконки для опции "Use playback status icons":
StateIcons.7z
Иконки для опции "Use playback status icons".
(7.73 КБ) Скачиваний: 2901


ВНИМАНИЕ! Для работы функционала портативности, начиная с версии foobar2000 v1.6 необходимы некоторые действия, описанные ЗДЕСЬ.
Последний раз редактировалось DRON 24.12.2012, 02:48, всего редактировалось 11 раз(а).
DRON M
Автор темы
Аватара
Откуда: Санкт-Петербург
Репутация: 113
С нами: 15 лет 10 месяцев


Сообщение #541 Yurnikos » 08.05.2014, 17:19

вин 7, СолумнсУИ, foo_ui_hacks.dll, 241КБ, автономная, в програм филес - ничего не вешается...
Yurnikos
Гость

Сообщение #542 LUR » 08.05.2014, 18:47

megane68, у меня на сборке все в норме, может конфликтует с каким плагином
LUR M
Модератор
Аватара
Откуда: Минск
Репутация: 367
С нами: 11 лет 4 месяца

Сообщение #543 AHAPXICT » 10.05.2014, 14:22

LUR, благодаря твоей сборке я теперь и себе поставил "foo_ui_hacks" вместе со "Shpeck". И вот что я выяснил, если на титлбаре шпека или в меню для оконного режима попытаться поменять шрифт, то плеер уходит в крэш (на твоей сборке тоже). Ну а в общем не могу нарадоваться, виртуальный диск для моей портативной версии все проблемы порешал, а папка со встроенными шрифтами так вообще бомба.
P.S. megane68, я сделал кнопки под "Shpeck" в стиле "DarkOne" может тебе понадобятся))
AHAPXICT M
Аватара
Откуда: Киев
Репутация: 252
С нами: 10 лет 4 месяца

Сообщение #544 megane68 » 13.05.2014, 21:27

AHAPXICT:megane68, я сделал кнопки под "Shpeck" в стиле "DarkOne" может тебе понадобятся))
Не знаю. У меня сейчас катастрофически нет времени заниматься усовершенствованием сборки.
Надо решить проблему, почему на 1.3.1 нет зависаний при выключении плеера, а в 1.3.2 появляется.
Дрон что- то давно тоже не появляется и новых версий UI Hacks не делает. :ill:
megane68 M
Репутация: -18
С нами: 15 лет 1 месяц

Сообщение #545 iprad » 04.08.2014, 12:54

Вопрос (не на чем проверить детально): как UI Hacks дружит с Win8 ?
iprad M
Аватара
Репутация: 89
С нами: 11 лет

Сообщение #546 vladj » 04.08.2014, 14:28

Отлично дружит :beer:
vladj M
Аватара
Откуда: Пермский край
Репутация: 427
С нами: 14 лет 2 месяца

Сообщение #547 iprad » 04.08.2014, 16:06

Хочу выложить скин новый. На днях попал в руки ноут. Запустил свой скин на нем (win8, 2 видеокарты). В итоге-вылет. Вот и грешил сначала на винду. Но похоже что причина-в видеокартах. В общем нужно тестировать....
iprad M
Аватара
Репутация: 89
С нами: 11 лет

Сообщение #548 Aum » 13.11.2015, 21:28

Не знаю кто, но ЕГО обновили и снабдили новыми функциями!!
Так и не понял кто, но ссылка была на этот форум.
А дак это Дрон и обновил в 2013 году, на 26 странице он есть, просто шапка устарела!
foo_ui_hacks_2013-02-19.zip
Aum M
Аватара
Репутация: 20
С нами: 14 лет

Сообщение #549 megane68 » 29.12.2016, 14:37

Дрон, явись народу!
Есть вопрос. foobar2000 не даёт появиться панели задач, если она автоматически скрывается в настройках винды 10, а foobar2000 развёрнут, но не поверх всех окон.
Можно это как то пофиксить?
megane68 M
Репутация: -18
С нами: 15 лет 1 месяц

Сообщение #550 LUR » 24.09.2018, 16:40

Народ, кто шарит как получить текущие размеры окна фубара? В API UIHacks я такого не нашел. Может туплю и есть способ?
LUR M
Модератор
Аватара
Откуда: Минск
Репутация: 367
С нами: 11 лет 4 месяца

Сообщение #551 master_fb2k » 24.09.2018, 18:53

LUR:Народ, кто шарит как получить текущие размеры окна фубара? В API UIHacks я такого не нашел. Может туплю и есть способ?
Наверное Вы про ограничения понимаю почему этот вопрос был напечатан именно в этой теме
Ну типа нажать Alt+PrtSc скопировав окно фубара в буфер обмена
Вставить по Ctrl+V скриншот например в Paint и нажать свойства по Ctrl+E
master_fb2k M
Аватара
Репутация: 23
С нами: 9 лет 4 месяца

Сообщение #552 kgena_ua » 24.09.2018, 19:04

LUR, тут все найдете
Код: Выделить всё
//Additional libraries initialisation script by Zin-Uru, 2010
//Version 1.5.2, 15.01.2011
var lib_path = fb.FoobarPath + "assemblies\\";
var autoItX3, dynwrapx;
var libs_exist = utils.FileTest(lib_path + "AutoItX3.dll","e") && utils.FileTest(lib_path + "dynwrapx.dll","e");
var loaded = true;

function init_special_libraries(force) { //Use force=true if not need to patch foobar2000.exe
    var WshShell = new ActiveXObject("WScript.Shell");
    var pressed = -1;

    if(!libs_exist) {
        loaded = false;
        return;
    }
    try {
        autoItX3 = new ActiveXObject("AutoItX3.Control");
        dynwrapx = new ActiveXObject("DynamicWrapperX");
    } catch (e) {
        if(force || !window.GetProperty("Show message", true)) {
            loaded = false;
            return;
        } else {
            pressed = WshShell.Popup("It seems like libraries not found or you use not patched foobar2000.exe. Do you want to patch it now (recommended)? You can also do that manually with patch.cmd from the foobar2000 folder. Now press OK to go or Cancel to skip (be carefull - this message showed only once).",0,"Notice",33);
            if(pressed==1) {
                WshShell.run('"' + fb.FoobarPath + 'patch.cmd" run_foo');
                fb.RunMainMenuCommand("File/Exit");
            } else {
                window.SetProperty("Show message", false);
            }
            loaded = false;
            return;
        }
    }
   
    //Dynwrapx commands registration
    dynwrapx.Register("user32.dll", "ReleaseCapture");
    dynwrapx.Register("user32.dll", "SendMessage", "i=hlul", "r=l");
    dynwrapx.Register("user32.dll", "GetWindowLong", "i=hl", "r=l");
    dynwrapx.Register("user32.dll", "SetWindowLong", "i=hll", "r=l");
    dynwrapx.Register("user32.dll", "SetLayeredWindowAttributes", "i=hlbu", "r=b");
    dynwrapx.Register("user32.dll", "RedrawWindow", "i=huhu", "r=l");
}

//Helper functions
function get_hwnd(interface_name) {
    var hwnd;

    if(!libs_exist || !loaded) return;
    switch (interface_name) {
        case "CUI":
            hwnd = ("0x" + autoItX3.WinGetHandle("[CLASS:{E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8}]"))*1;
            break;
        case "FUI":
            hwnd = ("0x" + autoItX3.WinGetHandle("[CLASS:foo_ui_func_window_class]"))*1;
            break;
        case "DUI":
            hwnd = ("0x" + autoItX3.WinGetHandle("[CLASS:{97E27FAA-C0B3-4b8e-A693-ED7881E99FC1}]"))*1;
            break;
        default:
            hwnd = ("0x" + autoItX3.WinGetHandle(interface_name))*1;
            break;
    }
    return hwnd;
}

function get_pss_hwnd(instance) { //CUI only
    if(!libs_exist || !loaded) return;
    return ("0x" + autoItX3.ControlGetHandle("[CLASS:{E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8}]", "", "[CLASS:PSSWindowContainer; INSTANCE:" + instance + "]"))*1;
}

function get_class(interface_name) {
    var wclass;

    if(!libs_exist || !loaded) return;
    switch (interface_name) {
        case "CUI":
            wclass = "[CLASS:{E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8}]";
            break;
        case "FUI":
            wclass = "[CLASS:foo_ui_func_window_class]";
            break;
        case "DUI":
            wclass = "[CLASS:{97E27FAA-C0B3-4b8e-A693-ED7881E99FC1}]";
            break;
        default:
            wclass = interface_name;
            break;
    }
    return wclass;
}

function GDI_RGB(b, g, r) {
   return (0xff000000 | (r << 16) | (g << 8) | (b));
}

function LParam(LoWord, HiWord){
    return ((HiWord << 16) | (LoWord & 0xffff));
}


function drag_window(interface_name) { //For use in on_mouse_lbtn_down
    if(!libs_exist || !loaded) return;
    dynwrapx.ReleaseCapture();
    dynwrapx.SendMessage(get_hwnd(interface_name), 0xA1, 2, 1);
}

function move_window(interface_name, x, y, w, h) {
    if(!libs_exist || !loaded) return;
    autoItX3.WinMove(get_class(interface_name), "", x, y, w, h);   
}

function get_window_states(interface_name) { //Returned array gives: exists, visible, enabled, active, minimized, maximized
    var result = Array(false, false, false, false, false, false);
    var state;
   
    if(!libs_exist || !loaded) return result;
    state = autoItX3.WinGetState(get_class(interface_name));
    if((state & 1)==1) result[0] = true;
    if((state & 2)==2) result[1] = true;
    if((state & 4)==4) result[2] = true;
    if((state & 8)==8) result[3] = true;
    if((state & 16)==16) result[4] = true;
    if((state & 32)==32) result[5] = true;
    return result;
}

function window_opacity(interface_name, opacity) {
    if(!libs_exist || !loaded) return;
    autoItX3.WinSetTrans(get_class(interface_name), "", Math.round(opacity*2.55));
    if(get_window_states(interface_name)[1]==true) dynwrapx.RedrawWindow(get_hwnd(interface_name), 0, 0, 0x400 | 0x80 | 0x4 | 0x1);
}

function get_window_dimensions(interface_name) { //Returned array gives: x, y, width, height (of the window)
    var title;
   
    if(!libs_exist || !loaded) return Array(0,0,0,0);
    title = get_class(interface_name);
    return Array(autoItX3.WinGetPosX(title),autoItX3.WinGetPosY(title),autoItX3.WinGetPosWidth(title),autoItX3.WinGetPosHeight(title));   
}

function set_window_on_top(interface_name, state) {
    if(!libs_exist || !loaded) return;
    autoItX3.WinSetOnTop(get_class(interface_name),"",state==false ? 0 : 1);
}

function set_transparent_color(interface_name, color, alpha) { //Use only GDI_RGB(r, g, b) to set up color
    var handle;

    if(!libs_exist || !loaded) return;
    handle = get_hwnd(interface_name);
    dynwrapx.SetWindowLong(handle, -20, dynwrapx.GetWindowLong(handle, -20) | 0x00080000);
    dynwrapx.SetLayeredWindowAttributes(handle, color, alpha, 0x00000001 | 0x00000002);
    if(get_window_states(interface_name)[1]==true) dynwrapx.RedrawWindow(handle, 0, 0, 0x400 | 0x80 | 0x4 | 0x1);
}

понадобится. В корень фубара
assemblies.rar
(132.2 КБ) Скачиваний: 391
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 10 лет 11 месяцев

Сообщение #553 LUR » 24.09.2018, 19:15

kgena_ua:тут все найдете
ну ясно, я так и думал. я правда уже успел у себя реализовать управление размером окна фубара.
LUR M
Модератор
Аватара
Откуда: Минск
Репутация: 367
С нами: 11 лет 4 месяца

Сообщение #554 master_fb2k » 24.09.2018, 19:21

kgena_ua:понадобится. В корень фубара
assemblies.rar
вот оно че, чувствую некий тут потенциал но не соображу как этим пользоваться
гугл ответа не дает
master_fb2k M
Аватара
Репутация: 23
С нами: 9 лет 4 месяца

Сообщение #555 macarych » 24.09.2018, 19:43

LUR:как получить текущие размеры окна фубара? В
Я здесь смотрю, в майн виндовс

2018-09-24_193239.jpg
2018-09-24_193239.jpg (54.12 КБ) Просмотров: 7095
macarych M
Аватара
Репутация: 417
С нами: 15 лет 2 месяца

Сообщение #556 zeremy » 24.09.2018, 20:40

FOO_UIE_WSH_PANEL_MOD_MOD ??

https://sites.google.com/site/jk7800/foobar2000

GetHWND( ClassName );

GetWindowInfoW( hWnd, Info );

Код: Выделить всё
//DUI ClassName {97E27FAA-C0B3-4b8e-A693-ED7881E99FC1}
//CUI ClassName {E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8}

f2k = utils.GetHWND("{97E27FAA-C0B3-4b8e-A693-ED7881E99FC1}");

fb.trace(utils.GetWindowInfoW(f2k,1));
fb.trace(utils.GetWindowInfoW(f2k,2));
fb.trace(utils.GetWindowInfoW(f2k,3));
fb.trace(utils.GetWindowInfoW(f2k,4));
zeremy
Репутация: 21
С нами: 8 лет 4 месяца

Сообщение #557 LUR » 24.09.2018, 22:16

macarych:Я здесь смотрю, в майн виндовс
не ну понятно) я имел в виду получить в скрипте значения. и установить размеры тоже из скрипта.

Добавлено спустя 8 минут 14 секунд:
zeremy:FOO_UIE_WSH_PANEL_MOD_MOD ??
Yet another component?)
LUR M
Модератор
Аватара
Откуда: Минск
Репутация: 367
С нами: 11 лет 4 месяца

Сообщение #558 kgena_ua » 25.09.2018, 10:12

Скрипт-пример (для CUI).
Получаем значения х, у, ц и h окна.
Изменяем размеры окна колесом мыши.
Код: Выделить всё
function RGB(r,g,b) { return (0xff000000|(r<<16)|(g<<8)|(b)); }
var font = gdi.Font("arial",12,0);
var color = RGB(40, 40, 40);
var ww = 0, wh = 0;

DT_LEFT = 0x00000000;
DT_NOPREFIX = 0x00000800;

var window_x, window_y, window_w, window_h;

var autoItX3 = new ActiveXObject("AutoItX3.Control");

function get_xywh(){
    class_name = "[CLASS:{E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8}]";
    window_x = autoItX3.WinGetPosX(class_name);
    window_y = autoItX3.WinGetPosY(class_name);
    window_w = autoItX3.WinGetPosWidth(class_name);
    window_h = autoItX3.WinGetPosHeight(class_name);
}

function move_window(interface_name, x, y, w, h) {
    class_name = "[CLASS:{E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8}]";
    autoItX3.WinMove(class_name, "", x, y, w, h);       
}

function on_size(){
    ww = window.Width;
    wh = window.Height;
    get_xywh();
}

function on_paint(gr) {
    gr.GdiDrawText( "window_x  " + window_x, font, color, 10, 10, ww, wh, DT_LEFT | DT_NOPREFIX );
    gr.GdiDrawText( "window_y  " + window_y, font, color, 10, 30, ww, wh, DT_LEFT | DT_NOPREFIX );
    gr.GdiDrawText( "window_w  " + window_w, font, color, 10, 50, ww, wh, DT_LEFT | DT_NOPREFIX );
    gr.GdiDrawText( "window_h  " + window_h, font, color, 10, 70, ww, wh, DT_LEFT | DT_NOPREFIX );
}   

var step = 10;

function on_mouse_wheel(delta) {
    if (delta > 0){
        window_x = window_x - step;
        window_y = window_y - step;
        window_w = window_w + step * 2;
        window_h = window_h + step * 2;
    }
   
    if (delta < 0){
        window_x = window_x + step;
        window_y = window_y + step;
        window_w = window_w - step * 2;
        window_h = window_h - step * 2;
    }

    move_window("CUI", window_x, window_y, window_w, window_h);
    get_xywh();
    window.Repaint();                        
}

function on_mouse_move(x, y) {
    window.SetCursor(32649);
    window.Repaint();
}

function on_mouse_leave() {
    window.SetCursor(32512);
    window.Repaint();
}   

kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 10 лет 11 месяцев

Сообщение #559 macarych » 25.09.2018, 11:50

LUR:я имел в виду получить в скрипте значения
ясно)
А было подумал "чево это он???" )))

kgena_ua, ещё и автоит задействован, не так ли?

А можно поподробнее?
macarych M
Аватара
Репутация: 417
С нами: 15 лет 2 месяца

Сообщение #560 kgena_ua » 26.09.2018, 12:42

Привет, macarych .
macarych:ещё и автоит
А что такое "автоит".
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 10 лет 11 месяцев

Пред.След.

Вернуться в Плагины