Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Аналог Tab wheel scroll (аддон для Fx)
Goto page Previous  1, 2
 
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы printer-friendly view
View previous topic :: View next topic  
Author Message
mf-zl



Joined: 21 Aug 2005
Posts: 71
Location: BLR

Post (Separately) Posted: Sat Oct 10, 2009 08:49    Post subject: Reply with quote

amzoom wrote:
скрипт конфликтует с другим скриптом

в чём ?
Back to top
View user's profile Send private message
amzoom



Joined: 07 Oct 2009
Posts: 44

Post (Separately) Posted: Sun Oct 11, 2009 17:08    Post subject: Reply with quote

mf-zl wrote:
вместо:
Code:
A_ThisHotkey = "WheelDown" ? "+" : "") "{TAB}

поставь:
Code:
A_TisHotkey = "WheelDown" ? "" : "+) "{TAB}
а такой вариант выдаёт ошибку о нехватающей закрывающей круглой скобке. И дело даже не в твоей опечатке TisHotkey вместо ThisHotkey.
Я вот просто заменил WheelDown на WheelUp и у меня работает :)

Quote:
в скобках течёт таймер

никаких таймеров в скрипте нет, промто про кажтом нажатия колёсика выполняется весь код[/quote]
при клике по иконке скрипта в трее я вижу подобный лог:
Code:
007: MouseGetPos,,,,ControlClass
012: if RegExMatch(ControlClass, "TMyPanel[47]") 
014: Send,"{" A_ThisHotkey "}"
015: Return (0.14)
007: MouseGetPos,,,,ControlClass (0.03)
012: if RegExMatch(ControlClass, "TMyPanel[47]") 
014: Send,"{" A_ThisHotkey "}"
015: Return (0.03)
007: MouseGetPos,,,,ControlClass
012: if RegExMatch(ControlClass, "TMyPanel[47]") 
014: Send,"{" A_ThisHotkey "}"
015: Return (1108.41)


Quote:
в чём ?
Твой скрипт перестаёт работать при использовании того скрипта :(
Back to top
View user's profile Send private message
amzoom



Joined: 07 Oct 2009
Posts: 44

Post (Separately) Posted: Mon Oct 12, 2009 00:04    Post subject: Reply with quote

а кстати, вот у меня такой вопрос: а можно ли как-то в скрипте указать, что он должен закрываться, если не обнаружен процесс тоталкоммандера (т.е. он не запущен)?
а то в принципе то я могу написать батник который бы запускал этот скрипт и тотал коммандер, и использовать этот батник просто как ярлык для тотала, но ведь при выгрузке тотала процесс скрипта будет всё ещё висеть в памяти...
Back to top
View user's profile Send private message
mf-zl



Joined: 21 Aug 2005
Posts: 71
Location: BLR

Post (Separately) Posted: Mon Oct 12, 2009 00:49    Post subject: Reply with quote

Ой сорь очепятко (

вместо:
Code:
A_ThisHotkey = "WheelDown" ? "+" : "") "{TAB}



поставь:
Code:
A_ThisHotkey = "WheelDown" ? "" : "+") "{TAB}


я имел ввиду просто поменять плюсы местами )
Back to top
View user's profile Send private message
mf-zl



Joined: 21 Aug 2005
Posts: 71
Location: BLR

Post (Separately) Posted: Mon Oct 12, 2009 01:22    Post subject: Reply with quote

А так ?
Code:
#SingleInstance force

; ------------------------------------------------------------------------------
; >>> Прокрутка колесом мыши вкладок TC
; ------------------------------------------------------------------------------
#IfWinActive ahk_class TTOTAL_CMD

WheelUp::
WheelDown::
  CoordMode, Mouse, Relative
  MouseGetPos,,,, ControlClass
  If RegExMatch(ControlClass, "TMyPanel[47]")
    Send, % "^" (A_ThisHotkey = "WheelDown" ? "" : "+") "{TAB}"
  Else, Send, % "{" A_ThisHotkey "}"
Return

#IfWinActive

; ------------------------------------------------------------------------------
; >>> Прокрутка окна под курсором мыши без активации
; ------------------------------------------------------------------------------
WheelUp::
WheelDown::
  If(A_ThisHotkey!=A_PriorHotkey || A_TimeSincePriorHotkey>40) ; Определить скорость
    Scroll:= A_ThisHotkey="WheelUp" ? 120<<16 : -120<<16       ; вращения колеса и
  Else                                                         ; задать скорость прокрутки.
    Scroll:= A_ThisHotkey="WheelUp" ? 240<<16 : -240<<16
  CoordMode, Mouse, Screen
  MouseGetPos, mX, mY
  WinID:=DllCall("WindowFromPoint", "int", mX, "int", mY)      ; ID (handle) окна под мышью.
  NextID:=DllCall("WindowFromPoint", "int", mX, "int", mY-20)

  SendMessage, 0x20A, %Scroll%, (mY<<16)|mX,, ahk_id %WinID%   ; 0x20A = WM_MOUSEWHEEL
  If (!ErrorLevel && (WinID != NextID))
    SendMessage, 0x20A, %Scroll%, (mY<<16)|mX,, ahk_id %NextID%
Return
Back to top
View user's profile Send private message
amzoom



Joined: 07 Oct 2009
Posts: 44

Post (Separately) Posted: Mon Oct 12, 2009 01:49    Post subject: Reply with quote

а так уже интересней.
минусы данного скрипта:
1. он не работает для табов если окно тотала является неактивным. (Хотя работает для прокрутки содержимого таба в тотале)
2. если тотал активный, то не работает прокрутка для всех остальных приложений (например Фаерфокс или окно проводника)
3. если в тотале активна левая панель, а курсор находится под правой, то прокручивается не правая, как должно бы быть, а левая.

Но повторюсь - скрипт становится значительно интересней и юзабельней, спасибо за твой труд.
Back to top
View user's profile Send private message
amzoom



Joined: 07 Oct 2009
Posts: 44

Post (Separately) Posted: Mon Oct 12, 2009 03:59    Post subject: Reply with quote

amzoom wrote:
а кстати, вот у меня такой вопрос: а можно ли как-то в скрипте указать, что он должен закрываться, если не обнаружен процесс тоталкоммандера (т.е. он не запущен)?
а то в принципе то я могу написать батник который бы запускал этот скрипт и тотал коммандер, и использовать этот батник просто как ярлык для тотала, но ведь при выгрузке тотала процесс скрипта будет всё ещё висеть в памяти...

ответ на этот вопрос получил на другом форуме:
primer.vbs
Code:
Option Explicit

Dim lngProcessID1, lngProcessID2

With GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
   With .Get("Win32_Process")
      .Create "totalcommander.exe", "c:\\path", Nothing, lngProcessID1
      .Create "script_scrolla.exe", "D:\\path", Nothing, lngProcessID2
   End With
   
   .ExecNotificationQuery( _
      "SELECT * FROM __InstanceDeletionEvent WITHIN 1 " & _
      "WHERE TargetInstance ISA 'Win32_Process' AND " & _
      "TargetInstance.ProcessID = '" & CStr(lngProcessID1) & "'").NextEvent
   
   On Error Resume Next
   .Get("Win32_Process.Handle='" & CStr(lngProcessID2) & "'").Terminate
   On Error Goto 0
End With

WScript.Quit 0



p.s.: mf-zl, от вас жду по возможности фикса трёх вышеописанных багов.
Back to top
View user's profile Send private message
mf-zl



Joined: 21 Aug 2005
Posts: 71
Location: BLR

Post (Separately) Posted: Mon Oct 12, 2009 08:08    Post subject: Reply with quote

Code:
#SingleInstance force

; Держи и тести, остальные вопросы на мыло zl[at]mail.by там хоть за албанский в лицо не плюют >_<

; Запуск приложения
Run, TOTALCMD.EXE

; Ожидание открытия окна
WinWait, ahk_class TTOTAL_CMD

; Запуск таймера для проверки существования процесса
SetTimer, CheckTC, On

WheelUp::
WheelDown::
  MouseGetPos, MouseX, MouseY, WinID, ControlNN, 1
  WinGetClass, WinClass, % "ahk_id " WinID

  ; Прокрутка колесом мыши вкладок TC
  If (WinClass = "TTOTAL_CMD" && RegExMatch(ControlNN, "TMyTabControl[12]"))
  { PostMessage, 1075, % TC_Cmd := "400" (ControlNN = "TMyTabControl1" ? "1" : "2"), 0,, % "ahk_class " WinClass
    PostMessage, 1075, % TC_Cmd := "300" (A_ThisHotkey = "WheelDown" ? "5" : "6"), 0,, % "ahk_class " WinClass
  }

  ; Прокрутка окна под курсором мыши без активации
  Else, PostMessage 0x20A, ((A_ThisHotKey="WheelUp")-.5)*A_EventInfo*(120<<17),(MouseY<<16)|MouseX, % ControlNN, % "ahk_id " WinID
Return

CheckTC:
  Process, Exist, TOTALCMD.EXE
  If !ErrorLevel
    ExitApp
Return
Back to top
View user's profile Send private message
amzoom



Joined: 07 Oct 2009
Posts: 44

Post (Separately) Posted: Mon Oct 12, 2009 22:05    Post subject: Reply with quote

На почту отписал, но ответа не получил, потому подумал что может быть не дошло, так что дублирую тут (с мелким дополнением):

Привет, попробовал я твой скрипт последней версии, но вот одно но: из
всех трёх багов предыдущей версии были пофиксены все три, но появился
один новый:

Теперь, если окно фокса не активно, то для него не работает прокрутка:
ни содержимого таба, ни самих табов (хотя у меня стоит дополнение
которое добавляет возможность скроллить табы. Кстати о нём: в
принципе, если твой скрипт позволит отказаться от этого дополнения - я буду только рад).

И ещё добавь по-возможности нужную строку в код, чтобы значёк скрипта не висел в трее: он мне там не нужен.

И ещё раз: спасибо тебе огромное за твой труд! :)
Как же приятно стало работать за компом с твоим скриптом и с каждым
его обновлением становится всё удобней и удобней!)

+ ещё заметил, что в контейнере TabSRMM моей миранды табы тоже перестали скроллиться колесом мыши, даже будучи активным окном.
Back to top
View user's profile Send private message
amzoom



Joined: 07 Oct 2009
Posts: 44

Post (Separately) Posted: Fri Oct 16, 2009 02:30    Post subject: Reply with quote

посоветовали замечательную прожку, которая делает всё, что я хочу.
Можно ли как-то написать AHK-скрипт, который бы работал ТОЛЬКО в тотале и не блочил остального?

требования те же: скроллить табы в тотале, без принудительной активации левой или правой панели, если она неактивна.
Back to top
View user's profile Send private message
amzoom



Joined: 07 Oct 2009
Posts: 44

Post (Separately) Posted: Sat Oct 24, 2009 01:00    Post subject: Reply with quote

ответ на мой же предыдущий вопрос я получил на буржуйском форуме: http://ghisler.ch/board/viewtopic.php?p=189160#189160
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы All times are GMT + 4 Hours
Goto page Previous  1, 2
Page 2 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group