Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Уменьшение задержки открытия AmpView.exe, исправлено игнорирование файлов с расширением в верхнем регистре etc #1

Open
Skif-off opened this issue Sep 1, 2015 · 4 comments

Comments

@Skif-off
Copy link

Skif-off commented Sep 1, 2015

Приветствую, не программист, но вроде работает и чтобы не потерялось :)

  • уменьшение задержки открытия AmpView.exe (большое спасибо SuPriTo и MVV за разъяснения);
  • исправлено игнорирование файлов с расширением в верхнем регистре;
  • добавлены mpa, aiff, aif, aifc как поддерживаемые bass.dll из коробки.
--- wlx/AmpView.lpr
+++ wlx/AmpView.lpr
@@ -10,10 +10,11 @@
                    'EXT="XM" | EXT="S3M" | EXT="MOD" | EXT="M3U" |'+
                    'EXT="PLS" | EXT="MID"| EXT="MIDI" | EXT="KAR"';
 
- NumOfBaseExt=19;
+ NumOfBaseExt=23;
  BaseExt: array [0..NumOfBaseExt] of string = ('m3u', 'pls', 'mp3',
   'wav', 'wma', 'mp2', 'mp1', 'ogg', 'cda', 'mo3', 'it', 'xm', 's3m',
-  'mtm', 'mod', 'umx', 'mid', 'midi', 'kar', 'rmi');
+  'mtm', 'mod', 'umx', 'mid', 'midi', 'kar', 'rmi', 'mpa', 'aiff',
+  'aif', 'aifc');
 
 var
   wc: TWndClass;
@@ -48,6 +49,7 @@
 var
   PlayerExe: string;
   FileExt: string;
+  st: DWORD;
   StartPlayer: byte = 0;
   i: integer;
 begin
@@ -65,6 +67,7 @@
  if FileExt='' then exit; // если расширение не получено - сразу выходим
 
  // Проверка базовых расширений
+ FileExt:=LowerCase(FileExt);
  for i:=0 to NumOfBaseExt do
   if (FileExt = BaseExt[i]) then
    begin
@@ -82,7 +85,11 @@
  // Если расширение подходящее - запускаем плеер и передам путь к файлу
  1: begin
      ShellExecute(0, nil, PChar(PlayerExe), PChar('\n "'+FileToLoad+'"'), nil, 5);// <> 0 then
-     sleep(2000); // ждём, пока AmpView откроет файл
+     //sleep(2000); // ждём, пока AmpView откроет файл
+     st:=GetTickCount();
+     while (GetTickCount() - st < 2000) and (FindWindow('TAmpViewMainForm', nil) = 0) do
+      Sleep(10);
+     sleep(2000); // ждём, чтобы ТС не успел удалить файл, если он распакован в %Temp% из архива
      SetWindowPos(ParentWin, 0, -100, -100, 0, 0, SWP_HIDEWINDOW);
      Result := CallKiller(ParentWin);
      if Result = 0 then Exit;

P.S. Делал сборку с поддержкой ряда дополнительных форматов (здесь и ниже), вроде работает.

@Skif-off
Copy link
Author

Вот это понаписал...

  1. Патчился файл wlx/AmpView.lpr.
  2. diff-файл без окружения (по умолчанию +3и незатронутых строки сверху и снизу) - очень некрасиво. Сейчас попробую поправить.

@Skif-off
Copy link
Author

Skif-off commented Jan 15, 2018

Поправил патч, собирал в Lazarus 1.2.6, проверялось на WinXP SP2/SP3 x32 и Win7 SP1 x32/x64 (x64-версия почти сразу оказалась в сборке SamLab, полагаю, тестирование вышло помасштабнее).

Ещё сам плеер (AmpView.exe ) тёк на плейлистах, тогда не осилил, а позже не пробовал, т.к. от плагина в итоге отказался (не очень удобно (лично мне :)), что нет возможности использовать быстрый просмотр).

@Skif-off Skif-off mentioned this issue Jan 15, 2018
@Skif-off
Copy link
Author

Кажется, я понял, зачем нужна функция

sleep(2000)

http://forum.wincmd.ru/viewpost.php?p=84942
Поправил патч, переместив функцию ниже, перед уничтожением окна просмотрщика.

@Skif-off
Copy link
Author

Skif-off commented Jul 15, 2018

Хм, похоже, перемещение sleep(2000) ничего не меняет, задержка на месте. В общем, в теме на форуме выложу скомпилированные версии без уменьшения задержки, пусть взрослые дяди решают проблему :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant