XSEL для Windows эквивалент API или командной строки? - PullRequest
0 голосов
/ 23 сентября 2011

Существует ли API или утилита командной строки, которая возвращает текущий выбранный текст из активного окна или даже глобально, например, утилита linux "xsel"?

  • Я не против получить меньше, чем100% успеха.
  • Я знаю, что каждое окно может иметь свой собственный выбор текста, но пока оно незначительно.
  • На данный момент единственное решение / обходной путь, который у меня есть, это отправить ключи"и читать из буфера обмена, но это плохое решение по 2 очевидным причинам.
  • Я знаю, как это сделать в MS-Word, но это 1% случаев.

спасибо

edit

Из этого обсуждения я узнал, что слишком много технологий для выбора текста.поэтому я вернусь к использованию буфера обмена.Спасибо, в любом случае.

Я оставляю этот вопрос открытым на время, если у кого-то случится чудо.

Ответы [ 2 ]

1 голос
/ 23 сентября 2011

это решение, которое я собрал из нескольких источников.

  • это будет работать только на простых текстовых элементах управления.для других типов текста есть другие решения, но для простоты я буду использовать буфер обмена.

(полный код, объявления и зависимости, google для "SendMessage hWndCaret")

If hWndCaret <> 0 Then

    'first, get all text

    nLength = SendMessage(hWndCaret, WM_GETTEXTLENGTH, 0&, ByVal 0&)
    If nLength <> 0 Then
        buff = Space$(nLength + 1)
        res = SendMessage(hWndCaret, WM_GETTEXT, nLength + 1, ByVal buff)
        If res <> 0 Then Txt = Left$(buff, res)
    End If

    ' then
    If nLength <> 0 Then
        buff = Space$(nLength + 1)
        res = SendMessage(hWndCaret, EM_GETSEL, VarPtr(StartPos), EndPos)

        selection = Mid(Txt, StartPos + 1, EndPos - StartPos)
    End If

End If
0 голосов
/ 24 сентября 2011

Проверьте, поддерживает ли программа доступный интерфейс, например IAccessible IAccClientDocMgr или TextPattern_GetSelection / TextRange_GetText . Многие программы должны быть доступны для продажи правительству США из-за Закона об американцах-инвалидах. Вы можете вызвать AccessibleObjectFromWindow или AutomationElement :: FromHandle для окна.

Похоже, никто не документирует их доступное дерево объектов, и если существует API, то API является предпочтительным способом получения информации из программы. Например. вы должны использовать Q249232 , чтобы получить IHTMLDocumnent2, если приложение является IE. Существуют значительные изменения в оценочном дереве IE7 и IE8 при проверке в шпионе пользовательского интерфейса.

Для других программ вам может не повезти. Я не могу найти выбор в редакторе электронной почты для входа при использовании UISpy. Доступность зависит от доброй воли программистов реализовать доступность в своих программах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...