vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

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

Fortgeschrittene Programmierung
VB.NET ... (user32 API) PostMessage - Cache leeren? 
Autor: Griever
Datum: 12.10.14 19:25

Mein Problem:

Ich sende mit PostMessage und einer Overrides WndProc ein Kommando an ein separaten Prozess (Projekt-Intern).
Grund: Ich möchte einen separaten Manager haben, welcher unabhängig vom Hauptprogramm weiterlaufen kann, jedoch (one-way) mit diesem noch kommunizieren kann.

Dazu möchte ich vom Hauptfenster eine Nachricht ans Manager-Fenster schicken. Das funktioniert schon einigermaßen. ABER ... Wenn ich 2 Nachrichten sende (unabhängig, wieviel Zeit ich dazwischen lasse), werden bei der 2ten Nachricht die Erste Nachricht DAVOR gepackt, ohne gelöscht zu werden. Das sieht in der Praxis so aus:

- PostMessage mit Nachricht "ABCDE"
- WndProc empfängt diese fehlerfrei. (Ergebnis: "ABCDE")
- PostMessage mit Nachricht "12345"
- WndProc empfängt diese NICHT fehlerfrei. (Ergebnis: "ABCDE12345")

Wie kann ich das verhindern? Code der Klasse, welche ich dafür nutze, verlinke ich via PasteBin unter diesem Beitrag. Ich habe es geprüft. Die Empfangs-Funktion (WndProc) Empfängt direkt das oben beschriebene Ergebnis.

Ideal wäre ein "Zurücksetzen" der Nachricht, welche ggf. im Speicher hängt. Finde jedoch dazu garnix. Wer kann mir meinen Fehler hier aufzeigen?

Klasse:
http://pastebin.com/3v1sUQw7

Wäre wirklich dankbar, wenn mir da jemand helfen könnte.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB.NET ... (user32 API) PostMessage - Cache leeren? 
Autor: Manfred X
Datum: 12.10.14 22:25

Falsches Forum!

Für Prozeß-Kommunikation sind z.b. Named Pipes vorgesehen ....
http://msdn.microsoft.com/de-de/library/bb546085%28v=vs.110%29.aspx
http://www.codeproject.com/Tips/441841/Csharp-Named-Pipes-with-Async
http://www.codeproject.com/Tips/492231/Csharp-Async-Named-Pipes

Beitrag wurde zuletzt am 12.10.14 um 22:36:05 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB.NET ... (user32 API) PostMessage - Cache leeren? 
Autor: Griever
Datum: 12.10.14 22:56

Ich hab vergessen zu erwähnen, dass ich unter dem .net-framework 2.0 arbeite! Dort sind Pipes noch nicht drin.

Ich habe es bereits mit Named Pipes probiert ... Jedoch ist das komplizierter als erwartet. Besonders, wenn es um Asynchrone Kommunikations-Erwartungshaltung geht.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB.NET ... (user32 API) PostMessage - Cache leeren? 
Autor: Griever
Datum: 13.10.14 00:05

Ich habe den Ursprung des Fehlers entdeckt.

    Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
        Select Case m.Msg
            Case &H400
                Communicate.BuildString(m.LParam)
            Case Else
                MyBase.WndProc(m)
        End Select
    End Sub
Dort wird zwar die Message abgearbeitet (ausgelesen und umgewandelt sowie auf ein RaiseEvent gejagt), jedoch wird dem System (da es ja eine ByRef ... also eine Referenz ist) nicht mitgeteilt, dass die Nachricht auch abgefertigt wurde. Dies erreiche ich mit ...

                m.Result = New IntPtr(1)
direkt VOR Communicate.BuildString(m.LParam)

PS: Communicate ist direkt die Klasse, die im eröffnungspost verlinkt war. Zwar nicht exakt identisch (Threading wurde entfernt), aber funktioniert zu 100% ^^

Beitrag wurde zuletzt am 13.10.14 um 00:05:44 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB.NET ... (user32 API) PostMessage - Cache leeren? 
Autor: Blackbox
Datum: 13.10.14 20:47

Hi,

dieser Programmierstil ist absolete. Proggst Du etwa .NET?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB.NET ... (user32 API) PostMessage - Cache leeren? 
Autor: Griever
Datum: 13.10.14 22:04

Jap. Ich arbeite mit dem .net-framework 2.0 mittels Sharp Develop
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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-2024 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