Das OFFIZIELLE PROFAN SUPPORT FORUM
Einsteigerfragen
PROFAN-Programmierung
Helfer & Tools
Anregungen & Vorschläge
PROFAN-NEWS
Die Regeln!
1 - Einsteigerfragen

 Neues Thema  |  Zur Übersicht  |  Suchen  |  Einloggen   Vorherige Nachricht  |  Nächste Nachricht 
 UserMessages + Prozess
Autor: Heinz Brill (---.dip0.t-ipconnect.de)
Datum:   04.04.16 19:26

Da ja Usermessages programmübergreifend
funktionieren, habe ich mal eine Frage:
Wäre es möglich, einem laufenden Prozess eine
UserMessage zu schicken ?

Hintergrund :
manchmal ändern sich ja Konfigurationsdaten o.ä., mit denen
man den Prozess mit pExec() beschickt.

Hier mal ein Beispiel, wie ich mir das denke :

 Declare h&, hwin&, pid&, pfenster&, nwert&
 Declare Handle label, Edit1, Button1
 
 Proc Prozess
 Parameters fhandle&, handle&, diff&
 declare wert&, Handle prozessf
 prozessf = Create("Window", fhandle&, "Prozess 1", 10, 10, 200, 150)
 wert& = 0
 Var ende% = 0
 ShowWindow(prozessf, 0)
 SendMessage(fhandle&, $1000, prozessf, 0)
 WhileNot ende%
  ' Waitinput
   case getText$(fhandle&) = "" : ende% = 1
   If %UMessage = $2000
      diff& = &uwParam
      wert& = 0
   EndIf
   Inc wert&, diff&
   SetText handle&, str$(wert&)
   Sleep 200
 EndWhile
 DestroyWindow(prozessf)
 EndProc
 
 hwin& = Create("Window", %DeskTop, "Hauptfenster", 100, 300, 300, 200)
 create("Text", hwin&, chr$(65) + ": ", 20, 20 , 20, 20)
 h& = Create("Text", hwin&, "", 40, 20, 100, 20)
 Label   = Create("Text",  hwin&, "Wert :", 20, 50, 80, 25)
 Edit1   = Create("Edit",  hwin&, "",      100,50, 60, 25)
 Button1 = Create("Button",hwin&, "Sende", 180, 50, 60, 25)
 
 UserMessages $1000, $2000
 
 pid& = pExec("|Prozess", hwin&, h&, 1)
 SetActiveWindow(hwin&)
 Var ende% = 0
 
 whilenot ende%
   waitinput
   If %UMessage = $1000 
      pfenster& = &UwParam
      'MessageBox(Str$(pfenster&), "Handle des Prozessfensters", 0)
   EndIf   
   If Clicked(Button1)
     nwert& = Val(GetText$(Edit1))
     If nwert& <> 0
        If pfenster& <> 0
           SendMessage(pfenster&, $2000, nwert&, 0)
        EndIf
     EndIf
   EndIf
   case %key = 2 : ende% = 1
 endwhile
 
 end
 


Hier soll aus dem Hauptprogramm heraus die Variable
diff& neu bestückt werden, die dann im Prozess mit dem
neuen Wert rechnet und im Hauptprogramm in das Textlabel
geschrieben wird.

Oder geht sowas nur über FileMap, die ich im Prozess dann
periodisch auslesen müsste.

H.Brill
XProfan X3 + FreeProfan

 Beitrag beantworten  |  Foren-Liste  |  Alle Antworten   Neuerer Beitrag  |  Älteres Thema 

 Beiträge Autor  Datum
 UserMessages + Prozess  Neu
Heinz Brill 04.04.16 19:26 
 Re: UserMessages + Prozess  Neu
Matthias Griesbach 06.04.16 22:10 
 Re: UserMessages + Prozess  Neu
Heinz Brill 07.04.16 18:48 


 Foren-Liste  |  Zur Registrierung 
 Benutzerlogin
 Benutzername:
 Passwort:
 Login-Daten speichern:
   
 Passwort vergessen?
E-Mail-Adresse oder Username unten eingeben. Dann wird Dir per e-Mail ein neues Passwort zugeschickt.

phorum.org