Fremdfenster auslesen ohne SendMessage

Amo8

Mitglied
Ich sitze gerade an ein Programm was bei einen Fremdprogramm ein Textfenster auslesen soll. Die Aufrufzeile lautet:
Visual Basic:
Private Sub Timer1_Timer() 'hier wird das Textfenster ausgelesen

  Dim hWnd As String
  Dim lLength As Long
  Dim sWindowText As String * 10024
  hWnd = Text2.Text   'Handle des Textfensters
  
  Text1.Text = ""     'Textinhalt vorher leeren
  'Message wird geschickt an das Handle (Text2) zum auslesen

  lLength = SendMessage(hWnd, WM_GETTEXT, _
      Len(sWindowText) + 1, ByVal sWindowText)

      'Ausgelesener Text landet in Text 1 auf der Form
      Text1.Text = Left(sWindowText, lLength)
     Text1.SelStart = lLength    'Text wird gescrollt
     lLength = Len(Text1.Text)
End Sub
Leider funktioniert das nicht, der Cod ist richtig, weil andere Fenster antworten, nur das spezielle nicht, es ist vermutlich eine Routine eingebaut, die das verhindert. Aber wen ich mit der Maus den Text formatiere landet er automatisch in der Zwischenablage von Windows, ohne weiteres zutun. Meine Frage wie kann ich das nutzen, also praktisch umsetzen. Ich brauche ein paar Zeilen Cod, vieleicht kann Jemand es abändern.
 
Wenn der Text in der Zwischenablage ist, kannst Du ihn doch einfach nutzen:

Visual Basic:
    Dim Tx As String
    Tx = Clipboard.GetText
 
Ja schon aber ich muß den Text vorher automatisch durch mein Programm formatieren und das in einen Fremd-Programm. Wie geht sowas? Aus der Zwischenablage importieren, das ist jetzt klar aber wie bekomme ich das dahin?
 
Mann kann ein Fremdes-Fenster klauen und es in die eigene Form einbinden.
Visual Basic:
Private Sub Command1_Click()
    Dim ltop As Long
    Dim lleft As Long
    Dim lwidth As Long
    Dim lheight As Long
  
    ' Notepad starten
    Call Shell("C:File.exe", vbHide)
    
    ' Warten bis vollstaendig geladen
    Call pause(0.2)
   
    ' Handle des neuen Notepad-Fensters feststellen
    lhwnd = FindWindow("C:File.exe", vbNullString)
    
    If lhwnd <> 0 Then
        Command1.Enabled = False
        Command2.Enabled = True
        
        ' Jetzt wird das Fenster geklaut
        Call SetParent(lhwnd, Me.hwnd)
        
        ' Ausmasse festlegen (Scalemode von Form1 muss Pixel sein)
        ltop = Command1.Top + Command1.Height
        lleft = 0
        lwidth = Me.ScaleWidth
        lheight = Me.ScaleHeight - ltop
        
        ' Neue Ausmasse setzen
        Call MoveWindow(lhwnd, lleft, ltop, lwidth, lheight, 1)
        
        ' Caption zuweisen
        ret = SetWindowText(lhwnd, "Kidnapped File")
        
        ' Sichtbar machen
        ret = ShowWindow(lhwnd, 1)
        
    End If
    
End Sub
Aber wie dann weiter?. Wie formatiert mann den Text in dem Fenster?
 
Zurück