Тема: AHK: Коллекция скриптов для комфортной работы в одном
Здравствуйте!
Ревниво хочу предложить прописавшийся в моей автозагрузке скрипт. Немало здесь надёрганного, но есть также вещи "совершенно оригинальные".
|-------------------------------------------------------------------------------------------------
| КЛАВИШИ АКТИВЕН ЭФФЕКТ
|------------------------------------------------------------------------------------------------
| Средняя кнопка мыши закрыть окно, удерживаемая - меню
|-------------------------------------------------------------------------------------------------
| Левая + Правая мышь Проводники,IExplorer,Справка, вперед
| Правая + Левая мышь Mozilla,Opera,AvantBrowser назад
|-------------------------------------------------------------------------------------------------
| F1 Opera Сохранить как HTML-файл
| F2 Opera Сохранить как HTML-файл с избражениями
| в папка-со-скриптом\Web_Save
|-------------------------------------------------------------------------------------------------
| Правая мышь + IExplorer,Справка,AvantBrowser, Поиск
| Средняя кнопка мыши MSOfficeWord,RegEdit,Opera
|-------------------------------------------------------------------------------------------------
| Alt + Буква диска Трей Копирование дисков (в скрытую папку
| (ADEFGHIJKLMN) папка-со-скриптом\Pack\)
|-------------------------------------------------------------------------------------------------
| Ctrl + Буква диска Трей Копирование по расширению(стоит txt)
|-------------------------------------------------------------------------------------------------
| Alt + Escape Трей Остановка копирования
|------------------------------------------------------------------------------------------------
| etc. Основные - в Справке (в трее).
Будьте внимательны с горячими клавишами, ибо можно обжечься.
(Форум не поддерживает сообщений больше 64-х kb, поэтому желающим его пользовать придется объединить в один ahk три нижеследующих кода).
;
my_folder = %A_ScriptDir%\Web_Save
;----------/1myTips=====================================================
CoordMode,Mouse,Screen
;ToolTipOptions:="B0000FF F00FF00 t200 I1 M1"
ToolTipOptions:="t240 I1 M1"
;----------1myTips/=====================================================
;!!Копирование/перемещение <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;---------------------- USER CONFIGURATION SECTION STARTS --------------------
; CONFIG: CHOOSE DIRECTORY TO HOLD SHORTCUTS
; Set the following variable to the folder name to hold all your shortcuts.
; It will be created if it does not exist. The suggested place is
; %HOMEPATH%\My Documents\Favorites for easy access from other apps.
reference_to = ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}
f_quick_fldr = #Quick#
f_system_fldr = #System#
f_shortcuts_folder = %A_ScriptDir%\Favorites
QuickRunMenu = %f_shortcuts_folder%\QMenu.ini
f_myquick_folder = %A_ScriptDir%\Favorites\%f_quick_fldr%
f_mysystem_folder = %A_ScriptDir%\Favorites\%f_system_fldr%
f_quicklnk = %A_ScriptDir%\Favorites\%f_quick_fldr%\*.lnk
f_systemlnk = %A_ScriptDir%\Favorites\%f_system_fldr%\*.lnk
; CONFIG: CHOOSE RELOADING
; Set the following variable to 'y' to always reload the menu and 'n' to
; disable automatic reloading. Keep this 'y' unless you have a really
; long list, because it harldy takes any time to load. But if you
; don't change your list very often, then you may want to keep it 'n'.
; Enter y or n
f_AlwaysReload = y
; CONFIG: CHOOSE WHEN TO SHOW THE MENU
; Setting the following variable to 'n' tells the script to avoid showing
; the menu for unsupported window types.
; Setting the following variable to 'y' tells the script to always
; display the menu; and upon selecting a favorite while an unsupported
; window type is active, the default action will be performed on the
; selected shortcut. Enter y or n
f_AlwaysShowMenu = y
; CONFIG: CHOOSE YOUR HOTKEYS
; If your mouse has more than 3 buttons, you could try using
; XButton1 (the 4th) or XButton2 (the 5th) instead of MButton.
; You could also use a modified mouse button (such as ^MButton) or
; a keyboard hotkey. In the case of MButton, the tilde (~) prefix
; is used so that MButton's normal functionality is not lost when
; you click in other window types, such as a browser.
f_Hotkey1 = ^+vk44 ; Control+Shift+d [~MButton]
;Also define a keyboard shortcut to the menu
;f_Hotkey2 = ^+vk44 ; Control+Shift+d
;Also define a keyboard shortcut to the menu
f_CopyHotkey = !vkBD ; ^+vk43 ; Control+Shift+c
f_MoveHotkey = !vkBD ; ^+vk4D ; Control+Shift+m
f_QuickCopyHotkey = !vk39 ; Alt+(
f_QuickMoveHotkey = !vk30 ; Alt+)
;-------------------- END OF CONFIGURATION SECTION ------------------------
; Do not make changes below this point unless you want to change
; the basic functionality of the script.
;#NoTrayIcon
;#SingleInstance Force ; Needed since the Hotkey is dynamically created.
Hotkey, %f_Hotkey1%, f_DisplayMenuForNavigation
;Hotkey, %f_Hotkey2%, f_DisplayMenuForNavigation
Hotkey, %f_CopyHotkey%, f_DisplayMenuForCopy
Hotkey, %f_MoveHotkey%, f_DisplayMenuForMove
Hotkey, %f_QuickCopyHotkey%, f_DisplayMenuForQuickCopy
Hotkey, %f_QuickMoveHotkey%, f_DisplayMenuForQuickMove
; global set to either Navigation=1, Copy=2, Move=3
CommandMode = 1
;GlobalFileList = ""
; Check if %f_shortcuts_folder% exists, if not - create
FileGetAttrib, attrib, %f_shortcuts_folder%\%f_quick_fldr%
FileGetAttrib, attrib, %f_shortcuts_folder%\%f_system_fldr%
IfNotInString, attrib, D
{
FileCreateDir, %f_shortcuts_folder%\%f_quick_fldr%
FileCreateDir, %f_shortcuts_folder%\%f_system_fldr%
If ErrorLevel
MsgBox, The folder %f_shortcuts_folder%\%f_quick_fldr% could not be created
. `nCheck that the 'f_shortcuts_folder' variable in the Config Section of the script is a valid path to a writable folder
. `nCannot save Favorites links.
}
IfNotExist, %f_quicklnk%
{
FileCreateShortcut %A_DESKTOP%, %f_myquick_folder%\Рабочий стол.lnk
}
IfNotExist, %f_systemlnk%
{
FileCreateShortcut %A_DESKTOP%, %f_mysystem_folder%\Рабочий стол.lnk
}
f_NotFirstTime =
;Return
;!!Копирование/перемещение >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;######################################################################################
;############################ /QuickRun_Group #########################################
;######################################################################################
;##
;##
menucount:=0 ;количество меню. впринципе можно вместо неё юзать LV_GetCount()
menutarget = ;массив назначений
menuicon = ;массив адресов иконок
menuname = ;массив имён
menuiconn = ;массив номеров иконок (для DLL и EXE)
xmenu:=100
ymenu:=100
rownumb:=0 ;в этой переменной всегда отображается элемент на котором установлен фокус
menutransp=220 ;прозрачность меню по умолчанию. если в файле её не найдёт, то будет такой
menucolor=333333 ;цвет меню по умолчанию
menucolor2=AAAAAA ;цвет текста по умолчанию
menucolor3=000000 ;цвет границы по умолчанию
;=============== загрузка =============
IfExist, %QuickRunMenu% ;открываем файл с настройками
FileRead, Contents, %QuickRunMenu%
Loop, parse, Contents, `n
{
if(A_Index<5) ;если это настройки цвета\прозрачности
{
menustr:=SubStr(A_LoopField,InStr(A_LoopField,"=")+1) ;вырезаем числа из строчек
menustr:=SubStr(menustr,1,InStr(menustr,"!")-1)
if A_Index = 1
{
if(Strlen(menustr)<4)
{
menutransp:=menustr
continue
}
}
if A_Index = 2
{
if(Strlen(menustr)=6)
{
menucolor:=menustr
continue
}
}
if A_Index = 3
{
if(Strlen(menustr)=6)
{
menucolor2:=menustr
continue
}
}
if A_Index = 4
{
if(Strlen(menustr)=6)
{
menucolor3:=menustr
continue
}
}
}
if A_LoopField!= ;загрузка элементов меню
{
filestring:=SubStr(A_LoopField,InStr(A_LoopField,"*")+1)
filestring:=SubStr(filestring,1,InStr(filestring,"!")-1)
menuiconn%menucount% = %filestring%
filest:=SubStr(A_LoopField,1,InStr(A_LoopField,"*")-1)
filestring:=SubStr(filest,InStr(filest,";")+1)
menuicon%menucount% = %filestring%
filest:=SubStr(filest,1,InStr(filest,";")-1)
filestring:=SubStr(filest,InStr(filest,"|")+1)
menutarget%menucount% = %filestring%
filest:=SubStr(filest,1,InStr(filest,"|")-1)
menuname%menucount% = %filest%
;MsgBox % menuname%menucount% . "`n" . menutarget%menucount% . "`n" . menuicon%menucount% . "`n" . menuiconn%menucount%
menucount++
}
}
filest =
filestring =
Contents =
OnExit, MenuExit ;выход
;##
;##
;######################################################################################
;################################## QuickRun_Group/ ###################################
;######################################################################################
FileGetAttrib, attrib, %my_folder%
IfNotInString, attrib, D
{
FileCreateDir, %my_folder%
If ErrorLevel
MsgBox, The folder %my_folder% could not be created.
}
IfExist %A_ScriptDir%\fshk.ico
IconFile = %A_ScriptDir%\fshk.ico
Menu, Tray, Tip , Фишки
#Persistent
#SingleInstance Force
DetectHiddenWindows, on
#NoEnv
#MaxMem 1
#KeyHistory 0
SetWinDelay 10
SetKeyDelay, 1 ;!!было - SetKeyDelay 0 (не работает Convert_Case)
;SendMode Input ;!!не работает Convert_Case
SetBatchLines, -1 ; Выполнять на максимальной скорости.
Process, Priority,, HIGH ; Установить приоритет процесса скрипта в High (высокий).
;ИЗМЕНИТЬ СИСТЕМНУЮ ГРОМКОСТЬ С ПОМОЩЬЮ ПРАВАЯ КНОПКА+КОЛЕСИКО МЫШИ
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;#NoEnv
;#MaxMem 1
;#KeyHistory 0
;SetWinDelay 10
;SetKeyDelay 0
; set these values as desired
volume_indicatorWidth = 18
volume_indicatorHeight = 350
volume_step = 8
volume_displayTime = 2000
c_masterVol = Red
c_waveVol = Blue
c_synthVol = Yellow
c_microphoneVol = Green
c_background = Black
; and set these hotkeys as desired
Hotkey,Volume_Up,vol_masterUp
Hotkey,Volume_Down,vol_masterDown
Hotkey,RButton & WheelUp,vol_masterUp
Hotkey,RButton & WheelDown,vol_masterDown
Hotkey,#WheelUp,vol_microphoneUp
Hotkey,#WheelDown,vol_microphoneDown
Hotkey,#vk4D,vol_microphoneMute ;m
;#===#===#===#===#===#===#===#===#===#===#===#===#===#===#
SoundSet,15,master ; при запуске уменьшает общую громкость
SoundSet,15,wave
SoundSet,15,synth ; Synth/Midi
;#===#===#===#===#===#===#===#===#===#===#===#===#===#===#
;ИЗМЕНИТЬ СИСТЕМНУЮ ГРОМКОСТЬ С ПОМОЩЬЮ ПРАВАЯ КНОПКА+КОЛЕСИКО МЫШИ
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;********************************************************************************
moveable_title = _MOVEABLE_
SkyNet_Path = E:\SkyNET\ok\jpg\_MOVEABLE_
;********************************************************************************
/*
Menu, Tmbs, Add, Эскизы Имя, eskizy_imya
Menu, Tmbs, Add, •Эскизы Изменен, eskizy_izmenen
Menu, Tmbs, Add, Плитка Имя, plitka_imya
Menu, Tmbs, Add, •Значки Тип, znachki_tip
Menu, Tmbs, Add, Таблица Имя, tablica_imya
Menu, Tmbs, Add
Menu, Tmbs, Add, Размеры, razmery
*/
Menu, Cmds, Add, Вырезать, cut
Menu, Cmds, Add, Выделить всё + Вырезать, selectAllCut
Menu, Cmds, Add, Выделить вниз + Вырезать, selectDownCut
Menu, Cmds, Add
Menu, Cmds, Add, Эскизы страниц, My_Thumbnail_Quality
Menu, Cmds, Add
Menu, Cmds, Add, Переключить скрытые %a_tab%Ctrl+Shift+H, CheckActiveWindow
Menu, Cmds, Add, Переключить системные %a_tab%Ctrl+Shift+HH, Check_SuperHidden
Menu, Cmds, Add, Удалить пустые подпапки %a_tab%Win+Del, f_DeleteEmptyFldrs
Menu, Cmds, Add, Группирование файлов по расширению %a_tab%Ctrl+E, f_ExtGroup
;Menu, Cmds, Add, Переместить ВЫДЕЛЕННЫЕ объекты в папку вида #GroupNN, GroupSelectedFiles
;Menu, Cmds, Add, Перенести объекты ИЗ ВЫДЕЛЕННЫХ папок уровнем выше, UngroupSelectedFoldersFiles
;Menu, Cmds, Add, Переместить все файлы ИЗ ВЫДЕЛЕННЫХ папок в текущую, UngroupSelectedFiles
Menu, Cmds, Add, Переместить все файлы ИЗ ПОДПАПОК в текущую %a_tab%C+S+W+A+g, MvFlsFrmSbdrs
Menu, Cmds, Add, Конвертер регистров %a_tab%Ctrl+Shift+Alt+R, Convert_Case
Menu, Cmds, Add, Поиск-извлечение архивов %a_tab%Ctrl+Shift+Alt+E, Find_Extract_Arch
Menu, Cmds, Add, Изменение атрибутов %a_tab%Ctrl+Shift+Alt+A, Attributizer
Menu, Cmds, Add, Копировать путь к выделенному объекту/объектам %a_tab%Win+Shift+C, f_CopyPath
Menu, Cmds, Add, Найти объект... %a_tab%Win+1, f_FindObject
Menu, Cmds, Add, Открыть содержащую объект папку %a_tab%Win+11, f_OpenObject
Menu, Cmds, Add, Открыть путь %a_tab%Win+Shift+CC, f_OpenClipboardPath
Menu, Cmds, Add, Текущее время, f_CurrentTime
Menu, Cmds, Add, Navigation Menu, f_DisplayMenuForNavigation
Menu, Cmds, Add
Menu, Cmds, Add, Таймер на перезагрузку, restart_timer
Menu, Cmds, Add, Таймер на отключение, shutdown_timer
Menu, Popup, Add, Свернуть, mnmz
Menu, Popup, Add
Menu, Popup, Add, • Home, home
Menu, Popup, Add, • End, end
Menu, Popup, Add
Menu, Popup, Add, Выделить вверх, shifthome
Menu, Popup, Add, Выделить вниз, shiftend
Menu, Popup, Add
Menu, Popup, Add, Обратить выделение, turn
Menu, Popup, Add
Menu, Popup, Add, Команды, :Cmds
Menu, Popup, Add
Menu, Popup, Add, My tray menu, TrayMenuShow
;Menu, Popup, color, 0xFFFFFF
Menu, sub_Tray_Sys, Add, Диски, MyComputer
Menu, sub_Tray_Sys, Add, Документы, MyDocuments
Menu, sub_Tray_Sys, Add, Рабочий стол, desk_Top
Menu, sub_Tray_Sys, Add, Автозагрузка, start_Up
Menu, sub_Tray_Sys, Add, Свойства экрана, Screen
Menu, sub_Tray_Sys, Add, Панель управления, Panel
Menu, sub_Tray_Sys, Add, SendTo, send_To
Menu, sub_Tray_Sys, Add, System, systemFld
Menu, sub_Tray_Sys, Add, System32, system32Fld
Menu, sub_Tray_Sys, Add, Local Settings, Local_Settings
Menu, sub_Tray_Sys, Add, Program Files, ProgramFiles
IfExist, D:\Program Files, Menu, sub_Tray_Sys, Add, D:\Program Files, DProgramFiles
IfExist, E:\Program Files, Menu, sub_Tray_Sys, Add, E:\Program Files, EProgramFiles
IfExist, F:\Program Files, Menu, sub_Tray_Sys, Add, F:\Program Files, FProgramFiles
IfExist, G:\Program Files, Menu, sub_Tray_Sys, Add, G:\Program Files, GProgramFiles
IfExist, H:\Program Files, Menu, sub_Tray_Sys, Add, H:\Program Files, HProgramFiles
EnvGet, USERPROFILE, USERPROFILE ; получаем значение переменной окружения
IfExist, %USERPROFILE%\Local Settings\Application Data\Opera\Opera, Menu, sub_Tray_Sys, Add, AppData\Opera, App_Data_Opera
Menu, sub_Tray_Sys, Add, Центр справки и поддержки, services
Menu, sub_Tray_Prg, Add, Paint, Paint
Menu, sub_Tray_Prg, Add, Звукозапись, Sndrec32
Menu, sub_Tray_Prg, Add, Реестр, Registry
Menu, sub_Tray_Prg, Add, Таблица символов, Char_map
Menu, sub_Tray_Prg, Add, Command Prompt, Command_Prompt
Menu, sub_Tray_Prg, Add, Command Prompt Here, Command_Prompt_Here
Menu, Tray, Icon, %IconFile%
Menu, Tray, NoStandard
Menu, Tray, Add, &Выключить звук, Vol_Mute
; ================ / Autorun ==============================================
;Поместить запущенный скрипт в автозагрузку (в папку "Автозагрузка" или в реестр в раздел HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run текущего пользователя), или убрать его из автозагрузки. Вариант автозагрузки определяется состоянием строки (закомментируйте):
RegistryMode = Yes ; comment out this line to set Startup Folder mode
AutorunMenuItemName = Автозагрузка
if RegistryMode
SK = Software\Microsoft\Windows\CurrentVersion\Run ; Registry SubKey name
else
{
SF = %A_Startup% ; Startup Folder - you may choose A_StartupCommon
LF = %SF%\%A_ScriptName%.lnk ; LinkFile
}
Menu Tray, Add, %AutorunMenuItemName%, AutorunSetup
AutorunSetup:
if AutorunInit
{
if AutorunOn
{
if RegistryMode
RegDelete HKCU, %SK%, %A_ScriptName%
else
FileDelete %LF%
AutorunOn := ErrorLevel
if !AutorunOn
Menu Tray, Uncheck, %AutorunMenuItemName%
Return
} ; else
if RegistryMode
RegWrite REG_SZ, HKCU, %SK%, %A_ScriptName%, %A_ScriptFullPath%
else
FileCreateShortcut %A_ScriptFullPath%, %LF%, %A_ScriptDir%
AutorunOn := !ErrorLevel
if AutorunOn
Menu Tray, Check, %AutorunMenuItemName%
Return
}
AutorunInit = Yes
if RegistryMode
RegRead SPath, HKCU, %SK%, %A_ScriptName%
else
FileGetShortcut %LF%, SPath
AutorunOn := !ErrorLevel
if AutorunOn
{
IfNotEqual SPath, A_ScriptFullPath
{ ; update record in case of the script file was moved
if RegistryMode
RegWrite, REG_SZ, HKCU, %SK%, %A_ScriptName%, %A_ScriptFullPath%
else
FileCreateShortcut %A_ScriptFullPath%, %LF%, %A_ScriptDir%
AutorunOn := !ErrorLevel
}
if AutorunOn
Menu Tray, Check, %AutorunMenuItemName%
}
; ================ Autorun / ================================================
Menu, Tray, Add, Системные, :sub_Tray_Sys
Menu, Tray, Add, Программы, :sub_Tray_Prg
Menu, Tray, Add, System Info, SysInfo
Menu, Tray, Add
Menu, Tray, Add, Справка, myHelp
;Menu, Tray, Add, Help2, myHelp2
Menu, Tray, Add, Edit Script, EditScript
Menu, Tray, Add, Script Dir, ScriptDir
Menu, Tray, Add, BackUp Script, BackUpScript
Menu, Tray, Add, Reload Script, ReloadMyApp
Menu, Tray, Add, Pause Script, PauseMyApp
Menu, Tray, Add, Выход, ExitMyApp
Menu, TRAY, Default, &Выключить звук
Menu, Tray, Click, 1
;_____________________________________________________________________________
;| |
;| Контекстно чувствительные клики |
;|____________________________________________________________________________|
;1\
SetTitleMatchMode, 2 ; сравнивать с любой частью заголовка окна
GroupAdd, 1Mouse_Group, ahk_class CabinetWClass ; добавляем в мышиную группу окон Проводник
GroupAdd, 1Mouse_Group, ahk_class ExploreWClass ; Проводник
GroupAdd, 1Mouse_Group, Internet Explorer ahk_class IEFrame ; Internet Explorer
GroupAdd, 1Mouse_Group, ahk_class HH Parent ; справку (chm)
GroupAdd, 1Mouse_Group, ahk_class MozillaUIWindowClass ; Mozilla
;1/
;2\
GroupAdd, 2Mouse_Group, Internet Explorer ahk_class IEFrame
GroupAdd, 2Mouse_Group, ahk_class HH Parent
GroupAdd, 2Mouse_Group, ahk_class TfrmAvantBrowser.UnicodeClass ; Avant Browser
;2/
;3\
GroupAdd, 3Mouse_Group, ahk_class CabinetWClass
GroupAdd, 3Mouse_Group, ahk_class ExploreWClass
GroupAdd, 3Mouse_Group, ahk_class Progman
GroupAdd, 3Mouse_Group, ahk_class #32770
;3/
GroupAdd, Dialog, ahk_class #32770
GroupAdd, 1ACDSee, ahk_class QVMainFrame-ACDSEE90
GroupAdd, 1ACDSee, ahk_class AfxFrameOrView70
GroupAdd, 1ACDSee, ahk_class QVMainFrame-ACDSeePro30
;4\
GroupAdd, 4Mouse_Group, ahk_class OpWindow ; Opera
GroupAdd, 4Mouse_Group, ahk_class TfrmAvantBrowser.UnicodeClass
;4/
GroupAdd, QuickRun_Group, ahk_class Progman
GroupAdd, QuickRun_Group, ahk_class AutoHotkeyGUI
GroupAdd, QuickRun_Group, ahk_class Shell_TrayWnd
GroupAdd, QuickRun_Group, ahk_class BaseBar
;1\
#IfWinActive, ahk_group 1Mouse_Group ; делаем наши клавиши активными только в каком-либо окне из нашей группы
~LButton & RButton:: Send, {BROWSER_FORWARD} ; !{Right}"вперед" (здесь есть тильда, поэтому левая мышь не блокируется для других приложений)
RButton & LButton:: Send, {BROWSER_BACK} ; !{Left}"назад" (здесь тильды нет, поэтому правая мышь блокируется)
;$RButton:: Send, {RButton} ; нажимать RButton всегда, кроме тех случаев, когда она используется в горячих клавишах (здесь мы разблокируем правую мышь)
RETURN
;1/
;2\
#IfWinActive, ahk_group 2Mouse_Group
RButton & MButton::
Send, ^{vk46} ;Ctrl+F
WinWait, ahk_class Internet Explorer_TridentDlgFrame
WinActivate, ahk_class Internet Explorer_TridentDlgFrame
Send, ^{vk56} ;Ctrl+V
RETURN
;2/
;/ACDSee;ACDSee;ACDSee;ACDSee;ACDSee;ACDSee;ACDSee
#IfWinActive, ahk_group 1ACDSee
RButton & MButton::
Send, {DEL}
WinWait, Подтверждение удаления
Send, {Space}
Send, {Left}
~LButton & RButton:: Send, {Right}
RButton & LButton:: Send, {Left}
RETURN
RButton & WheelUp::
Send, {NumpadAdd}
RETURN
RButton & WheelDown::
Send, {NumpadSub}
RETURN
NumpadEnter::
Send, {Right}
RETURN
^AppsKey::
Run, %A_ScriptDir%\SmartMover.ahk
RETURN
;ACDSee;ACDSee;ACDSee;ACDSee;ACDSee;ACDSee;ACDSee/
#IfWinActive, DjVu Viewer --
WheelUp:: PostMessage, 0x111, 40110, 0,,, ; previous
WheelDown:: PostMessage, 0x111, 40109, 0,,, ; next
RETURN
#IfWinActive, ahk_class OpusApp ;Micr.Word
RButton & MButton::
Send, ^{vk46} ;Ctrl+F
Sleep, 500
Send, ^{vk56} ;Ctrl+V
RETURN
#IfWinActive, ahk_class MozillaUIWindowClass
RButton & MButton::
Send, ^{vk46} ;Ctrl+F
Sleep, 500
Send, ^{vk56} ;Ctrl+V
RETURN
;3\
#IfWinActive, ahk_group 3Mouse_Group
!vk4D:: ; Alt+M
Run, %A_ScriptDir%\MoveSelectedFls&Drs2.ahk
RETURN
;3/
;4\
#IfWinActive, ahk_group 4Mouse_Group ; делаем наши клавиши активными только в каком-либо окне из нашей группы
~LButton & RButton:: Send, !{Right} ; "вперед" (здесь есть тильда, поэтому левая мышь не блокируется для других приложений)
RButton & LButton:: Send, !{Left} ; "назад" (здесь тильды нет, поэтому правая мышь блокируется)
;$RButton:: Send, {RButton} ; нажимать RButton всегда, кроме тех случаев, когда она используется в горячих клавишах (здесь мы разблокируем правую мышь)
RETURN
RButton & MButton::
Send, ^{vk46} ;Ctrl+F
WinWait, Поиск
WinActivate, Поиск
Send, ^{vk56} ;Ctrl+V
RETURN
;4/
#IfWinActive, ahk_class Shell_TrayWnd
MButton:: Send, !{esc}, !{F4}
RETURN
#IfWinActive, ahk_class WinRarWindow
RButton & MButton:: Send, ^{vk48} ; Ctrl+H Одноуровневый вид папок в WinRar
RButton & LButton:: Send, {Backspace}
;$RButton:: Send, {RButton}
RETURN
#IfWinActive, ahk_class MSPaintApp ; Рисунок->Очистить в Paint
RButton & MButton:: PostMessage, 0x111, 37684, 0,,,
;$RButton:: Send, {RButton}
RETURN
#IfWinActive, ahk_class Bred3Class
RButton & MButton:: PostMessage, 0x111, 13001, 0,,, ; Поиск->Найти в Bred
RButton & LButton:: Send, ^{vk48} ; Поиск->Заменить в Bred
;$RButton:: Send, {RButton}
RETURN
#IfWinActive, ahk_class Notepad++
RButton & MButton:: Send, ^{vk46} ; Поиск->Найти в Notepad++
;$RButton:: Send, {RButton}
RETURN
#IfWinActive, ahk_class RegEdit_RegEdit
RButton & MButton:: ; Найти в RegEdit
Send, ^{vk46} ;Ctrl+F
WinWait, Поиск
WinActivate, Поиск
Send, ^{vk56} ;Ctrl+V
RETURN
#IfWinActive, ahk_class TTOTAL_CMD
RButton & MButton:: Send, ^{vk42} ; Ctrl+B Показать все файлы без подкаталогов в TC
~LButton & RButton:: Send, !{Right}
RButton & LButton:: Send, !{Left}
;$RButton:: Send, {RButton}
RETURN
#IfWinActive, ahk_group Dialog
RButton & LButton:: Send, {Backspace}
RETURN
;--------------------------- Opera --------------------------
#IfWinActive, ahk_group 4Mouse_Group
;HTML-файл
F1:: SaveAsHTM("Сохранить как", 1, 4) ;q !vk51
;HTML-файл с изображениями
F2:: SaveAsHTM("Сохранить как", 2, 4) ;s !vk53
#IfWinActive
;--------------------------- Функции -------------------------
SaveAsHTM(DlgTitle, HTM_line, TrimCount=0, IE=0)
{
Send, ^{vk53} ; Ctrl-S
WinWait, %DlgTitle%,, 3
if ErrorLevel
return
gosub, f_Open_My_Folder
Control, Choose, %HTM_line%, ComboBox3
Loop 30
{
ControlGet, Files, List,, SysListView321
if Files
Break
}
ControlGetText, FileName, Edit1
StringReplace, FileName, FileName, `\, `-, All
StringReplace, FileName, FileName, `/, `-, All
StringReplace, FileName, FileName, `|, `-, All
StringReplace, FileName, FileName, `*, `-, All
StringReplace, FileName, FileName, `:, `-, All
StringReplace, FileName, FileName, `.mht, `.htm, All
StringTrimRight, BaseName, FileName, %TrimCount%
Loop
{
if not InStr(Files, FileName)
Break
else
{
FileName:=BaseName . "_" . A_Index+1 . ".htm"
}
}
ControlSetText, Edit1, %FileName%
Sleep, 100
ControlSend, Button2, {Enter}
}
RETURN
f_Open_My_Folder:
IfNotExist, %my_folder%
{
tooltip = * Папка не найдена
gosub, f_Screen_ToolTip
Exit
}
WinGet, f_window_id, ID, A
WinActivate ahk_id %f_window_id%
ControlGetText, text, Edit1, ahk_id %f_window_id%
ControlSetText, Edit1, %my_folder%, ahk_id %f_window_id%
ControlSend, Edit1, {Enter}, ahk_id %f_window_id%
Sleep, 100 ; It needs extra time on some dialogs or in some cases.
ControlSetText, Edit1, %text%, ahk_id %f_window_id%
Return
;Изменить вид папок
#IfWinActive, ahk_group 3Mouse_Group
Menu, Tmbs, Show
RETURN
eskizy_imya:
PostMessage, 0x111, 28717,,, ahk_class CabinetWClass
PostMessage, 0x111, 30210,,, ahk_class CabinetWClass
RETURN
eskizy_izmenen:
PostMessage, 0x111, 28717,,, ahk_class CabinetWClass
PostMessage, 0x111, 30213,,, ahk_class CabinetWClass
RETURN
tablica_imya:
PostMessage, 0x111, 28716,,, ahk_class CabinetWClass
PostMessage, 0x111, 30210,,, ahk_class CabinetWClass
RETURN
plitka_imya:
PostMessage, 0x111, 28718,,, ahk_class CabinetWClass
PostMessage, 0x111, 30210,,, ahk_class CabinetWClass
RETURN
znachki_tip:
PostMessage, 0x111, 28714,,, ahk_class CabinetWClass
PostMessage, 0x111, 30212,,, ahk_class CabinetWClass
RETURN
razmery:
PostMessage, 0x111, 28716,,, ahk_class CabinetWClass
PostMessage, 0x111, 30211,,, ahk_class CabinetWClass
Sleep 1000
PostMessage, 0x111, 30236,,, ahk_class CabinetWClass
RETURN
#IfWinActive
;СОЗДАТЬ НОВУЮ ПАПКУ ПРАВАЯ МЫШЬ + БАРАБАН
#IfWinActive, ahk_group 3Mouse_Group
~LButton & MButton::
KeyWait Control
SetKeyDelay, , 50
MouseGetPos, , , , ctrl
ControlGet, sel, List, Count Selected, SysListView321, A
If DllCall("GetDoubleClickTime") > A_TimeSincePriorHotkey
and A_ThisHotkey = A_PriorHotkey
and ctrl = "SysListView321"
and sel = 0
SendEvent, !fwf
IfWinActive, ahk_class Progman
strProcessName := A_DESKTOP
else
ControlGetText, strProcessName, Edit1, ahk_class CabinetWClass
; ========== ПРОГРАММА СОДАНИЯ ПАПОК\
;WinGet, intHWND, ID, A ;Отыскивает уникальный логин указанного окна, логин процесса, название{имя} процесса, или список его управлений. Это может также отыскать список всех окон, соответствующих указанным критериям.
;WinGet, strProcessName, ProcessName, ahk_id %intHWND%
;(здесь, сравнивает две переменные (например var и value), анологично выражению if var = value
;IfEqual, strProcessName, explorer.exe
;{
IfExist, %strProcessName%
{
Loop
{
If A_Index = 1
strFolder = #NewFolder
Else
strFolder = #NewFolder(%A_Index%)
IfNotExist, %strProcessName%\%strFolder%
Break
}
IfNotEqual, strFolder,
IfNotExist, %strProcessName%\%strFolder%
{
FileCreateDir, %strProcessName%\%strFolder%
;tooltip = * Была создана папка [%strFolder%] в `n[%strProcessName%]
;gosub, f_Screen_ToolTip
}
}
;}
RETURN
; ========== ПРОГРАММА СОДАНИЯ ПАПОК/
#IfWinActive
#IfWinActive, ahk_class MediaPlayerClassicW ; K-Lite Codec Pack
Right:: Send, !{PgUp}
Left:: Send, !{PgDn}
~LButton & RButton:: Send, ^{Right}{Space}
RButton & LButton:: Send, ^{Left}
RETURN
#IfWinActive, ahk_class ShImgVw:CPreviewWnd ; Программа просмотра изображений и факсов
RButton & MButton::
Send, {DEL}
WinWait, Подтверждение удаления
Send, {Space}
Send, {Left}
~LButton & RButton:: Send, {Right}
RButton & LButton:: Send, {Left}
RETURN
^AppsKey::
Run, %A_ScriptDir%\SmartMover.ahk
RETURN
RButton & WheelUp::
Sleep, 150
Send, {Left}
RETURN
RButton & WheelDown::
Sleep, 150
Send, {Right}
RETURN
;___________________________________________________________________________
;************ Скрипт для группирования/разгруппирования файлов в проводнике.
; Устанавливает две горячие клавиши:
; Ctrl+G - Переносит выделенные файлы в папку вида GroupNN
; Ctrl+Shift+G - Переносит ФАЙЛЫ И ПАПКИ из выделенных папок уровнем выше,
; затем удаляет эти выделенные папки
; Ctrl+Shift+Alt+G - Переносит все ФАЙЛЫ из выделенных папок уровнем выше,
; затем удаляет эти выделенные папки
;
; Для корректной работы нужно зайти в Tools -> Folder Options -> View
; и включить Display the full path in the address bar
; и выключить Hide extensions for known file types
;
; (c)2008 by YasonBy
; Исходник свободен, делайте что хотите :)
;#NoEnv
;SendMode Input
; Defines a new group name and Returns full path to it
; Определяет имя новой группы и возвращает полный путь к ней
GetNewGroupName(dir)
{
loop 100 {
groupPath = %dir%\#Group%A_Index%
If !InStr(FileExist(groupPath),"D")
break
}
Return, groupPath
}
RETURN ;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Sets the input focus to the file list
; Устанавливает фокус ввода на список файлов
FocusFolderView() {
ControlFocus, SysListView321
}
RETURN ;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Returns the current path from explorer's address bar
; Возвращает путь из адресной строки эксплорера
GetExplorerDirectory() {
IfWinActive, ahk_class Progman
path := A_DESKTOP
else
IfWinActive, ahk_class #32770
path := f_GetDialogPath()
else
ControlGetText, path, Edit1 ;getting current directory
Return %path%
}
RETURN ;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Navigates Explorer into the specified directory
; Переводит эксплорер в указанную папку
SetExplorerDirectory(dir) {
ControlSetText, Edit1, %dir% ; change directory
ControlSend, Edit1, {ENTER} ; press Enter
FocusFolderView()
}
RETURN ;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Moves the 'source' file or directory into the 'dest' directory
; Перемещает файл или папку source в папку dest
MoveFileOrDir(source, dest) {
attributes := FileExist(source)
IfInString, attributes, D
{
FileMoveDir, %source%, %dest%, 1
}
else
{
FileMove, %source%, %dest%
}
}
RETURN ;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Moves the selected files to a GroupNN folder
; Переносит выделенные файлы в папку вида GroupNN
GroupSelectedFiles() {
currentDir := GetExplorerDirectory()
ClipSaved := ClipboardAll
clipboard =
FocusFolderView()
f_ClipWait_Loop()
/*
Send, {CTRL DOWN}{vk43}{CTRL UP} ;c
ClipWait,2
If !clipboard,
Return ; nothing selected - nothing to do
*/
newGroupDir := GetNewGroupName(currentDir)
FileCreateDir, %newGroupDir%
Loop, parse, clipboard, `n, `r
{
fileName = %A_LoopField%
MoveFileOrDir(fileName, newGroupDir)
}
Clipboard := ClipSaved
ClipSaved =
; Uncomment this, if you want to move into the created group
; Раскомментировать, если нужно переходить в только что созданную группу
; SetExplorerDirectory(newGroupDir)
f_RefreshExplorer()
}
RETURN ;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Moves the FILES AND FOLDERS from selected folders to an upper level, then removes those directories
; Переносит ФАЙЛЫ И ПАПКИ из выделенных папок уровнем выше, затем удаляет эти выделенные папки
UngroupSelectedFoldersFiles() {
currentDir := GetExplorerDirectory()
ClipSaved := ClipboardAll
clipboard =
FocusFolderView()
f_ClipWait_Loop()
/*
Send, {CTRL DOWN}{vk43}{CTRL UP} ;c
ClipWait,1
*/
Loop, parse, clipboard, `n, `r
{
groupPath = %A_LoopField%
attributes := FileExist(groupPath)
IfInString, attributes, D
{
Loop, %groupPath%\*.*,1,0
{
MoveFileOrDir(A_LoopFileFullPath, currentDir)
}
FileRemoveDir, %groupPath%, 0 ;non-recursive
}
}
Clipboard := ClipSaved
ClipSaved =
f_RefreshExplorer()
}
RETURN ;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Moves the all FILES from selected folders to an upper level, then removes those directories
; Переносит все ФАЙЛЫ из выделенных папок уровнем выше, затем удаляет эти выделенные папки
UngroupSelectedFiles() {
currentDir := GetExplorerDirectory()
ClipSaved := ClipboardAll
clipboard =
FocusFolderView()
f_ClipWait_Loop()
/*
Send, {CTRL DOWN}{vk43}{CTRL UP} ;c
ClipWait,1
*/
Loop, parse, clipboard, `n, `r
{
groupPath = %A_LoopField%
Loop, %groupPath%\*.*,,1
{
MoveFileOrDir(A_LoopFileFullPath, currentDir)
}
FileRemoveDir, %groupPath%, 1 ;non-recursive
}
Clipboard := ClipSaved
ClipSaved =
f_RefreshExplorer()
}
RETURN ;;;;;;;;;;;;;;;;;;;;;;;;;;;
#IfWinActive, ahk_group 3Mouse_Group
^vk47:: ; ^G
GroupSelectedFiles:
KeyWait Control
tooltip = * Перенести выделенные файлы в папку вида GroupNN
CoordMode, ToolTip, Screen
ToolTip, %tooltip%,0,0
GroupSelectedFiles()
Sleep, 1400
tooltip = * OK
CoordMode, ToolTip, Screen
ToolTip, %tooltip%,0,0
Sleep, 800
tooltip
Return
^+vk47:: ; ^+G
UngroupSelectedFoldersFiles:
KeyWait Control
KeyWait Shift
tooltip = * Перенести ФАЙЛЫ И ПАПКИ из выделенных папок уровнем выше,`nзатем удалить эти выделенные папки
CoordMode, ToolTip, Screen
ToolTip, %tooltip%,0,0
UngroupSelectedFoldersFiles()
Sleep, 1400
tooltip = * OK
CoordMode, ToolTip, Screen
ToolTip, %tooltip%,0,0
Sleep, 800
tooltip
Return
^+!vk47:: ; ^+!G
UngroupSelectedFiles:
KeyWait Control
KeyWait Shift
KeyWait Alt
tooltip = * Переместить ВСЕ ФАЙЛЫ из выделенных папок в текущую,`nзатем удалить эти выделенные папки
CoordMode, ToolTip, Screen
ToolTip, %tooltip%,0,0
UngroupSelectedFiles()
Sleep, 1400
tooltip = * OK
CoordMode, ToolTip, Screen
ToolTip, %tooltip%,0,0
Sleep, 800
tooltip
Return
;#IfWinActive
;******************************
;Группирование файлов по расширению
^vk45:: ; ^E
f_ExtGroup:
KeyWait Control
ClipSaved := ClipboardAll
Clipboard =
Send, {CTRL DOWN}{vk43}{CTRL UP} ;c
ClipWait, 1
If !clipboard,
Return ; nothing selected - nothing to do
FileName = %Clipboard%
Clipboard := ClipSaved
SplitPath, FileName,, FileDir, FileExt
FileGetAttrib, Attributes, %FileName%
IfInString, Attributes, D
{
return
}
else
IfNotExist, %FileDir%\#%FileExt%\
FileCreateDir, %FileDir%\#%FileExt%\
FileMove, %FileDir%\*%FileExt%, %FileDir%\#%FileExt%\
If ErrorLevel
{
tooltip = * ОШИБКА!
gosub, f_Screen_ToolTip
}
else
{
tooltip = * Перемещены в подпапку`n[#%FileExt%]
gosub, f_Screen_ToolTip
}
return
#IfWinActive ; снимаем контекстную зависимость горячих клавиш
;________________________________________________________________
;************ 1Создать AutoHotkeyScript *************************
1Ahk1Script1Create:
IfWinActive, ahk_class Progman
exp := A_DESKTOP
else
ControlGetText, exp, Edit1, ahk_class CabinetWClass
IfExist, %exp%
{
Loop
{
If A_Index = 1
ahk_file = AutoHotkey Script.ahk
Else
ahk_file = AutoHotkey Script(%A_Index%).ahk
IfNotExist, %exp%\%ahk_file%
Break
}
IfNotEqual, ahk_file,
IfNotExist, %exp%\%ahk_file%
{
FileAppend,
(
;`n/*`n#NoTrayIcon ; не отображать иконку скрипта в трее`n#Persistent`n#SingleInstance Force ; перезагрузить скрипт, если он уже запущен`n#SingleInstance ignore `n#NoEnv ; запрещаем имена переменных как у переменных окружения (повышаем производительность)`nSendMode Input ; новый режим высылки без задержки и повышенной надежности`nSetWorkingDir, `%A_ScriptDir`% ; установить рабочей папкой папку со скриптом (чтобы не сбивалась при запуске "со стороны")`n*/`n#SingleInstance Force`n`n`n%Clipboard%`n`n`n`n`
), %exp%\%ahk_file%
If FileExist("C:\Program Files\Bred3\bred3_2k.exe")
{
that="%exp%\%ahk_file%"
Run, "C:\Program Files\Bred3\bred3_2k.exe" %that%
WinWait [%ahk_file%]
WinActivate
Send, {F5 2}
}
else
{
that="%exp%\%ahk_file%"
Run, "C:\WINDOWS\NOTEPAD.EXE" %that%
}
}
}
RETURN
;________________________________________________________________
;************ 2Создать AutoHotkeyScript *************************
2Ahk2Script2Create:
send ^{Insert}
sleep,200
Loop
{
If A_Index = 1
ahk_file = AutoHotkey Script.ahk
Else
ahk_file = AutoHotkey Script(%A_Index%).ahk
IfNotExist, C:\%ahk_file%
Break
}
IfNotEqual, ahk_file,
IfNotExist, C:\%ahk_file%
{
FileAppend,
(
;`n/*`n#NoTrayIcon ; не отображать иконку скрипта в трее`n#Persistent`n#SingleInstance Force ; перезагрузить скрипт, если он уже запущен`n#SingleInstance ignore `n#NoEnv ; запрещаем имена переменных как у переменных окружения (повышаем производительность)`nSendMode Input ; новый режим высылки без задержки и повышенной надежности`nSetWorkingDir, `%A_ScriptDir`% ; установить рабочей папкой папку со скриптом (чтобы не сбивалась при запуске "со стороны")`n*/`n#SingleInstance Force`n`n`n%Clipboard%`n`n`n`n`
), C:\%ahk_file%
If FileExist("C:\Program Files\Bred3\bred3_2k.exe")
{
that="C:\%ahk_file%"
Run, "C:\Program Files\Bred3\bred3_2k.exe" %that%
WinWait [%ahk_file%]
WinActivate
Send, {F5 2}
}
else
{
that="C:\%ahk_file%"
Run, "C:\WINDOWS\NOTEPAD.EXE" %that%
}
}
RETURN
AhkCommands:
SplitPath, A_AhkPath,, A_AhkDir
FileRead, Commands, %A_AhkDir%\Extras\Editors\Syntax\Commands.txt
StringReplace, Commands, Commands, |, \, All
StringReplace, Commands, Commands, `r, , All
StringReplace, Commands, Commands, `n,| , All
Gui, 38:Add, ComboBox, w640 R45 Simple AltSubmit vSelected, %commands%
Gui, 38:Show,, %A_AhkDir%\Extras\Editors\Syntax\Commands.txt
Return
38guiClose:
gui, 38:Destroy
Return
;__________________________________________________________________________________
;##################################################################################
;############################ /QuickRun_Group #####################################
;##################################################################################
;##
;#IfWinActive, ahk_group QuickRun_Group
~LButton & RButton::
{
CoordMode, Mouse, Screen
MouseGetPos, xmenu, ymenu, win
WinGetClass, class, ahk_id %win%
If class in Progman,AutoHotkeyGUI,BaseBar,Shell_TrayWnd
;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;
^+RButton:: ;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;
;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;!;
{
DetectHiddenWindows, On
ifWinExist, MyMenu ;меню создано
{
DetectHiddenWindows, Off
ifWinExist, MyMenu
WinHide, MyMenu
else
{
DetectHiddenWindows, On
loopindex:=((menucount+1)*17)+4 ;чтоб за границы экрана не вылезло
if (xmenu>(A_ScreenWidth-154))
xmenu:=xmenu-154
if (ymenu>(A_ScreenHeight-loopindex))
ymenu:=ymenu-loopindex
Gui, 30: Show, x%xmenu% y%ymenu%, MyMenu
WinShow, MyMenu
WinActivate, MyMenu
Gui, 30: Default ;нужно для того чтобы функции при работе с ListView знали к какому именно ListView обращаться
Loop % LV_GetCount() ;снимаем фокус со всех эелементов
LV_Modify(A_Index, "-Select")
}
}
else ;создаём меню
{
Gui, 30: Default
Gui, 30: -Resize +LastFound +AlwaysOnTop +ToolWindow -Caption
Gui, 30: Color, %menucolor3%
WinSet, TransColor, %menucolor% %menutransp%
Gui, 30: Font, S8 c%menucolor2%, Tahoma
loopindex:=menucount+2
Gui, 30: Add, ListView , x2 y2 r%loopindex% w150 -ReadOnly -Border vMyListView -LV0x8000 -LV0x10 +LV0x40 +LV0x8 -Hdr AltSubmit gMyListView Background%menucolor%, name
ImageListID1 := IL_Create(10) ;ImageListID1 - хранилище иконок
LV_SetImageList(ImageListID1) ;Связываем ListView с хранилищем иконок
;=======================
GuiControl, -Redraw, MyListView ;отменяем перерисовку
Loop %menucount% ;этот цикл заполняет наш ListView
{
loopindex:=A_Index-1
IL_Add(ImageListID1,menuicon%loopindex%,menuiconn%loopindex%)
LV_Add("Icon" . A_Index, menuname%loopindex%)
}
GuiControl, +Redraw, MyListView
;==========Вычисляем новую длину меню=============
loopindex:=((menucount+1)*16)+8
LV_ModifyCol(2,"105")
GuiControl, Move, MyListView, % "H" . (menucount+1)*17
loopindex:="H" . ((menucount+1)*17)+4
loopindex:=((menucount+1)*17)+4
if (xmenu>(A_ScreenWidth-154)){
xmenu:=xmenu-154
}
if (ymenu>(A_ScreenHeight-loopindex)){
ymenu:=ymenu-loopindex
}
Gui, 30: Show, x%xmenu% y%ymenu% w154 h%loopindex%, MyMenu
Loop % LV_GetCount()
LV_Modify(A_Index, "-Select")
WinSet Transparent, %menutransp%, A ;устанавливаем прозрачность меню (читается из файла)
}
DetectHiddenWindows, Off
}
Else
MouseClick, Middle
MyListView: ;обрабока событий ListView
{
if A_GuiEvent = Normal ;выбран элемент меню
{
LV_GetText(OutputVar, A_EventInfo, 1) ;по идее это спасёт при пустом меню
if OutputVar =
return
runtarget:=A_EventInfo-1
runname:=menuname%runtarget%
runtarget:=menutarget%runtarget%
;GetKeyState, State, Ctrl
;IfEqual, State, D
GetKeyState, RButtonState, RButton, P ;если кликнули,
If RButtonState = D ;зажав правую кнопку мыши
{
Run, Explorer /select`,"%runtarget%",, UseErrorLevel
WinHide, MyMenu
}
else
Run, %runtarget% ;запускаем то что выбрано
WinHide, MyMenu ;это закомментируйте если не нужно
;чтобы меню закрывалось при выборе элемента
;=================================================================================
ToolTip Runing %runname%...
SetTimer, RemoveToolTip, 700
}
else if A_GuiEvent = I ;фокус элемента сменился, и мы за ним следим
rownumb:=A_EventInfo
else if A_GuiEvent = K ;нажата какая-то клавиша
{
Gui, 30: Default
if(A_EventInfo=46) ;видимо это клавиша Delete :-)
{
KeyWait, Delete
rownumb--
loopindex:=menucount-rownumb
Loop %loopindex% ;делаем Delete из всех массивов со смещением элементов
{
rownumb2:=A_index + rownumb - 1
loopindex:=rownumb2+1
menutarget%rownumb2% := menutarget%loopindex%
menuicon%rownumb2% := menuicon%loopindex%
menuname%rownumb2% := menuname%loopindex%
menuiconn%rownumb2% := menuiconn%loopindex%
}
IL_Destroy(ImageListID1) ;к сожалению ImageListID не поддерживает удаления элементов
ImageListID1 := IL_Create(10) ;поэтому пришлось его вальнуть и пересоздать
LV_SetImageList(ImageListID1)
LV_Delete() ;тоже самое и про ListView, хотя у него есть функция удаления отдельных элементов
;=======================
menucount--
Loop %menucount% ;снова заполняем ListView
{
loopindex:=A_Index-1
IL_Add(ImageListID1,menuicon%loopindex%,menuiconn%loopindex%)
LV_Add("Icon" . A_Index, menuname%loopindex%)
}
;===================Вычисляем длину меню=================
LV_ModifyCol(2,"105")
GuiControl, Move, MyListView, % "H" . (menucount+1)*17
Gui 30: Show, % "H" . ((menucount+1)*17)+4
Loop % LV_GetCount()
LV_Modify(A_Index, "-Select")
}
}
return
}
30GuiDropFiles: ;думаю понятно что это
{
GuiControl, -Redraw, MyListView ;не будем его тревожить в реальном времени
Gui, 30: Default
Loop, parse, A_GuiEvent, `n
{
SplitPath, A_LoopField,,, FileExt
if FileExt = lnk ;если мы туда кинули ссылку
{
Source =
FileGetShortcut, %A_LoopField%, Target, Dir, Args, Desc, Ico, IconNum, RunState
Source:=SubStr(A_LoopField,InStr(A_LoopField,"\",0,0)+1)
Source:=SubStr(Source,1,InStr(Source,".")-1)
;MsgBox %A_LoopField%`nTarget: %Target%`nDir: %Dir%`nArgs: %Args%`nDesc: %Desc%`nIcon: %Icon%`nIconNum: %IconNum%`nRunState: %RunState%
if Ico =
Ico:=Target
menutarget%menucount% = %Target%
menuicon%menucount% = %Ico%
menuname%menucount% = %Source%
menuiconn%menucount% = %IconNum%
menucount++
IL_Add(ImageListID1,Ico,%IconNum%)
LV_Add("Icon" . menucount, Source)
}
else if FileExt = exe ;если мы туда кинули EXE
{
SplitPath, A_LoopField,,,, Source
menutarget%menucount% = %A_LoopField%
menuicon%menucount% = %A_LoopField%
menuname%menucount% = %Source%
menuiconn%menucount% = 1
menucount++
IL_Add(ImageListID1,A_LoopField,1)
LV_Add("Icon" . menucount, Source)
}
else if FileExt = ;если забросили папку
{
SplitPath, A_LoopField,,,, Source
menutarget%menucount% = %A_LoopField%
EnvGet, SystemRoot, SystemRoot ;получаем значение переменной окружения
menuicon%menucount% = %SystemRoot%\system32\shell32.dll
menuname%menucount% = %Source%
menuiconn%menucount% = 20
menucount++
;IL_Add(ImageListID1,"C:\WINDOWS\Explorer.exe",14) ;у меня значёк папки лежит тута. у вас - не знаю)
EnvGet, SystemRoot, SystemRoot ;получаем значение переменной окружения
IL_Add(ImageListID1,"%SystemRoot%\system32\shell32.dll",20)
LV_Add("Icon" . menucount, Source)
}
else if FileExt = %FileExt% ;кинули другое
{
SplitPath, A_LoopField,,,, Source
menutarget%menucount% = %A_LoopField%
menuicon%menucount% = C:\WINDOWS\system32\SHELL32.dll
menuname%menucount% = %Source%
menuiconn%menucount% = 1
menucount++
IL_Add(ImageListID1,"C:\WINDOWS\system32\SHELL32.dll",1)
LV_Add("Icon" . menucount, Source)
}
}
;===================Вычисляем длину меню=================
LV_ModifyCol(2,"105")
GuiControl, Move, MyListView, % "H" . (menucount+1)*17
GuiControl, +Redraw, MyListView
Gui 30: Show, % "H" . ((menucount+1)*17)+4
Loop % LV_GetCount()
LV_Modify(A_Index, "-Select")
return
}
}
MenuExit: ;Выходим из скрипта
{
filestring =
Loop, %menucount% ;делаем одну большую колбасу из массивов
{
loopindex:=A_Index-1
filestring:=filestring . menuname%loopindex% . "|" . menutarget%loopindex% . ";" . menuicon%loopindex% . "*" . menuiconn%loopindex% . "!`n"
}
FileDelete, %QuickRunMenu% ;удаляем файл
FileAppend, transp=%menutransp%!`nmenu color=%menucolor%!`ntext color=%menucolor2%!`nborder color=%menucolor3%!`n, %QuickRunMenu% ;пишем настройки
FileAppend, %filestring%, %QuickRunMenu% ;пишем элементы
filestring =
ExitApp
}
;##
;#####################################################################################
;################################## QuickRun_Group/ ##################################
;#####################################################################################
;_____________________________________________________________________________
;| |
;| Команды 1 |
;|____________________________________________________________________________|
;$MButton::
MButton::
KeyWait, %A_ThisHotkey%, U T.4 ; ожидать отжатия клавиши 0,5 секунды
If ErrorLevel = 0 ; если отжата
Send, !{F4}
;WinClose, A
Else ; если не отжата
{
Menu, Popup, Show
RETURN
}
RETURN
mnmz:
WinMinimize A
RETURN
home:
Send, ^{Home}
RETURN
end:
Send, ^{End}
RETURN
shifthome:
Send, ^+{Home}
RETURN
shiftend:
Send, ^+{End}
RETURN
turn:
PostMessage, 0x111, 28706, 0, , ahk_class CabinetWClass ;Обратить выделение
RETURN
#!Space::
Run, %A_ScriptDir%\OpenLibrary.exe
RETURN
^+!vkC0:: ; ^+!`
EnvGet, SystemRoot, SystemRoot ; получаем значение переменной окружения
Run, %SystemRoot%\system\exview.exe
RETURN
;__________________________________________________________
;##########################################################
;######## /клавиши, зависящие от количества нажатий #######
;##########################################################
#+vk43:: ;Win+Shift+C
^+vk48:: ;Ctrl+Shift+H
#DEL:: ;Win+DEL
^+!vk52:: ;Ctrl+Shift+Alt+R
#1:: ;Win+1
#9:: ;Win+9
+#vk54:: ;Shift+Win+T
#7:: ;Win+7
++counter
SetTimer, Choice, -400
return
Choice:
if A_ThisHotkey = #+vk43 ;Win+Shift+C
{
IfEqual, counter, 1, Gosub, f_CopyPath
IfEqual, counter, 2, Gosub, f_OpenClipboardPath
;IfGreater, counter, 2, Run %A_AppData%
}
if A_ThisHotkey = ^+vk48 ;Ctrl+Shift+H
{
IfEqual, counter, 1, Gosub, CheckActiveWindow
IfEqual, counter, 2, Gosub, Check_SuperHidden
}
if A_ThisHotkey = #DEL ;Win+DEL
{
IfEqual, counter, 1, Gosub, f_DeleteEmptyFldrs
IfEqual, counter, 2, Gosub, EmptyRecycle
}
if A_ThisHotkey = ^+!vk52 ;Ctrl+Shift+Alt+R
{
IfEqual, counter, 1, Gosub, Convert_Case
IfEqual, counter, 2, Gosub, RecodeTextENRU
}
if A_ThisHotkey = #1
{
IfEqual, counter, 1, Gosub, f_FindObject
IfEqual, counter, 2, Gosub, f_OpenObject
}
if A_ThisHotkey = #9
{
IfEqual, counter, 1, Gosub, f_GetExePath
IfEqual, counter, 2, Gosub, f_GetClass
}
if A_ThisHotkey = +#vk54 ;Shift+Win+T
{
IfEqual, counter, 1, Gosub, TextTransliterate
IfEqual, counter, 2, Gosub, TextDeTransliterate
}
if A_ThisHotkey = #7 ;Shift+Win+T
{
IfEqual, counter, 1, Gosub, 1Ahk1Script1Create
IfEqual, counter, 2, Gosub, 2Ahk2Script2Create
IfEqual, counter, 3, Gosub, AhkCommands
}
counter =
return
;##########################################################
;######## клавиши, зависящие от количества нажатий/ #######
;##########################################################
;_____________________________________________________________________________
;| |
;| Команды 2 |
;|____________________________________________________________________________|
cut:
PostMessage, 0x111, 28696, 0, , ahk_class CabinetWClass
RETURN
selectAllCut:
PostMessage, 0x111, 28705, 0, , ahk_class CabinetWClass
PostMessage, 0x111, 28696, 0, , ahk_class CabinetWClass
RETURN
selectDownCut:
Send, ^+{End}
Sleep, 1000
PostMessage, 0x111, 28696, 0, , ahk_class CabinetWClass
Sleep, 1000
Send, ^{Home}
RETURN
DProgramFiles:
Run, D:\Program Files
RETURN
EProgramFiles:
Run, E:\Program Files
RETURN
FProgramFiles:
Run, F:\Program Files
RETURN
GProgramFiles:
Run, G:\Program Files
RETURN
HProgramFiles:
Run, H:\Program Files
RETURN
App_Data_Opera:
EnvGet, USERPROFILE, USERPROFILE ; получаем значение переменной окружения
Run, %USERPROFILE%\Local Settings\Application Data\Opera\Opera
RETURN
ProgramFiles:
Run, %ProgramFiles%
RETURN
systemFld:
EnvGet, SystemRoot, SystemRoot ; получаем значение переменной окружения
Run, %SystemRoot%\system
RETURN
system32Fld:
EnvGet, SystemRoot, SystemRoot ; получаем значение переменной окружения
Run, %SystemRoot%\system32
RETURN
start_Up:
EnvGet, USERPROFILE, USERPROFILE ; получаем значение переменной окружения
Run, %USERPROFILE%\Главное меню\Программы\Автозагрузка
RETURN
desk_Top:
EnvGet, USERPROFILE, USERPROFILE ; получаем значение переменной окружения
Run, %USERPROFILE%\Рабочий стол
RETURN
send_To:
EnvGet, USERPROFILE, USERPROFILE ; получаем значение переменной окружения
Run, %USERPROFILE%\SendTo
RETURN
Local_Settings:
EnvGet, USERPROFILE, USERPROFILE ; получаем значение переменной окружения
Run, %USERPROFILE%\Local Settings
RETURN
services:
Run, "hcp://services/layout/contentonly"
RETURN
Paint:
EnvGet, SystemRoot, SystemRoot ; получаем значение переменной окружения
Run, %SystemRoot%\system32\mspaint.exe
RETURN
Sndrec32:
EnvGet, SystemRoot, SystemRoot ; получаем значение переменной окружения
Run, %SystemRoot%\system32\sndrec32.exe
RETURN
Command_Prompt:
Run, cmd.exe
RETURN
Command_Prompt_Here:
Run, cmd.exe /k cd /D %F_CurrentDir%
RETURN
Registry:
Run, regedit.exe
RETURN
Char_map:
Run, charmap.exe
RETURN
ScriptDir:
Run, Explorer /select`,"%A_ScriptFullPath%",, UseErrorLevel
RETURN
;показать/скрыть скрытые файлы
;^+vk48:: ;H
CheckActiveWindow:
f_ToggleHidden()
/*
ID := WinExist("A")
WinGetClass,Class, ahk_id %ID%
WClasses := "CabinetWClass ExploreWClass"
IfInString, WClasses, %Class%
GoSub, Toggle_HiddenFiles_Display
RETURN
Toggle_HiddenFiles_Display:
RootKey = HKEY_CURRENT_USER
SubKey = Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
RegRead, HiddenFiles_Status, % RootKey, % SubKey, Hidden
if HiddenFiles_Status = 2
RegWrite, REG_DWORD, % RootKey, % SubKey, Hidden, 1
else
RegWrite, REG_DWORD, % RootKey, % SubKey, Hidden, 2
PostMessage, 0x111, 28931,,, ahk_id %ID% ;Обновить
*/
RETURN
;показать/скрыть защищенные системные файлы
;^+!vk48:: ; ^+!H
Check_SuperHidden:
f_ToggleSuperHidden()
/*
ID := WinExist("A")
WinGetClass,Class, ahk_id %ID%
WClasses := "CabinetWClass ExploreWClass"
IfInString, WClasses, %Class%
GoSub, Toggle_SuperHiddenFiles_Display
RETURN
Toggle_SuperHiddenFiles_Display:
RootKey = HKEY_CURRENT_USER
SubKey = Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
RegRead, SuperHiddenFiles_Status, % RootKey, % SubKey, ShowSuperHidden
if SuperHiddenFiles_Status = 1
RegWrite, REG_DWORD, % RootKey, % SubKey, ShowSuperHidden, 0
else
RegWrite, REG_DWORD, % RootKey, % SubKey, ShowSuperHidden, 1
PostMessage, 0x111, 28931,,, ahk_id %ID% ;Обновить
*/
RETURN
;Копировать путь к выделенному объекту/объектам
;#+vk43:: ;Win+Shift+C
f_CopyPath:
clipboard =
Send, {CTRL DOWN}{vk43}{CTRL UP} ;c
ClipWait, 2
Sort, clipboard
tooltip = * Копировать путь к выделенному объекту/объектам
gosub, f_Screen_ToolTip
RETURN
; Открыть/закрыть лоток CD-ROM - Alt+Ctrl+Win+Space
!^#Space::
Drive, Eject
If A_TimeSinceThisHotkey < 1000
Drive, Eject, , 1
Return