View previous topic :: View next topic |
Author |
Message |
mf-zl

Joined: 21 Aug 2005 Posts: 71 Location: BLR
|
(Separately) Posted: Sat Oct 10, 2009 08:49 Post subject: |
|
|
amzoom wrote: | скрипт конфликтует с другим скриптом |
в чём ? |
|
Back to top |
|
 |
amzoom
Joined: 07 Oct 2009 Posts: 44
|
(Separately) Posted: Sun Oct 11, 2009 17:08 Post subject: |
|
|
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) |
Твой скрипт перестаёт работать при использовании того скрипта :( |
|
Back to top |
|
 |
amzoom
Joined: 07 Oct 2009 Posts: 44
|
(Separately) Posted: Mon Oct 12, 2009 00:04 Post subject: |
|
|
а кстати, вот у меня такой вопрос: а можно ли как-то в скрипте указать, что он должен закрываться, если не обнаружен процесс тоталкоммандера (т.е. он не запущен)?
а то в принципе то я могу написать батник который бы запускал этот скрипт и тотал коммандер, и использовать этот батник просто как ярлык для тотала, но ведь при выгрузке тотала процесс скрипта будет всё ещё висеть в памяти... |
|
Back to top |
|
 |
mf-zl

Joined: 21 Aug 2005 Posts: 71 Location: BLR
|
(Separately) Posted: Mon Oct 12, 2009 00:49 Post subject: |
|
|
Ой сорь очепятко (
вместо:
Code: | A_ThisHotkey = "WheelDown" ? "+" : "") "{TAB} |
поставь:
Code: | A_ThisHotkey = "WheelDown" ? "" : "+") "{TAB} |
я имел ввиду просто поменять плюсы местами ) |
|
Back to top |
|
 |
mf-zl

Joined: 21 Aug 2005 Posts: 71 Location: BLR
|
(Separately) Posted: Mon Oct 12, 2009 01:22 Post subject: |
|
|
А так ?
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 |
|
 |
amzoom
Joined: 07 Oct 2009 Posts: 44
|
(Separately) Posted: Mon Oct 12, 2009 01:49 Post subject: |
|
|
а так уже интересней.
минусы данного скрипта:
1. он не работает для табов если окно тотала является неактивным. (Хотя работает для прокрутки содержимого таба в тотале)
2. если тотал активный, то не работает прокрутка для всех остальных приложений (например Фаерфокс или окно проводника)
3. если в тотале активна левая панель, а курсор находится под правой, то прокручивается не правая, как должно бы быть, а левая.
Но повторюсь - скрипт становится значительно интересней и юзабельней, спасибо за твой труд. |
|
Back to top |
|
 |
amzoom
Joined: 07 Oct 2009 Posts: 44
|
(Separately) Posted: Mon Oct 12, 2009 03:59 Post subject: |
|
|
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 |
|
 |
mf-zl

Joined: 21 Aug 2005 Posts: 71 Location: BLR
|
(Separately) Posted: Mon Oct 12, 2009 08:08 Post subject: |
|
|
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 |
|
 |
amzoom
Joined: 07 Oct 2009 Posts: 44
|
(Separately) Posted: Mon Oct 12, 2009 22:05 Post subject: |
|
|
На почту отписал, но ответа не получил, потому подумал что может быть не дошло, так что дублирую тут (с мелким дополнением):
Привет, попробовал я твой скрипт последней версии, но вот одно но: из
всех трёх багов предыдущей версии были пофиксены все три, но появился
один новый:
Теперь, если окно фокса не активно, то для него не работает прокрутка:
ни содержимого таба, ни самих табов (хотя у меня стоит дополнение
которое добавляет возможность скроллить табы. Кстати о нём: в
принципе, если твой скрипт позволит отказаться от этого дополнения - я буду только рад).
И ещё добавь по-возможности нужную строку в код, чтобы значёк скрипта не висел в трее: он мне там не нужен.
И ещё раз: спасибо тебе огромное за твой труд! :)
Как же приятно стало работать за компом с твоим скриптом и с каждым
его обновлением становится всё удобней и удобней!)
+ ещё заметил, что в контейнере TabSRMM моей миранды табы тоже перестали скроллиться колесом мыши, даже будучи активным окном. |
|
Back to top |
|
 |
amzoom
Joined: 07 Oct 2009 Posts: 44
|
(Separately) Posted: Fri Oct 16, 2009 02:30 Post subject: |
|
|
посоветовали замечательную прожку, которая делает всё, что я хочу.
Можно ли как-то написать AHK-скрипт, который бы работал ТОЛЬКО в тотале и не блочил остального?
требования те же: скроллить табы в тотале, без принудительной активации левой или правой панели, если она неактивна. |
|
Back to top |
|
 |
amzoom
Joined: 07 Oct 2009 Posts: 44
|
|
Back to top |
|
 |
|
|
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
|