Text an ein Fenster senden - hier notepad

    • VB.NET

    Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von aloz.

      Text an ein Fenster senden - hier notepad

      hallo gemeinde,

      eine - von mehreren methoden texte an ein fenster zu senden.
      hier wird die zwischenablage benutzt.

      VB.NET-Quellcode

      1. Public Class Form1
      2. Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As IntPtr) As Integer
      3. Private Declare Function GetForegroundWindow Lib "user32" () As Integer
      4. Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As IntPtr, ByRef lpdwProcessId As Integer) As Integer
      5. Private Const WM_SETFOCUS As Int32 = &H7
      6. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      7. Process.Start("Notepad.exe")
      8. End Sub
      9. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      10. Dim p As Process = Process.GetProcessesByName("Notepad")(0)
      11. Clipboard.SetText(Me.TextBox1.Text)
      12. Me.Text = "in den vordergrundbringen"
      13. SetForegroundWindowEx(p.MainWindowHandle)
      14. Me.Text = "text senden"
      15. SendKeys.SendWait("^v")
      16. End Sub
      17. 'quelle: http://www.microsoft.com/germany/msdn/library/visualtools/vb6/FensterInDenDesktopVordergrundBringen.mspx?mfr=true
      18. ' Verwenden Sie die Funktion SetForegroundWindowEx statt der
      19. ' API Funktion SetForegroundWindow ausschließlich, wenn das
      20. ' betroffene Fenster tatsächlich in den Vordergrund gebracht
      21. ' werden muss.
      22. Private Function SetForegroundWindowEx(ByVal hWndWindow As Long) As Boolean
      23. ' Dient dem Setzen des Vordergrundfensters mit der Funktion
      24. ' SetForegroundWindow, die sich unter neueren Windows-Versionen
      25. ' anders verhält als unter Windows 95 und Windows NT 4.0.
      26. ' Der Rückgabewert ist True, wenn das Fenster erfolgreich in den
      27. ' Vordergrund gebracht werden konnte.
      28. Dim lThreadForeWin As Long ' Thread-ID für das aktuelle Vordergrundfenster
      29. Dim lThreadWindow As Long ' Thread-ID für das in hWndWindow spezifizierte
      30. ' Fenster, das in den Vordergrund des Desktops
      31. ' gebracht werden soll.
      32. ' Falls das Fenster dem gleichen Thread wie das aktuelle
      33. ' Vordergrundfenster angehört, ist kein Workaround erforderlich:
      34. lThreadWindow = GetWindowThreadProcessId(hWndWindow, 0)
      35. lThreadForeWin = GetWindowThreadProcessId(GetForegroundWindow(), 0)
      36. If lThreadWindow = lThreadForeWin Then
      37. ' Vordergrundfenster und zu aktivierendes Fenster gehören zum
      38. ' gleichen Thread. SteForegroundWindow allein reicht aus:
      39. SetForegroundWindowEx = CBool(SetForegroundWindow(hWndWindow))
      40. Else
      41. ' Das Vordergrundfenster gehört zu einem anderen Thread als das
      42. ' Fenster, das neues Vordergrundfenster werden soll. Mittels
      43. ' AttachThreadInput erhaten wir kurzzeitig Zugriff auf die
      44. ' Eingabeverarbeitung des Threads des Vordergrundfensters,
      45. ' so dass SetForegroundWindow wie erwartet arbeitet:
      46. SetForegroundWindowEx = CBool(SetForegroundWindow(hWndWindow))
      47. End If
      48. End Function
      49. End Class

      gruss

      mikeb69