1 (изменено: mhl, 2015-12-14 02:49:24)

Тема: AHK: Не вставляется текст из буфера в окно поиска в MS Word

F11::Send, ^c!{tab}^f^v

Написал этот простой скрипт, для автоматизации задачи, которую я вручную выполняю так:
Есть выделенный мышкой текст в окне Firefox.
Нажимаем Ctrl+C
Нажимаем ALT+Tab
Нажимаем Ctrl+F
Нажимаем Сtrl+V
В результате выделенный текст копируется в окно поиска Word и, если такой текст встречается в документе, то Word его находит. Открытых окон Word'a у меня много, но я всегда перед запуском скрипта перехожу в Firefox c нужного, так что с этой стороны проблем нет.
В ручную все нормально, а при использовании скрипта не всегда. Часто текст вставляется вместо окна поиска в основной текст документа.  При этом в меню отмены последних действий в Word видно, что была исполнена команда "изменение режима вставки".
Прошу помощи, AHK открыл для себя только сегодня. Нужно чтобы текст из буфера всегда вставлялся в окно поиска, независимо от того, где находится курсор и какой фрагмент выделен в документе.

2

Re: AHK: Не вставляется текст из буфера в окно поиска в MS Word

После Ctrl + F нужно сначала дождаться, пока появится и станет активным окно поиска, а ваш скрипт этого не делает, поэтому текст посылается в окно, которое активно в данный момент. Код должен быть примерно таким:

F11::
	Send, ^c!{tab}^f
	WinWaitActive, ahk_class bosa_sdm_Microsoft Office Word 12.0
	SendInput, ^v
	Return

Текст названия класса окна поиска у вас может быть другим (зависит от версии Ворда), его можно определить с помощью Window Spy.
Кроме того, посылаемые буквенные клавиши лучше заменить их виртуальными кодами:

F11::
	Send, ^{vk43}!{tab}^{vk46}
	WinWaitActive, ahk_class bosa_sdm_Microsoft Office Word 12.0
	SendInput, ^{vk56}
	Return
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Не вставляется текст из буфера в окно поиска в MS Word

Посмотрел название окна поиска. Получилось следующее:

F11::
	Send, ^{vk43}!{tab}^{vk46}
	WinWaitActive, ahk_class OpusApp
	SendInput, ^{vk56}
	Return

Но, не работает опять как надо.
В процессе выяснилось, что название окна в Window Spy (в рамке на скриншоте) остается одинаковым, независимо от того, активно ли окно поиска, или курсор находится в основном окне документа.
http://i68.tinypic.com/2hyjgx2.jpg
Может, просто поставить некую задержку после ^{vk46}? Заодно, хотелось бы добиться универсальности, чтобы код работал в любой программе, где по Ctrl+F вызывается окно поиска.

4

Re: AHK: Не вставляется текст из буфера в окно поиска в MS Word

OpusApp — это класс основного окна документа Word. А что у вас появляется по Ctrl+F ? У меня такое окно:

https://cloclo11.datacloudmail.ru/weblink/thumb/w3/3CvrTFS5toxx/2015.12.19-02.01.38.6.jpg

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: Не вставляется текст из буфера в окно поиска в MS Word

У Вас офис 2007, а у меня 2010 и по Ctrl+F появляется панель Навигация, как на скриншоте выше.

6

Re: AHK: Не вставляется текст из буфера в окно поиска в MS Word

На скриншоте показано состояние, когда курсор над панелью навигации?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7

Re: AHK: Не вставляется текст из буфера в окно поиска в MS Word

Да, курсор в текстовом поле, где слово "нет", его даже видно на скриншоте.

8

Re: AHK: Не вставляется текст из буфера в окно поиска в MS Word

Тогда так попробуйте:

F11::
	Send, ^{vk43}!{tab}^{vk46}
	Loop  {
		Sleep, 10
		ControlGetFocus, focus, ahk_class OpusApp
	} until focus = "RICHEDIT60W1"
	SendInput, ^{vk56}
	Return
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

9

Re: AHK: Не вставляется текст из буфера в окно поиска в MS Word

Или лучше даже так:

F11::
	Send, ^{vk43}!{tab}
	IfWinNotActive, ahk_class OpusApp
		Return
	
	Send, ^{vk46}
	Loop  {
		Sleep, 10
		ControlGetFocus, focus, ahk_class OpusApp
	} until focus = "RICHEDIT60W1"
	Send, ^{vk56}
	Return
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

10

Re: AHK: Не вставляется текст из буфера в окно поиска в MS Word

Вставляет скопированный текст только если курсор до этого был в панели Навигация. Если курсор в основном окне Word, то в панель Навигация не переходит и текст из буфера никуда не вставляется.

11 (изменено: Malcev, 2015-12-19 03:49:07)

Re: AHK: Не вставляется текст из буфера в окно поиска в MS Word

А так не сработает?

F11::
	Send, ^{vk43}!{tab}^{vk46}
	WinWaitActive, ahk_class OpusApp, Навигация
	Send, ^{vk56}
	Return

12

Re: AHK: Не вставляется текст из буфера в окно поиска в MS Word

Вставляет или в панель Навигация, или в основной текст. Логики понять не могу.

13

Re: AHK: Не вставляется текст из буфера в окно поиска в MS Word

А так:

F11::
	Send, ^{vk43}!{tab}^{vk46}
	WinWaitActive, ahk_class OpusApp, Навигация
	ControlFocus, RICHEDIT60W1
	Send, ^{vk56}
	Return
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
+ mhl

14

Re: AHK: Не вставляется текст из буфера в окно поиска в MS Word

А так?

F11::
	Send, ^{vk43}!{tab}^{vk46}
	WinWaitActive, ahk_class OpusApp, Навигация
	ControlSetText, RICHEDIT60W1, %ClipBoard%, ahk_class OpusApp
	Return

15

Re: AHK: Не вставляется текст из буфера в окно поиска в MS Word

teadrinker - вроде заработало, но нужно будет еще потестировать.
Malcev - Ваш вариант попробую уже завтра и отпишусь.
Большое спасибо за помощь.

16

Re: AHK: Не вставляется текст из буфера в окно поиска в MS Word

teadrinker, поработал весь день - полет нормальный. Единственное что заметил - иногда вставляет текст в панель Навигация, но в основном окне текст не подсвечивается (тоесть word его не ищет). Если кликнуть мышкой вручную где-либо в  окне Word, то сразу находит искомое, как положено. В общем, можно работать.
Большое спасибо за помощь.
Malcev, работает, но не всегда. Заметил следующее: иногда не вставляет вообще ничего в панель Навигация, несколько раз в основное окно word вставлялась буква "а".
Еще раз спасибо, Вы мне очень помогли.