2013-05-02 2 views
0

Я мог бы найти позицию каретки в любом приложении, но мне нужно знать, какой текст (слово) есть в текущей позиции каретки.Найти текст в позиции каретки

Как я могу получить текст?

+0

Некоторое количество кода было бы полезно –

+0

Я был бы удивлен, если бы вы могли найти позицию каретки в * любом приложении (по крайней мере, не любыми способами, кроме, screencapping screen, затем OCRing) ... у большинства приложений, вероятно, не было бы никакого интерфейса, чтобы просить об этом и по уважительной причине. Вы говорите о том, чтобы получить позицию каретки элемента управления в вашем собственном приложении, которым вы управляете кодом? – neminem

ответ

2

Очень сложно понять ваш вопрос, который, как представляется, в основном формулируется как заявление.

Предполагая, что я понимаю ваш вопрос попробовать методологию, как это ...

Private Sub CheckPosition() 
Dim char_pos As Long 
Dim row As Long 
Dim col As Long 

char_pos = SendMessage(Text1.hwnd, EM_GETSEL, 0, 0) 
char_pos = char_pos \ &H10000 

row = SendMessage(Text1.hwnd, EM_LINEFROMCHAR, _ 
char_pos, 0) + 1 
col = char_pos - SendMessage(Text1.hwnd, EM_LINEINDEX, _ 
-1, 0) + 1 

lblPosition.Caption = "(" & Format$(row) & ", " & _ 
Format$(col) & ")" 
End Sub 

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As _ 
Integer) 
CheckPosition 
End Sub 

Private Sub Text1_KeyUp(KeyCode As Integer, Shift As _ 
Integer) 
CheckPosition 
End Sub 

Private Sub Text1_MouseDown(Button As Integer, Shift As _ 
Integer, X As Single, Y As Single) 
CheckPosition 
End Sub 

Private Sub Text1_MouseUp(Button As Integer, Shift As _ 
Integer, X As Single, Y As Single) 
CheckPosition 
End Sub 
2

Если вы используете приложение WinForms, и положение каретки вы имеете в виду Позицию курсора в текстовом поле. Тогда вы можете сделать что-то подобное.

  • 1. Приложить обработчики событий KeyUp и MouseUp событий
  • 2. Получить текущее текстовое поле Текст и Caret Позиция
  • 3. Пасс это функция, которая возвращает слово под этой позиции
  • private void textBox1_KeyUp(object sender, EventArgs e) 
        { 
         GetWordFromCaretPosition(textBox1.Text, textBox1.SelectionStart); 
        } 
    
        private void textBox1_MouseUp(object sender, EventArgs e) 
        { 
         GetWordFromCaretPosition(textBox1.Text, textBox1.SelectionStart); 
        } 
    
        private string GetWordFromCaretPosition(string input, int position) 
        { 
         string word = string.Empty; 
         //Yet to be implemented. 
         return word; 
        } 
    

  • Для WPF позиции Textbox каретки представлен textBox1.CaretIndex
  • Для WPF RichTextBox см этой темы: WPF RichTextBox - get whole word at current caret position
  • Для Windows Pho ne 7 позиция каретки представлена ​​textBox1.SelectionStart. Посмотрите эту тему, если ваше приложение является приложением Windows Phone: Selecting the tapped-on word on a single click in textbox
  • Смежные вопросы