Clever-Excel-Forum

Normale Version: Auslesen eines Inhaltes einer anderen Applikation
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Guten Tag liebe Experten

Ich habe folgenden interessanten Code gefunden und nun frage ich mich, ob das auch im Excel VBA gehen könnte? Noch scheitert es am SystemFocusClass? Vielen Dank für jeden Hinweis.
Gruss
Stefan1


Code:
'zusätzliche Deklarationen
Private Declare Function SendMessage Lib "user32.dll" _
  Alias "SendMessageA" ( _
  ByVal hwnd As Long, _
  ByVal wMsg As Long, _
  ByVal wParam As Long, _
  lParam As Any) As Long
 
Private Const EM_GETSEL As Long = &HB0
Private Const WM_GETTEXT As Long = &HD

Public Sub test()

Dim nSelStart As Long
Dim nSelEnd As Long
Dim sText As String
 
If InStr(1, SystemFocusClass, "textbox", vbTextCompare) > 0 Or SystemFocusClass.Text = "Edit" Then
  On Error Resume Next
  Call SendMessage(SystemFocusHwnd, EM_GETSEL, VarPtr(nSelStart), nSelEnd)
  sText = SPACE$(nSelEnd + 2)
  If Err.Number = 0 Then
    Call SendMessage(SystemFocusHwnd, WM_GETTEXT, nSelEnd + 1, ByVal sText)
    sText = Mid$(sText, nSelStart + 1, nSelEnd - nSelStart)
    If Err.Number = 0 Then
      ' hier wird der aktuell markierte Text ausgegeben
      MsgBox sText
    End If
  End If
  On Error GoTo 0
End If
End Sub
Hallöchen,

um z.B. eine offene Anwendung zu nutzen, kannst Du z.B. so vorgehen:
hwnd = FindWindow("Notepad", vbNullString)
...SendMessage(hwnd ...)
Eventuell hilft Dir auch der Artikel von MSN
https://msdn.microsoft.com/de-de/library/cc749770.aspx