Что нового

Послать команду в окно программы

lemonia

Новичок
Сообщения
126
Репутация
0
Версия AutoIt: 3.3.12.0 3.

Описание:
Сначала надо сменить раскладку, если там не русский язык, на русский. Нашёл пример http://autoit-script.ru/index.php?topic=10581
Изменил для русского языка:
Код:
#Include <WinAPIEx.au3>
Global Const $LANG_RUS = 0x0419 ;Русский
;Global Const $LANG_ENG = 0x0409 ;Англиский
_WinAPI_SetKeyboardLayout(WinGetHandle("[REGEXPTITLE:.*Notepad++.*]"), $LANG_RUS) ;меняем язык

Вот код, его надо подправить, чтобы эта команда посылалась приложению, не именно на 14 вкладку, а на ту, которая открыта
Код:
_WinWaitActivate("*new  14 - Notepad++","Highlight all")
Send("{ALTDOWN}{ALTUP}ha{DOWN}{ENTER}")


Это взял из AU3Record.
 
Автор
L

lemonia

Новичок
Сообщения
126
Репутация
0
Когда запускаю такой код, автоматически сгенерированный, то не активируется верхняя строка меню, а пишется в окно текст. А мне надо, чтобы когда нажимаю Alt (Подкрашивает пункт меню «Файл» синим и подчёркивает некоторые буквы). Если жму «р», то раскрывается «Правка» и потом жму «ф» и открывается нужный пункт. Стрелка вниз выбирает второй сверху пункт и вводом подтверждаю команду.

[hide]
Код:
#region --- Au3Recorder generated code Start (v3.3.9.5 KeyboardLayout=00000419)  ---

#region --- Internal functions Au3Recorder Start ---
Func _Au3RecordSetup()
Opt('WinWaitDelay',100)
Opt('WinDetectHiddenText',1)
Opt('MouseCoordMode',0)
Local $aResult = DllCall('User32.dll', 'int', 'GetKeyboardLayoutNameW', 'wstr', '')
If $aResult[1] <> '00000419' Then
  MsgBox(64, 'Warning', 'Recording has been done under a different Keyboard layout' & @CRLF & '(00000419->' & $aResult[1] & ')')
EndIf

EndFunc

Func _WinWaitActivate($title,$text,$timeout=0)
	WinWait($title,$text,$timeout)
	If Not WinActive($title,$text) Then WinActivate($title,$text)
	WinWaitActive($title,$text,$timeout)
EndFunc

_AU3RecordSetup()
#endregion --- Internal functions Au3Recorder End ---

_WinWaitActivate("*new  13 - Notepad++","")
Send("{ALTDOWN}{ALTUP}ha{DOWN}{ENTER}")
#endregion --- Au3Recorder generated code End ---
[/hide]
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
lemonia

Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Глобальный модератор.
 
Автор
L

lemonia

Новичок
Сообщения
126
Репутация
0
А из нижнего сообщения не сворачивается код с тегом скрытого текста.
 

Khaibit

Осваивающий
Сообщения
103
Репутация
25
Код:
$hWnd = WinActivate('[Class:Notepad++]')
WinMenuSelectItem($hWnd, '', 'П&равка', 'Формат Конца Строк', 'Преобразовать в UNIX-формат')
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
У меня так работает, сам файл со скриптом сохранен в кодировке utf-8
Код:
#include <WinAPIEx.au3>
$hWnd = WinWait('*new 1')
_WinAPI_SetKeyboardLayout($hWnd, 0x0419)
SendKeepActive($hWnd)
Send('{ALTDOWN}{ALTUP}пф{DOWN}{ENTER}')
 
Автор
L

lemonia

Новичок
Сообщения
126
Репутация
0
Благодарю всех. Заработал первый вариант. А вот здесь что подправить, чтобы тоже работало? Это второй пункт сверху получается, а «Преобразовать в WIN-формат» сверху первый.
Код:
$hWnd = WinActivate('[Class:Notepad++]')
WinMenuSelectItem($hWnd, '', 'П&равка', 'Формат Конца Строк', 'Преобразовать в UNIX-формат')
 

Khaibit

Осваивающий
Сообщения
103
Репутация
25
lemonia сказал(а):
А вот здесь что подправить, чтобы тоже работало? Это второй пункт сверху получается, а «Преобразовать в WIN-формат» сверху первый.
Мне было показалось что нужен именно второй пункт.
Так
Код:
$hWnd = WinActivate('[Class:Notepad++]')
WinMenuSelectItem($hWnd, '', 'П&равка', 'Формат Конца Строк', 'Преобразовать в Win-формат')
 
Автор
L

lemonia

Новичок
Сообщения
126
Репутация
0
Благодарю. Нужны оба варианта, и с Unix в Win и с Win в Unix.
Мне было показалось что нужен именно второй пункт.
Да, верно, не из того файла скопировал. Заработал вариант, который Вы написали. Вроде то же самое делал, а не работало.

А можно ли делать то же самое, только сразу одним запуском скрипта обрабатывать все открытые вкладки?
 

Khaibit

Осваивающий
Сообщения
103
Репутация
25
lemonia сказал(а):
А можно ли делать то же самое, только сразу одним запуском скрипта обрабатывать все открытые вкладки?
Мне не известно о таких возможностях notepad++
Суть в том, что это можно сделать на autoit
например, все файлы .txt в папке со скриптом будут переведены в Win-формат, если в первой строке 1 заменить на 2 тогда в UNIX-формат
Код:
_End_of_line(@ScriptDir, 1);Преобразовать в Win-формат

Func _End_of_line($path, $mode) ;1 = Преобразовать в Win-формат, 2 = Преобразовать в UNIX-формат
	Local $search, $item, $new
	$search = FileFindFirstFile($path & '\*.txt')
	While 1
		$item = FileFindNextFile($search)
		If @error Then Exit
		If @extended = 0 Then
			Switch $mode
				Case 1
					$new = StringAddCR(FileRead($path & '\' & $item)) ;Win-формат
				Case 2
					$new = StringStripCR(FileRead($path & '\' & $item)) ;UNIX-формат
			EndSwitch
			FileWrite(FileOpen($path & '\' & $item, 258), $new); UTF8
		EndIf
	WEnd
EndFunc   ;==>_End_of_line
 
Автор
L

lemonia

Новичок
Сообщения
126
Репутация
0
Почему то не все файлы в папке обрабатываются каждый раз (иногда получается). Также смотрел через Acelpad. Во вложении 2 картинки.
 

Вложения

  • Notepad++.jpg
    Notepad++.jpg
    16.9 КБ · Просмотры: 5
  • Обновлять, не спрашивая.jpg
    Обновлять, не спрашивая.jpg
    36.1 КБ · Просмотры: 12

Khaibit

Осваивающий
Сообщения
103
Репутация
25
lemonia сказал(а):
Почему то не все файлы в папке обрабатываются каждый раз (иногда получается). Также смотрел через Acelpad. Во вложении 2 картинки.
Включите в notepad++ отображение символов, кнопка на панели под пунктом "плагины", если в конце строки символ CRLF - это windows формат, если символы LF - это unix формат. Похоже notypad++ не обновляет значение в статус баре.
 
Автор
L

lemonia

Новичок
Сообщения
126
Репутация
0
Включил отображение этих символов. Тестировал с 2 файлами. Оба создавал блокнотом Windows. Для одного из этих файлов показало отсутствие этих символов на конце строки. Этот файл однострочный. Только сейчас сообразил, что проблема из - за этого может быть, так как перенос строки не сделал.
 
Автор
L

lemonia

Новичок
Сообщения
126
Репутация
0
А можно ли в браузере Firefox при загрузке новой страницы или при переходе по ссылке нажимать автоматически на пункт выпадающего списка из верхнего меню браузера? Чтобы применить определённые настройки к открываемой странице, которые можно вызвать через пункты настроек браузера?
 
Автор
L

lemonia

Новичок
Сообщения
126
Репутация
0
Вот это расширение https://addons.mozilla.org/ru/firefox/addon/no-color/ добавляет в меню Вид пункт Toggle the color of pages и в настройках можно выставить нужные для форумов цвета.
Прошу подсказать, как модифицировать скрипт, чтобы он работал? Потом его приделать собираюсь на горячую клавишу через специальную программу. Кстати можно ли сам скрипт AutoIT запускать горячей клавишей без специальной программы?
Код:
T$hWnd = WinActivate('[Class:Firefox]')
WinMenuSelectItem($hWnd, '', 'Вид', 'Toggle the color of pages')


Вручную нажимаю Alt, потом букву В, потом переключаю раскладку на английский и букву T. Затем перед следующей вкладкой надо переключить раскладку опять на русский.
 

Вложения

  • Цвет.jpg
    Цвет.jpg
    104 КБ · Просмотры: 9
Автор
L

lemonia

Новичок
Сообщения
126
Репутация
0
Firefox ESR 52.1.1 (32-бит)
Кстати, предупреждаю, чтобы кто-то себе не раскрасил почту Google, плохой эффект получается, всё время жёлтые буквы без зелёного фона. Жёлтый почему то прилип туда и буквы стали всё время такие пока что, может потом исчезнет.
 

Khaibit

Осваивающий
Сообщения
103
Репутация
25
Что-то не то, указанный плагин только удаляет цвет и фон сайта, новый же цвет видимо задается чем то другим, но не указанным дополнением.
 
Верх