Что нового

Поиск текств в текстовом редакторе

vovsla

Осваивающий
Сообщения
607
Репутация
36
Подскажите пожалуйста, как лучше всего искать текст в текстовом редакторе?
Например в блокноте можно было бы вызвать поиск по горячим клавишам (Ctrl+f), потом ввести искомый тест в окно поиска и симулировать нажатие кнопки поиска.
Но мне кажется, что есть более надежный способ. Как один из вариантов можно было бы искомый тест добавлять сразу в буфер для поиска и выслать в редактор F3.
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Vovsla
искать текст в текстовом редакторе
Какова цель данного поиска? Допустим, вы найдёте текст - что дальше?

более надежный способ
Прочитать весь текст из элемента, а лучше сразу из файла, и искать средствами AutoIt.
 
Автор
V

vovsla

Осваивающий
Сообщения
607
Репутация
36
Цель - чтобы пользователь не искал текст по ctrl+f делать это автоматически, желательно позиционировать курсор в начале строки текста
 

The_Immortal

Новичок
Сообщения
84
Репутация
4
Vovsla, быть может Вы намекаете на подсветку текста по выделенному фрагменту:

12.08.2015-14.55.png


?

Но тогда не понимаю фразу:[?]
желательно позиционировать курсор в начале строки текста
 
Автор
V

vovsla

Осваивающий
Сообщения
607
Репутация
36
Да, я имел в виду подсветку текста, если делать аналог поиска. Но учитывая что реализация может быть и какая-то другая, то написал про курсор.
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
Я ничего не понял. В редакторах есть поиск. Если нужен поиск в своём редакторе, то найти прогрвммно, и установить курсор или выделение в найденную позицию, пример этого есть в моём блокноте.
 
Автор
V

vovsla

Осваивающий
Сообщения
607
Репутация
36
Есть поиск, но я не хотел производить поиск посылая горячие клавиши, думал что можно как-то через WinApi или командой SendMessage
Но пришлось сделать через горячие клавиши

Код:
Func Setupini()
	$SelectItem=_GUICtrlListView_GetItemTextArray($ListView1)
	$Pack=GetPackSelected()

	Select
		Case $Pack=False
			Return
		Case Not FileExists($Pack&'\Depo\Setup.ini')
			MsgBox(262144+16, $Title, 'Не найден файл '&@CRLF&$Pack&'\Setup.ini')
			Return
	EndSelect

	$WinListArr1=WinList('[Class:Notepad]')
	$FileArr=FileReadToArray($Pack&'\Setup.ini')
	$StringNum=_ArraySearch($FileArr,$SelectItem[1], 0, 0, 0, 1)
	If @error Then $StringNum=0

	$PID=Run(@SystemDir&'\notepad.exe '&$Pack&'\Setup.ini', '', @SW_MAXIMIZE)
	If @error Then
		MsgBox(262144+16, $Title, 'Ошибка запуска программы '&@SystemDir&'\notepad.exe')
		Return
	EndIf

	If $SelectItem[1] = '' Then Return
	Do
		Sleep(100)
	$PIDWinArr=_WinAPI_EnumProcessWindows($PID)
	Until Not @error

	$Index=_ArraySearch($PIDWinArr, 'Notepad', 0, 0, 0, 1)
	$WinHandle=$PIDWinArr[$Index][0]

	ControlSend($WinHandle, '', '', '^f')
	$PIDWinArr=_WinAPI_EnumProcessWindows($PID)
	Do
		$Index=_ArraySearch($PIDWinArr, '#32770', 0, 0, 0, 1)
	Until Not @error
	$WinHandle=$PIDWinArr[$Index][0]

	ControlSetText($WinHandle, '', 'Edit1', $SelectItem[1])
	ControlClick($WinHandle, '', 'Button6')
	WinClose($WinHandle)

	If $StringNum>50 Then MouseWheel('down', 20)
EndFunc
 
Верх