vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Re: Taste an bestimmten Prozess senden 
Autor: BrickTop
Datum: 31.01.07 23:18

Hallo DarkWolf,

hatte ich wohl überlesen, dass mit den Fenstern nicht in den Vordergrund.. Sorry!
Also dann wäre noch die Methode über SendMessage die mir einfällt. Laut MSDN gibt es auch anscheinend derzeitig keine andere Methode. Ich finde API Aufrufe aus NET etwas „nervig“ – Unmanaged-Code kann in Managed-Code schnell mal zur Problemfalle werden Auch in Betracht mit den Security Options in NET – aber das musst Du als Entwickler letztendlich entscheiden.

[u]Teste mal den Code:
Imports System
Imports System.Runtime.InteropServices
 
Public Class Form1
 
    Const WM_GETTEXT As Integer = 13 ' 0x000d
    Const WM_SETTEXT As Integer = 12 ' 0x000c
 
    <DllImport("user32.dll")> _
    Private Shared Function FindWindowEx( _
                   ByVal hwndParent As IntPtr, _
                   ByVal hwndChildAfter As IntPtr, _
                   ByVal lpszClass As String, _
                   ByVal lpszWindow As String) As IntPtr
    End Function
 
    <DllImport("user32.dll")> _
    Private Shared Function SendMessage( _
                   ByVal hWnd As IntPtr, _
                   ByVal Msg As Integer, _
                   ByVal wParam As Integer, _
                   ByVal lParam As System.Text.StringBuilder) _
                   As Integer
    End Function
 
    Private Sub Button1_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button1.Click
        Dim myProcess As Process() = Process.GetProcessesByName("Notepad")
 
        Dim hWnd_EditBox As IntPtr = _
        FindWindowEx(myProcess(0).MainWindowHandle, _
        IntPtr.Zero, "EDIT", Nothing)
 
        If Not (hWnd_EditBox = IntPtr.Zero) Then
            Dim SB As New Text.StringBuilder
            Dim BufferSize As Integer = 32768
 
            SB.EnsureCapacity(BufferSize)
 
            SendMessage(hWnd_EditBox, WM_GETTEXT, BufferSize, SB)
            SB.Append("Hallo vbWelt!" + vbNewLine)
            SendMessage(hWnd_EditBox, WM_SETTEXT, BufferSize, SB)
        End If
 
    End Sub
End Class
Bei dem Code wird nach dem Unterfenster im Notepad gesucht (nach dem Handle) – dieses Unterfenster spricht man dann über das Nachrichten-System von Windows an und kann somit den Text auslesen und danach wieder zuweisen – Das musst Du natürlich, entsprechend der Applikation von der Text ausgelesen bzw. eingelesen wird, anpassen. In dem Falle heißt die Klasse bei dem Notepad „EDIT“ – Hier empfehlen sich Programme wie z.B. Spy++ von Microsoft.

Siehe (bzw. muss das noch angepasst werden)
      Dim hWnd_EditBox As IntPtr = FindWindowEx(myProcess(0).MainWindowHandle, _
        IntPtr.Zero, "EDIT", Nothing)
Wichtig – die Buffersize – die habe ich jetzt mal völlig hoch gehalten um das Prinzip zu erklären. Hier musst Du evtl. auch noch bei.

Viel Erfolg + Glück
BrickTop

_________________________________________________________________________________________________
Internet-Adressen innerhalb des (..) WWW beginnen stets mit der Buchstabenfolge http://www. (LG Duisburg, AZ 8 O 219/99)

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Taste an bestimmten Prozess senden1.672DarkWolf26.01.07 17:29
Re: Taste an bestimmten Prozess senden1.840BrickTop28.01.07 17:33
Re: Taste an bestimmten Prozess senden1.137DarkWolf28.01.07 23:19
Re: Taste an bestimmten Prozess senden1.215BrickTop31.01.07 23:18
Re: Taste an bestimmten Prozess senden1.094MatthiasR16.02.07 14:46
Re: Taste an bestimmten Prozess senden1.053BrickTop21.02.07 21:09

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel