15.06.2017, 22:17
(Dieser Beitrag wurde zuletzt bearbeitet: 16.06.2017, 05:17 von WillWissen.
Bearbeitungsgrund: Code in Codetags gesetzt
)
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
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