Guest User

疑似Navigate Lock

a guest
May 19th, 2020
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.69 KB | None | 0 0
  1. ;----------------------------------------------------------------------------------------------------
  2. ;疑似Navigate Lock
  3.  
  4. ;※ブラウザ上に於いて指アイコン状態なら全てに適用されるためリンク以外でもホイールクリックしてしまう欠点あり
  5. ;※このスクリプトは十分検証していないためリンク上でも誤動作する可能性があるので使う時は自己責任で
  6.  
  7. ;win10 pro 64bit presto opera 及び vivaldi(chromium系) 及び firefox で動作確認
  8.  
  9. ;例として[ctrl]+q押下で疑似Navigate Lockモード、もう一度押下でモード解除
  10. ;windows10 pro 64bit opera 12.18 64bit で動作確認
  11. ;リンク 65567がNGなら65581を試してみる
  12. ;----------------------------------------------------------------------------------------------------
  13.  
  14. #UseHook
  15.  
  16. tip_on := 0
  17.  
  18. SetTimer, kansi, 300 ;監視間隔調整可能(デフォは300ms間隔)
  19. return
  20.  
  21. ;opera 及び vivaldi 及び firefoxがアクティブな時
  22. #If WinActive("ahk_class OperaWindowClass")
  23. || WinActive("ahk_class Chrome_WidgetWin_1")
  24. || WinActive("ahk_class MozillaWindowClass")
  25. ^q:: ;モード切替ホットキーはここで変更可能(デフォは[ctrl]+q)
  26. nav_lock := ! nav_lock
  27. if (nav_lock) {
  28. ToolTip, Navigate Lock, 0, 0 ;画面左上に「Navigate Lock」のツールチップ表示
  29. tip_on := 1
  30. } else {
  31. ToolTip,
  32. tip_on := 0
  33. }
  34. return
  35. #If
  36.  
  37. ;opera 及び vivaldi 及び firefoxがアクティブでNavigate Lockモード且つマウス直下がリンク(指アイコン)なら
  38. #If (Winactive("ahk_class OperaWindowClass")
  39. || WinActive("ahk_class Chrome_WidgetWin_1")
  40. || WinActive("ahk_class MozillaWindowClass"))
  41. && (nav_lock && RL_GetCursor() = 65567)
  42. LButton::Send, {MButton} ;中(ホイール)クリック
  43. #If
  44.  
  45. ;Navigate Lockモードになってる場合
  46. ;opera 及び vivaldi 及び firefoxが非アクティブならツールチップ非表示にしアクティブになったら表示させる
  47. kansi:
  48. if (nav_lock) {
  49. if Winactive("ahk_class OperaWindowClass")
  50. || WinActive("ahk_class Chrome_WidgetWin_1")
  51. || WinActive("ahk_class MozillaWindowClass") {
  52. if (tip_on = 0) {
  53. ToolTip, Navigate Lock, 0, 0
  54. tip_on := 1
  55. }
  56. } else if ! (Winactive("ahk_class OperaWindowClass")
  57. || WinActive("ahk_class Chrome_WidgetWin_1")
  58. || WinActive("ahk_class MozillaWindowClass")) {
  59. if (tip_on = 1) {
  60. ToolTip,
  61. tip_on := 0
  62. }
  63. }
  64. }
  65. return
  66.  
  67. RL_GetCursor() { ;MGLより拝借した関数
  68. VarSetCapacity(infCur, 16+A_PtrSize, 0)
  69. NumPut(16+A_PtrSize, infCur, 0, "UInt")
  70. DllCall("GetCursorInfo", "Ptr",&infCur)
  71. hCursor := NumGet(infCur, 8, "Ptr")
  72. return hCursor
  73. }
Add Comment
Please, Sign In to add comment