vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 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: MatthiasR
Datum: 16.02.07 14:46

BrickTop schrieb:
Zitat:

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
 
    ("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
 
    ("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


Ich brauch sowas für firefox. Ich bekomm das aber nicht hin, könnte mir da jmd helfen?

mfg, matthias
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.136DarkWolf28.01.07 23:19
Re: Taste an bestimmten Prozess senden1.214BrickTop31.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