Страница: 1 |
Страница: 1 |
Вопрос: Получить выделенный текст другого приложения
Добавлено: 30.01.05 10:57
Автор вопроса: Alexander N | Web-сайт:
Как получить выделенный текст другого приложения? Или получить текст другого приложения, над которым висит курсор мыши.
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #1
Добавлено: 30.01.05 11:58
EM_GETSELTEXT
Номер ответа: 2
Автор ответа:
Mihalыch
ICQ: 373-509-101
Вопросов: 56
Ответов: 330
Профиль | | #2
Добавлено: 30.01.05 12:32
Option Explicit
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long
Private Declare Function GetForegroundWindow Lib "user32.dll" () As Long
Private Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetClassName Lib "user32.dll" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Private Declare Function GetWindowText Lib "user32.dll" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Const EM_GETSEL As Long = &HB0
Private Sub Command1_Click()
 im hWin As Long
 im hChildWin As Long
 im NameLen As Long
 im sBuffer As String
sBuffer = String$(256, 0)
hWin = FindWindow(vbNullString, "Form1"
'hWin = GetForegroundWindow
 o
hChildWin = FindWindowEx(hWin, hChildWin, vbNullString, vbNullString)
NameLen = GetClassName(hChildWin, sBuffer, 255)
sBuffer = Left(sBuffer, NameLen)
If sBuffer = "ThunderRT6TextBox" Then
NameLen = GetWindowText(hChildWin, sBuffer, 255)
sBuffer = Left(sBuffer, NameLen)
NameLen = SendMessage(hChildWin, EM_GETSEL, 0, 0&
MsgBox Mid(sBuffer, CInt(NameLen And &HFFFF& + 1, CInt(NameLen / &H10000) - CInt(NameLen And &HFFFF&)
End If
Loop While hChildWin <> 0
End Sub
Номер ответа: 3
Автор ответа:
Alexander N
Вопросов: 21
Ответов: 44
Web-сайт:
Профиль | | #3
Добавлено: 30.01.05 16:29
Например, как мне применить к выделенному в ворде текст?
Номер ответа: 4
Автор ответа:
Mihalыch
ICQ: 373-509-101
Вопросов: 56
Ответов: 330
Профиль | | #4
Добавлено: 30.01.05 17:39
С Word’ом наверное лучше работать средствами VBA.
Номер ответа: 5
Автор ответа:
Alexander N
Вопросов: 21
Ответов: 44
Web-сайт:
Профиль | | #5
Добавлено: 02.02.05 19:53
Ну хорошо, а еси не известен заголовок окна и, что за компонент содержит выделенный текст. Что тогда?
Номер ответа: 6
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #6
Добавлено: 03.02.05 10:41
А это смотря как запускать этот ворд
Option Explicit
Dim MyWord As Word.Application
Dim MyDoc As Word.Document
Private Sub Command1_Click()
Text1.Text = MyDoc.ActiveWindow.Selection
End Sub
Private Sub Form_Load()
Set MyWord = New Word.Application
Set MyDoc = Word.Documents.Open("e:\1.doc"
MyWord.Visible = True
End Sub
Private Sub Form_Unload(Cancel As Integer)
MyDoc.Close
MyWord.Quit
Set MyDoc = Nothing
Set MyWord = Nothing
End Sub
Номер ответа: 7
Автор ответа:
Alexander N
Вопросов: 21
Ответов: 44
Web-сайт:
Профиль | | #7
Добавлено: 03.02.05 12:32
Ясно, а если не ворд, а нечто самопальное?
Номер ответа: 8
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #8
Добавлено: 03.02.05 12:57
Ну тогда ты, очевидно, хотя бы должен знать "заголовок окна и, что за компонент содержит выделенный текст", т.е., собственно, знать чего именно ты хочешь.