Minimize on close / Notaskbar / Snap / Playpause on tray click

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

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

Сообщение #21 zencd » 29.01.2008, 10:06

acmodeu
http://sharebee.com/e1106536 или
http://www.foobar2000.ru/files/comment.php?dlid=58

хотя с 0.9.5 не проверял.. но должно
c 0.9.4.5 воркает
Последний раз редактировалось zencd 29.01.2008, 10:10, всего редактировалось 1 раз.
zencd M
Автор темы
Аватара
Откуда: spb
Репутация: 1
С нами: 18 лет 2 месяца

Сообщение #22 zencd » 29.01.2008, 10:32

Merak
у меня работает :-!

опиши подробности; и есть ли он в списке плагинов (Preferences/Components)

P.S. новый файловый архив — это нечто :-!
Последний раз редактировалось zencd 29.01.2008, 10:41, всего редактировалось 1 раз.
zencd M
Автор темы
Аватара
Откуда: spb
Репутация: 1
С нами: 18 лет 2 месяца

Сообщение #23 acmodeu » 29.01.2008, 18:27

Спасибо!
acmodeu M
Откуда: Петрозаводск
Репутация: 1
С нами: 17 лет 2 месяца

Сообщение #24 acmodeu » 29.01.2008, 18:30

Подтверждаю, с 0.9.5 работает.
acmodeu M
Откуда: Петрозаводск
Репутация: 1
С нами: 17 лет 2 месяца

Сообщение #26 zencd » 30.01.2008, 01:02

так зачем ждать ... нужно писать :-)
я и не знал что линки померли

с 0.9.5 работает, да
zencd M
Автор темы
Аватара
Откуда: spb
Репутация: 1
С нами: 18 лет 2 месяца

Сообщение #27 evil » 30.01.2008, 21:53

2zencd
Если пытаться прилеплять сверху, то не до конца получается. Пара пикселей просвечивает.
evil M
Репутация: 67
С нами: 18 лет 6 месяцев

Сообщение #28 zencd » 30.01.2008, 21:59

у меня сверху всё правильно
на домашнем компе тоже вроде правильно - глюков не замечал, но надо ещё проверить - может пару пикселей и не углядел

и вот в чём штука - я даже не представляю как это пофиксить - не поеду же я к вам домой :-)

Изображение
Последний раз редактировалось zencd 30.01.2008, 22:02, всего редактировалось 1 раз.
zencd M
Автор темы
Аватара
Откуда: spb
Репутация: 1
С нами: 18 лет 2 месяца

Сообщение #29 zencd » 30.01.2008, 22:03

может у вас несколько мониторов? или несколько воркспейсов?
zencd M
Автор темы
Аватара
Откуда: spb
Репутация: 1
С нами: 18 лет 2 месяца

Сообщение #30 zencd » 30.01.2008, 22:08

что касается загрузки проца, то она есть — у меня в пике достигает 40%, но редко, и на работе не компа отражается

глянул на gomplayer (тоже с притягиванием) — график загрузки проца схожий
zencd M
Автор темы
Аватара
Откуда: spb
Репутация: 1
С нами: 18 лет 2 месяца

Сообщение #31 evil » 30.01.2008, 22:39

2zencd
На стандартных темах винды всё ок. Только что попробовал. Хорошее добавление функциональности.
evil M
Репутация: 67
С нами: 18 лет 6 месяцев

Сообщение #32 Mr.Zer0 » 14.02.2008, 21:03

zencd:так зачем ждать ... нужно писать :-)
я и не знал что линки померли

с 0.9.5 работает, да
С 0.9.5.1 b1 не работает... с другими версиями тоже не работало. Есть альтернативы? Может в настройках что-где упустил?
Mr.Zer0
Гость

Сообщение #33 DRON » 01.05.2008, 18:18

так зачем ждать ... нужно писать
Да, действительно проще самому написать...
http://slil.ru/25748156

Проверялось с 0.9.5.2, с более старыми версиями (до того как автор foobar-а поставил "защиту" от перехвата сообщений) работать по идее не должно, но проверять лень.
Если кому интересно вот исходник:
Код: Выделить всё
library foo_minimize_on_close;
uses
  Windows,Messages;

function get_version:Integer; stdcall;
begin
  Result:=$47;
end;

function get_service_list:Pointer; stdcall;
begin
  Result:=nil;
end;

procedure get_config(p_stream:Pointer;p_abort:Pointer); stdcall;
begin
end;

procedure set_config(p_stream,p_abort:Pointer); stdcall;
begin
end;

procedure set_library_path(path,Name:PChar); stdcall;
begin
end;

procedure services_init(val:Boolean); stdcall;
begin
end;

function is_debug:Boolean; stdcall;
begin
  Result:=False;
end;

var
  Hook:HHook;
  FakeClass:array[0..6] of Pointer=(@get_version,@get_service_list,
    @get_config,@set_config,@set_library_path,@services_init,@is_debug);
  Inst:Pointer=@FakeClass;
  OldWndProc:Pointer;

function NewWndProc(Wnd:HWND;Message:Integer;wParam:wParam;lParam:lParam):Integer; stdcall;
begin
  if Message=WM_CLOSE then begin
    ShowWindow(Wnd,SW_MINIMIZE);
    Result:=0;
  end
  else
    Result:=CallWindowProc(OldWndProc,Wnd,Message,wParam,lParam);
end;

function HookProc(nCode:Integer;wParam:wParam;lParam:lParam):Integer; stdcall;
var
  Buf:array[0..255] of Char;
begin
  if nCode=HC_ACTION then
    with PCWPSTRUCT(lParam)^ do
      if Message=WM_CLOSE then begin
        Buf[GetClassName(HWND,@Buf,SizeOf(Buf))]:=#0;
        if lstrcmp(Buf,'{97E27FAA-C0B3-4b8e-A693-ED7881E99FC1}')=0 then
          OldWndProc:=Pointer(SetWindowLong(HWND,GWL_WNDPROC,Integer(@NewWndProc)));
      end;
  Result:=CallNextHookEx(Hook,nCode,wParam,lParam);
end;

function foobar2000_get_interface(p_api:Pointer;hIns:HMODULE):Pointer; cdecl;
begin
  Hook:=SetWindowsHookEx(WH_CALLWNDPROC,@HookProc,0,GetCurrentThreadId);
  Result:=@Inst;
end;

exports
  foobar2000_get_interface;
begin
end.
DRON M
Аватара
Откуда: Санкт-Петербург
Репутация: 113
С нами: 16 лет 6 месяцев

Сообщение #34 DRON » 03.05.2008, 01:11

Может Вы еще и "foo_snap" переделаете?
Переделал (в архиве оба плагина, так как foo_minimize_on_close был чуточку исправлен):
http://slil.ru/25750784
DRON M
Аватара
Откуда: Санкт-Петербург
Репутация: 113
С нами: 16 лет 6 месяцев

Сообщение #35 acmodeu » 03.05.2008, 12:47

Может Вы еще и "foo_snap" переделаете?
А что оно вообще делает?
acmodeu M
Откуда: Петрозаводск
Репутация: 1
С нами: 17 лет 2 месяца

Сообщение #36 acmodeu » 03.05.2008, 13:03

Я тут недоработочку обнаружил, не знаю, правда, к кому с ней обращаться. У меня в настройках интерфейса стоит columns.ui с поставленными галками "minimize to tray" и "always show tray icon". В общем, описываю свои действия:
1) я что либо делал в фубаре (ставил на паузу, добавлял папку в плейлист - неважно, но окно фубара было активно).
2) потом через alt-tab или по клику на таск баре перешел на другую задачу.
3) по идее вернуться в фубар можно двумя способами - либо через alt-tab либо по клику на значке в трее. Через alt-tab все нормально. НО! Когда кликаешь на трее, то фубар как бы сворачивается в трей, потому что "думает", что он был все еще активным и по этому в этой ситуации приходится кликать 2 раза (чтоб свернулся и чтобы развернулся).

Надеюсь понятно описал. Т.е., думается мне, надо сделать либо чтобы при потере фокуса фубар сам в трей сворачивался, либо по клику на значке "смотрел" на свое текущее состояние (свернут/нет)
acmodeu M
Откуда: Петрозаводск
Репутация: 1
С нами: 17 лет 2 месяца

Сообщение #37 evil » 03.05.2008, 14:12

_DRON_:Может Вы еще и "foo_snap" переделаете?
Переделал
А он не работал? В чём изменения?
evil M
Репутация: 67
С нами: 18 лет 6 месяцев

Сообщение #38 evil » 03.05.2008, 14:42

Он и так работал.
evil M
Репутация: 67
С нами: 18 лет 6 месяцев

Сообщение #39 DRON » 03.05.2008, 15:17

2Merak
Кстати, я понимаю что это врядли
Наоборот, это одной строчкой делается, надо было сразу так и делать, но не сообразил:
http://slil.ru/25751417
Только учтите что поведение зависит от "Minimize to notification area", то есть если оно включено, то кнопки "Minimize" и "Close" работают одинаково, а если выключено, то по "Close" окно исчезает из TaskBar-a, а по "Minimize" сворачивается. И ещё не забудьте, что если  выключены и "Minimize to notification area" и "Always show notification area icon", то показать FooBar можно будет только по глобальной горячей клавише.
И еще вопрос: а почему эти компоненты не отображаются в соответствующем разделе настроек?
Потому что это вообще не компоненты, а "обманки" которые глупый фубар загружает при запуске. Нормальные компоненты можно писать только с использованием SDK и компилятора от Microsoft, а я по большей части использую Borland и данные "компоненты" вообще написаны на Delphi. Так что никаких настроек и вообще что нибудь кроме издевательства над окошком фубара, таким способом не добавить.

2acmodeu
Я тут недоработочку обнаружил, не знаю, правда, к кому с ней обращаться.
К автору фубара, но думаю он ничего делать не будет, потому что всё не так просто как кажется: когда вы нажимаете иконку в трее, то фокус переходит к трею и фубар ВСЕГДА будет не в фокусе. Можно конечно проверять является ли текущее окно треем, но это тоже не слишком надёжно.

2evil
Начиная с версии 0.9.5.1b2 автор фубара стал проводить жёсткую политику к тем кто нарушает его лицензию на SDK. Во первых он применил некую "защиту" оконной функции от перехвата (что собственно и делают плагины типа snap и close on minimize), а также составил некий "чёрный список" плагинов которые фубар просто не грузит, на данный момент это foo_input_matroska.dll, foo_fullscreen.dll, foo_albumlist_autoupdate.dll, foo_common.dll.
DRON M
Аватара
Откуда: Санкт-Петербург
Репутация: 113
С нами: 16 лет 6 месяцев

Сообщение #40 evil » 03.05.2008, 22:35

Merak:Согласитесь, что и на "Свернуть" и на "Закрыть" повесить одинаковое действие - свернуть в трей, как-то
не логично (и не нужно).
А для какой цели все эти махинации? Хочется свернуть - жми кнопку "Свернуть", а если закрыть - кнопку "Закрыть".
evil M
Репутация: 67
С нами: 18 лет 6 месяцев

Пред.След.

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