Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Auslesen eines Inhaltes einer anderen Applikation (2)
#1
Guten Tag liebe Excel-Experten

Mit der Hilfe von Schauan konnte ich den nachfolgenden Code zum Laufen bringen und aus einer Anwendung einen Text auslesen. Leider funktioniert das seit dem Release der Oracle-Datenbank nicht mehr, obwohl keine inhaltliche Änderungen oder gar andere Felder enthalten sind. Woran kann das liegen. Wo könnte ich schrauben?
Vielen Dank für Eure wertvolle Unterstützung.

Grüsse
Stefan



Code:
Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Const GC_CLASSNAMEMSFORM = "ThunderDFrame"
Const GWL_STYLE = -16
Const WS_VISIBLE = &H10000000
'Zwischenspeicher
Private Declare Function SendMessage Lib "user32" Alias _
        "SendMessageA" (ByVal hwnd As Long, ByVal wMsg _
        As Long, ByVal wParam As Long, ByVal lParam As _
        Any) As Long
Private Declare Function WindowFromPoint Lib "user32" (ByVal _
        xPoint As Long, ByVal yPoint As Long) As Long
       
Private Declare Function GetCursorPos Lib "user32" (lpPoint As _
        POINTAPI) As Long
       
Private Declare Function GetClassName Lib "user32" Alias _
        "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName _
        As String, ByVal nMaxCount As Long) As Long
Private Declare Function GetParent Lib "user32" _
        (ByVal hwnd As Long) As Long
     
Private Type POINTAPI
  x As Long
  y As Long
End Type
Const WM_SETTEXT = &HC
Const WM_GETTEXT = &HD

Function InOutText(bC As Byte, sOutText As String) As String
Dim Result&, Handle&, Parent, p As POINTAPI, Buffer$, Class$
    Result = GetCursorPos(p)
    Handle = WindowFromPoint(p.x, p.y)
    Parent = GetParent(Handle)
    Class = SPACE$(128)
    Result = GetClassName(Handle, Class, 128)
    Class = LCase(Left$(Class, Result))
    '---------------------------------------------------------------
    'ErrorHandler
    On Error Resume Next    
    '---------------------------------------------------------------
    'If InStr(1, Class, "edit") <> 0 Or _
       InStr(1, Class, "text") <> 0 Then
        If bC = 1 Then
          Buffer = SPACE$(32767)
          Result = SendMessage(Handle, WM_GETTEXT, Len(Buffer), _
                               ByVal Buffer)
          InOutText = Left$(Buffer, Result)
        Else
          Call SendMessage(Handle, WM_SETTEXT, 0&, _
                           ByVal CStr(sOutText))
          InOutText = "erfolgt"
        End If
    'End If
 End Function
Antworten Top
#2
Hallo Stefen,

was bedeutet denn "funktioniert ... nicht mehr" ? Kommt eine Fehlermeldung, kommen keine Daten, sind Daten unvollständig, ... ? Wie erfolgt der Aufruf von InOutText ?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste