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.

Увы, официальный сайт более недоступен.

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

Иконки для опции "Use playback status icons":
StateIcons.7z
Иконки для опции "Use playback status icons".
(7.73 КБ) Скачиваний: 1877
Последний раз редактировалось DRON 24.12.2012, 02:48, всего редактировалось 11 раз(а).
DRON M
Автор темы, Мастер
Аватара
Откуда: Санкт-Петербург
Репутация: 112
С нами: 10 лет 7 месяцев


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

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

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

megane68, у меня на сборке все в норме, может конфликтует с каким плагином
LUR M
Модератор
Аватара
Возраст: 36
Откуда: Минск
Репутация: 229
С нами: 6 лет

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

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

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

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

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

Вопрос (не на чем проверить детально): как UI Hacks дружит с Win8 ?
iprad M
Бывалый
Аватара
Возраст: 41
Репутация: 88
С нами: 5 лет 9 месяцев

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

Отлично дружит :beer:
HTPC Termaltake, eGlobal i5-7200, Asrock Beebox J3160, Onkyo 525E, цап SMSL, фронт Yamaha 8900.
vladj M
Гуру
Аватара
Откуда: Пермский край
Репутация: 358
С нами: 8 лет 10 месяцев

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

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

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

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

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

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

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

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

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

LUR писал(а):Народ, кто шарит как получить текущие размеры окна фубара? В API UIHacks я такого не нашел. Может туплю и есть способ?
Наверное Вы про ограничения понимаю почему этот вопрос был напечатан именно в этой теме
Ну типа нажать Alt+PrtSc скопировав окно фубара в буфер обмена
Вставить по Ctrl+V скриншот например в Paint и нажать свойства по Ctrl+E
master_fb2k M
Бывалый
Аватара
Откуда: Воронеж Россия
Репутация: 23
С нами: 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 КБ) Скачиваний: 19
I.m.UR5EQF.
квартет на миллион долларов
kgena_ua M
Гуру
Аватара
Возраст: 54
Откуда: Украина, Днепр
Репутация: 427
С нами: 5 лет 8 месяцев

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

kgena_ua писал(а):тут все найдете
ну ясно, я так и думал. я правда уже успел у себя реализовать управление размером окна фубара.
LUR M
Модератор
Аватара
Возраст: 36
Откуда: Минск
Репутация: 229
С нами: 6 лет

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

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

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

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

2018-09-24_193239.jpg
2018-09-24_193239.jpg (54.12 КБ) Просмотров: 692
macarych M
Гуру
Аватара
Репутация: 329
С нами: 9 лет 11 месяцев

Сообщение #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
Новичок
Репутация: 20
С нами: 3 года

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

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

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

Сообщение #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();
}   

I.m.UR5EQF.
квартет на миллион долларов
kgena_ua M
Гуру
Аватара
Возраст: 54
Откуда: Украина, Днепр
Репутация: 427
С нами: 5 лет 8 месяцев

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

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

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

А можно поподробнее?
macarych M
Гуру
Аватара
Репутация: 329
С нами: 9 лет 11 месяцев

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

Привет, macarych .
macarych писал(а):ещё и автоит
А что такое "автоит".
I.m.UR5EQF.
квартет на миллион долларов
kgena_ua M
Гуру
Аватара
Возраст: 54
Откуда: Украина, Днепр
Репутация: 427
С нами: 5 лет 8 месяцев

Пред.След.

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

Кто сейчас на форуме (по активности за 10 минут)

Сейчас этот раздел просматривают: 1 гость