Вы должны войти, чтобы создавать сообщения и темы.

Скрипт AutoHotkey для поиска в Google

Добрый день! Есть скрипт СкопированоAutoHotkey для поиска в СкопированоGoogle выделенного текста. Подскажите, пожалуйста, как заменить горячую клавишу Скопированоf1 на клик по иконке скрипта в трее?

#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%

f1::GoogleSelection()

GoogleSelection() {
    searchQuery := GetSelectedText()
    if (!searchQuery) {
        Run, www.google.com
        return
    }
    address := Format("www.google.com/search?q={}", searchQuery)
    Run, %address%
}

GetSelectedText() {
    tmp := ClipboardAll
    Clipboard := ""
    Send, {CtrlDown}c{CtrlUp}
    ClipWait, 0, false
    res := Clipboard
    Clipboard := tmp
    return res
}

 

Имир, Привет.

#NoEnv
#Persistent
SendMode Input
SetWorkingDir %A_ScriptDir%

SetTimer, TrackActive, 200

Menu, Tray, Add, Поиск в Google, GoogleSelection
Menu, Tray, Default, Поиск в Google
Menu, Tray, Click, 1
return

TrackActive:
    WinGet, gLastWinId, ID, A
return

GoogleSelection:
    global gLastWinId
    if (gLastWinId) {
        WinActivate, ahk_id %gLastWinId%
        Sleep, 100
    }

    searchQuery := GetSelectedText()
    if (!searchQuery) {
        Run, www.google.com
        return
    }
    address := Format("www.google.com/search?q={}", searchQuery)
    Run, %address%
return

GetSelectedText() {
    tmp := ClipboardAll
    Clipboard := ""
    Send, {CtrlDown}c{CtrlUp}
    ClipWait, 0, false
    res := Clipboard
    Clipboard := tmp
    return res
}
Лайкнул Имир
Имир
«Любой дурак может знать. Дело в том, чтобы понять.» — Альберт Эйнштейн

Mikhail, добрый день! Спасибо большое! Работает, но иногда, работать отказывается. Пока не пойму, почему.

Mikhail, добрый день! Подскажите, пожалуйста, как сделать так, чтобы при выделении файла и нажатии клавиши СкопированоF1 копировалось название этого файла, а не путь к нему?

#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%

f1::GoogleSelection()

GoogleSelection() {
    searchQuery := GetSelectedText()
    if (!searchQuery) {
        Run, www.google.com
        return
    }
    address := Format("www.google.com/search?q={}", searchQuery)
    Run, %address%
}

GetSelectedText() {
    tmp := ClipboardAll
    Clipboard := ""
    Send, {CtrlDown}c{CtrlUp}
    ClipWait, 0, false
    res := Clipboard
    Clipboard := tmp
    return res
}

 

Имир, Привет.
Просто не дописал:
СкопированоSplitPath, res, , , , nameNoExt(переменая)
Скопированоreturn nameNoExt

Полынй код:

#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%

f1::GoogleSelection()

GoogleSelection() {
    searchQuery := GetSelectedText()
    if (!searchQuery) {
        Run, www.google.com
        return
    }
    address := Format("www.google.com/search?q={}", searchQuery)
    Run, %address%
}

GetSelectedText() {
    tmp := ClipboardAll
    Clipboard := ""
    Send, {CtrlDown}c{CtrlUp}
    ClipWait, 0, false
    res := Clipboard
    Clipboard := tmp

    SplitPath, res, , , , nameNoExt
    return nameNoExt
}
Лайкнул Имир
Имир
«Любой дурак может знать. Дело в том, чтобы понять.» — Альберт Эйнштейн

Mikhail, добрый день! Спасибо огромное!

Mikhail, с файлами все работает идеально, но теперь при выделении текста, где есть слэш, копируется только часть текста после слэша

Имир, Пример текста скинь, все тыкаю, все нормально копирует...

«Любой дурак может знать. Дело в том, чтобы понять.» — Альберт Эйнштейн

Mikhail, например, если выделить вот такой текст СкопированоHKCU\Software\Microsoft\Windows\CurrentVersion\Explorer и нажать f1, то будет искаться только СкопированоExplorer

Имир, Теперь вроде норм должно.

#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%

f1::GoogleSelection()

GoogleSelection() {
    searchQuery := GetSelectedText()
    if (!searchQuery) {
        Run, www.google.com
        return
    }
    address := Format("www.google.com/search?q={}", searchQuery)
    Run, %address%
}

GetSelectedTextOrFilename() {
    tmp := ClipboardAll
    Clipboard := ""
    Send, ^c
    ClipWait, 0.2

    if (Clipboard ~= "m)^[A-Z]:\\") {
        file := Clipboard
        SplitPath, file, name, dir, ext, nameNoExt
        Clipboard := tmp
        return nameNoExt
    }
    text := Clipboard
    Clipboard := tmp
    return text
}

GetSelectedText() {
    return GetSelectedTextOrFilename()
}
Лайкнул Имир
Имир
«Любой дурак может знать. Дело в том, чтобы понять.» — Альберт Эйнштейн

Mikhail, работает! Спасибо огромное!

Добрый день!
У меня при нажатии колесика мыши происходит вставка Clipboard.

MButton::

        Send ^{vk56} ; Ctrl+V (+{Ins})
    sleep 600 

return

Подскажите, как подружить два скрипта, чтобы при одинарном нажатии срабатывал мой скрипт, а при долгом удержании запускался поиск Google?

Анлрей, Привет.
Держи:
HoldTime в коде, это время через которое срабатывает google поиск функция, 400, это в мс, если дольше 400 зажата СРМ, будет искать, однократное нажатие, буфер.

#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%

HoldTime := 400
isHeld := false

MButton::
    isHeld := false
    SetTimer, CheckHold, -%HoldTime%
return

MButton Up::
    if (isHeld) {
        return
    }
    Send ^v
return

CheckHold:
    if GetKeyState("MButton", "P") {
        isHeld := true
        GoogleSelection()
    }
return

GoogleSelection() {
    searchQuery := GetSelectedText()
    if (!searchQuery) {
        Run, www.google.com
        return
    }
    address := Format("www.google.com/search?q={}", searchQuery)
    Run, %address%
}

GetSelectedTextOrFilename() {
    tmp := ClipboardAll
    Clipboard := ""
    Send, ^c
    ClipWait, 0.2

    if (Clipboard ~= "m)^[A-Z]:\\") {
        file := Clipboard
        SplitPath, file, name, dir, ext, nameNoExt
        Clipboard := tmp
        return nameNoExt
    }
    text := Clipboard
    Clipboard := tmp
    return text
}

GetSelectedText() {
    return GetSelectedTextOrFilename()
}
Лайкнули shim и Андрей
shimАндрей
«Любой дурак может знать. Дело в том, чтобы понять.» — Альберт Эйнштейн

Mikhail, работает безупречно! Спасибо огромное!