vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 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

Fortgeschrittene Programmierung
Sendmessage zwischen Anwendungen funtioniert nicht 
Autor: Mausjockey
Datum: 07.12.04 13:59

Ich schreibe gerade zwei Anwendungen, einen Server und einen Client, die mit Hilfe von Sendmessage Daten austauschen sollen. Primär soll der Client Daten an den Server senden. Die Ermittlung der Handle des Server-Forms über den Formnamen funktioniert auch einwandfrei, aber offensichtlich werden die Messages nicht richtig gesendet. Ich sitze schon einen Tag/Nacht dran und bin hier echt verzweifelt.
Der Client soll den ersten Buchstaben aus einem Textfeld auf Knopfdruck senden. Der Server soll den Empfang anzeigen und die Daten des empfangenen "Paketes" ausgeben.

Das steht im Form des Clients:

Option Explicit
 
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
  (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
 
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
  (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
  lParam As Any) As Long
 
Dim DesthWnd As Long ' Holds the Process Handle
 
Const WM_USER As Long = &H400
 
Sub FindHandle()
        DesthWnd = FindWindow(vbNullString, "BISERV")
        If (DesthWnd = 0) Then
            Call MsgBox("Window not found!", vbOKOnly + vbExclamation)
            Exit Sub
        End If
    Call MsgBox("Handle: " & DesthWnd, vbOKOnly + vbExclamation)
End Sub
 
Private Sub Command1_Click()
    Call FindHandle
End Sub
 
 
Private Sub Command2_Click()
    Call SendText(Form1.Text1.Text)
End Sub
 
Private Sub SendText(t As String)
  Call SendMessage(DesthWnd, WM_USER + &H101, 25555, CLng(Asc(Mid(t, 1, 1))))
End Sub
Im Form des Servers steht:

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
  (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
  lParam As Any) As Long
 
Option Explicit
 
Private Sub Form_Load()
    Call Init(Form1.hWnd)
End Sub
 
Private Sub Form_Unload(Cancel As Integer)
    Call Terminate(Me.hWnd)
End Sub
Im einzigen Modul des Servers befindet sich folgender Quellcode:

Private Declare Function CallWindowProc Lib "user32" Alias _
         "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal _
         hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, _
         ByVal lParam As Long) As Long
 
Private Declare Function SetWindowLong Lib "user32" Alias _
        "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As _
        Long, ByVal dwNewLong As Long) As Long
 
Const GWL_WNDPROC As Long = -4&
Const WM_COPYDATA As Long = &H4A
 
Dim PrevWndProc As Long
 
Public Sub Init(hWnd As Long)
    PrevWndProc = SetWindowLong(hWnd, GWL_WNDPROC, _
                              AddressOf WindowProc)
End Sub
 
Public Sub Terminate(hWnd As Long)
    Call SetWindowLong(hWnd, GWL_WNDPROC, PrevWndProc)
End Sub
 
Private Function WindowProc(ByVal hWnd As Long, ByVal Msg As Long, _
    ByVal wParam As Long, ByVal lParam As Long) As Long
 
    If Msg > WM_USER + &H100 Then
        Form1.Text1.Text = hWnd
        Form1.Text2.Text = Msg
        Form1.Text3.Text = wParam
        Form1.Text4.Text = lParam
    End If
 
    WindowProc = CallWindowProc(PrevWndProc, hWnd, Msg, wParam, lParam)
End Function
Es kommen viele Meldungen an, aber nicht die Meldungen mit der hohen 'Messagekennung', die vom Client stammen.

Ich hoffe, mir kann jemand sagen, wo der Fehler liegt.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Sendmessage zwischen Anwendungen funtioniert nicht705Mausjockey07.12.04 13:59
Zusatz Sendmessage zwischen Anwendungen funtioniert nicht394Mausjockey07.12.04 14:12
Re: Zusatz Sendmessage zwischen Anwendungen funtioniert nich...459mm78pr07.12.04 19:53

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