Français
Forum

Rückgabecode aus einer Pexec aufgerufenen Procedure

 
- page 1 -



Bernd
Lies
allô.

malheureusement plagt mich wieder un Problem.
dans einem Hauptprogramm starte je per Pexec une parallèle zum Hauptprogramm laufende Procedure. Irgendwann ist cet Procedure finissez et gibt une annonce per MessageBox aus.
comment peux je maintenant im Hauptprogramm abfragen, si qui Procedure finissez ist. qui Grund: es doit encore weitere Aktivitäten, bezogen sur qui Ergebnisse qui Procedure, im Hauptprogramm avoir lieu.

Gibt es qui Possibilité une paramètre comme Rückgabecode aus qui aufgerufenen Procedure trop bekommen?

Wär toll si mir quelqu'un sa Aider anbieten serait.
 
XProfan X2
xprofan 9.0, windows xp pro
18.06.2014  
 



 
- page 1 -



H.Brill
Brauchst du seulement dans qui Aider chez pExec()
trop regarder.
Bien sûr dois du qui Prozess-ID (PID) avons.
qui bekommst du, si du pExec() une Wert
zurückgeben läßt :
KompilierenMarqueSéparation
pid& = pExec(....)

if getExitCode(pid <> 259)

    print "läuft nicht mehr!     "

End

si du getExitCode() dans deiner Hauptprogrammschleife
permanent abfragst, sollte es aller.

si du quoi de qui Proc zurückgeben veux, peux
du cela sur FileMap lösen. encore une simple Possibilité
wäre cela Clipboard.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
18.06.2014  
 




Bernd
Lies
allô H.Brill,

vielen Dank pour Votre Antwort. je werde Votre Angaben austesten. Werde en supplément mais seulement dans den prochain Tagen venons. bien sûr werde je sur cela Ergebnis informer.
 
XProfan X2
xprofan 9.0, windows xp pro
18.06.2014  
 




Bernd
Lies
allô H. Brill,

ici mon Ergebnis: Que le Prozess-ID hat pas geklappt, mais pour qui Version avec dem Clipboard. Somit ist mon Problem gelöst.
Vielen Dank pour qui Aider.
 
XProfan X2
xprofan 9.0, windows xp pro
19.06.2014  
 




H.Brill
bof, venez entier sur elle à, quoi du faire veux.
Evtl. brauchst du aussi cela Clipboard gar pas.

Anbei la fois un Beispiel, comment un Prozess par Übergabe
eines Handle, une Gridbox füllt.

Dabei wird aussi qui Prozess - ID abgefragt.
KompilierenMarqueSéparation
Declare runp&, btn1&, btn2&, btn3&, btn4&, st&, lb&, pid&
Declare Memory b
Dim b, 4
Long b, 0 = 200
runp& = 0
WindowStyle 512 + 2 + 8
WindowTitle "Mein Fenster"
Window 600, 400
btn1&  = @Create("Button", %HWnd, "Start", 10,  10, 60, 25)
btn2&  = @Create("Button", %HWnd, "Stop",  100, 10, 60, 25)
btn3&  = @Create("Button", %HWnd, "Clear", 190, 10, 60, 25)
btn4&  = @Create("Button", %HWnd, "Ende",  280, 10, 60, 25)
lb&    = @Create("Gridbox",%HWnd, "Spalte 1;0;120;Spalte 2;0;120;Spalte 3;0;120", 0, 10, 50, 400, 150)
st&    = @Create("StatusWindow", %HWnd, "", 3, b)
pid& = pExec("|RunProzess", %HWnd, lb&)

If pid& <> 0

    runp& = 1
    EnableWindow btn1&, 0
    SetText st&, 0, "Prozess läuft !"

EndIf

WhileNot @Clicked(btn4&)

    WaitInput

    If @Clicked(btn1&)

        If runp& = 0

            runp& = 1
            pid& = pExec("|RunProzess", %HWnd, lb&)
            SetText st&, 0, "Prozess läuft  !"
            EnableWindow btn1&, 0

        Else

            MessageBox("Prozess läuft bereits !", "Info", 0)

        EndIf

    ElseIf @Clicked(btn2&)

        If runp& = 1

            Process("Kill", pid&, 0)
            EnableWindow btn1&, 1
            runp& = 0
            SetText st&, 0, "Prozess beendet !"

        Else

            MessageBox("Prozess läuft nicht !", "Info", 0)

        EndIf

    ElseIf @Clicked(btn3&)

        ClearList lb&

    EndIf

    Case %Key = 2 : Break

    If getExitCode(pid&) <> 259

        SetText st&, 0, "Prozess läuft nicht mehr !"

    EndIf

EndWhile

Dispose b
End

Proc RunProzess

    Parameters win&, dlgwin&
    Declare ende%
    Clear ende%

    WhileNot ende%

        Randomize
        AddString(dlgwin&, Str$(Rnd(100)) + "|" + Str$(Rnd(1000)) + "|" + Str$(Rnd(10000)) )
        Sleep 2000
        case getText$(win&) = "" : ende% = 1

    ENDPROC

 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
19.06.2014  
 




Bernd
Lies
Dein Beispiel habe je verstanden et getestet et dans mon Codesammlung déménagé . mon Problem était, cela dans dem Process une Zeit abläuft, qui irgend quand ensuite sur 0 allez. si cette le cas eintritt, musste je cela im Hptprg. savons. alors simple un Flag ins Cipboard gesetzt et ensuite im Hptprg abgefragt.
 
XProfan X2
xprofan 9.0, windows xp pro
19.06.2014  
 




Nico
Madysa
gentille l'affaire, mais quoi ist, si qui Anwender dans qui Zwischenzeit qui Zwischenablage selbst benutzt?

Meiner Einsicht pour wäre es sinnvoller, entweder
a) une Filemap trop verwenden (qui XProfan-Aider sais plus) ou bien
b) simple vom Unterprozess une Message à den Oberprozess trop senden.

quoi ici qui einfachere Possibilité ist devrait on simple la fois ausprobieren.
 
20.06.2014  
 




H.Brill
trop a)
quoi ist, si un d'autre Programme fonctionne et
cet den gleichen Namen qui Filemap benutzt ?
Nr. b) finde je ensuite am sinnvollsten.

ou bien dessus comment dans mon Code à cela Handle
eines Controls im Hauptprogramm senden.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
20.06.2014  
 




H.Brill
peut-être läßt sich avec dem quoi anfangen.
si dein Prozess pas trop longtemps dauert :
KompilierenMarqueSéparation
 $H Windows.ph
Declare runp&, btn1&, btn2&, btn3&, btn4&, st&, lb&, pid&
Declare Memory b
Declare Grid&
Dim b, 4
Long b, 0 = 200
runp& = 0
WindowStyle 512 + 2 + 8
WindowTitle "Mein Fenster"
Window 600, 400
btn1&  = @Create("Button", %HWnd, "Start", 10,  10, 60, 25)
btn2&  = @Create("Button", %HWnd, "Stop",  100, 10, 60, 25)
btn3&  = @Create("Button", %HWnd, "Clear", 190, 10, 60, 25)
btn4&  = @Create("Button", %HWnd, "Ende",  280, 10, 60, 25)
lb&    = @Create("Gridbox",%HWnd, "Spalte 1;0;120;Spalte 2;0;120;Spalte 3;0;120", 0, 10, 50, 400, 150)
st&    = @Create("StatusWindow", %HWnd, "", 3, b)
Grid&  = @Create("Grid", 1, 0)
pid& = pExec("|RunProzess", %HWnd, lb&, Grid&)

If pid& <> 0

    runp& = 1
    EnableWindow btn1&, 0
    SetText st&, 0, "Prozess läuft !"

EndIf

WhileNot @Clicked(btn4&)

    WaitInput

    If @Clicked(btn1&)

        If runp& = 0

            runp& = 1
            pid& = pExec("|RunProzess", %HWnd, lb&, Grid&)
            SetText st&, 0, "Prozess läuft  !"
            EnableWindow btn1&, 0

        Else

            MessageBox("Prozess läuft bereits !", "Info", 0)

        EndIf

    ElseIf @Clicked(btn2&)

        If runp& = 1

            Process("Kill", pid&, 1000)
            EnableWindow btn1&, 1
            runp& = 0
            SetText st&, 0, "Prozess beendet !"

        Else

            MessageBox("Prozess läuft nicht !", "Info", 0)

        EndIf

    ElseIf @Clicked(btn3&)

        ClearList lb&

    EndIf

    Case %Key = 2 : Break

    If getExitCode(pid&) = 1000

        SetText st&, 0, "Prozess läuft nicht mehr !"
        Messagebox(GetString$(Grid&, 0), "", 0)

    EndIf

EndWhile

Dispose b
End

Proc RunProzess

    Parameters win&, dlgwin&,  g&
    Declare ende%
    Clear ende%
    ClearList g&

    WhileNot ende%

        Randomize
        AddString(dlgwin&, Str$(Rnd(100)) + "|" + Str$(Rnd(1000)) + "|" + Str$(Rnd(10000)) )
        AddString(g&, "Astalavista !!!")
        Sleep 2000
        case getText$(win&) = "" : ende% = 1

    Endwhile

ENDPROC


trop überlegen wäre aussi, si on place hat :
on erstellt trop Programmbegin un Modifier le champ de et
pouvoir es avec ShowWindow unsichtbar. Dessen
Handle übergibt on ensuite dem Prozess, qui ensuite
avec SetText quoi reinschreibt.
si on ensuite im Hauptprogramm den Exitcode
abfragt, pourrait on doch avec GetText$() cela Modifier le champ de
auslesen.

Müßte on la fois ausprobieren.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
20.06.2014  
 




E.T.
H.Brill (20.06.14)

trop a)
quoi ist, si un d'autre Programme fonctionne et
cet den gleichen Namen qui Filemap benutzt ?
...


hm, comment wahrscheinlich ist ist cet Konstellation
...jaja, sag niemals nie...

Kollisionen pourrait on oui aussi tourner autour de, si on z.B. qui Speicherdatei comme nom qui PID des erzeugenden Programms gibt (mach je so), ou bien une vom Programme generierten einzigartigen nom, ou bien, ou bien...
Gibt es qui Opportunités viele, je hatte là encore nie Probleme...
 
Grüße aus Sachsen... Mario
WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte...
21.06.2014  
 




H.Brill
sais du quelque chose plus sur Filemapping ?
pourquoi allez folgendes Programme seulement einmal
chez Programmstart ?
KompilierenMarqueSéparation
Declare runp&, btn1&, btn2&, btn3&, btn4&, st&, pid&
Declare Memory b
Declare m#
Declare hfm&
Dim m#, 1000
Dim b, 4
Long b, 0 = 300
runp& = 0
WindowStyle 512
Window 800, 600
btn1&  = @Create("Button", %HWnd, "Start", 10,  10, 60, 25)
btn2&  = @Create("Button", %HWnd, "Ende",  100, 10, 60, 25)
st&    = @Create("StatusWindow", %HWnd, "", 3, b)
hfm& = @Create("Filemap", "Zahl", 1000)

WhileNot @Clicked(btn2&)

    WaitInput

    If @Clicked(btn1&)

        If runp& = 0

            runp& = 1
            pid& = pExec("|RunProzess", %HWnd)
            SetText st&, 0, "Prozess läuft  !"
            EnableWindow btn1&, 0

        Else

            MessageBox("Prozess läuft bereits !", "Info", 0)

        EndIf

        Case %Key = 2 : Break

    EndIf

    If getExitCode(pid&) <> 259

        SetText st&, 0, "Prozess beendet"
        runp& = 0
        EnableWindow btn1&, 1
        Clear m#
        hfm& = FileMap("Open", "Zahl")
        m# = FileMap("Map", hfm&)
        FileMap("Close", hfm&)
        SetText  st&, 0,  String$(m#, 0)

    EndIf

EndWhile

Dispose b, m#

Proc RunProzess

    Parameters win&
    Declare mf&, ok&, a&, buffer#
    Dim buffer#, 1000
    mf& = FileMap("Open", "Zahl")

    WhileLoop 1, 100

        a& = &LOOP
        case getText$(win&) = "" : Break
        Sleep 10

    EndWhile

    buffer# = FileMap("Map", mf&)
    String buffer#, 0 = Str$(a&) + " Schritte im Prozess verarbeitet !!!"
    Dispose buffer#
    ok& = FileMap("Close", mf&)

End
a> Fin

si Je l' Button Start zum 2. la fois drücke, wird rien
plus dans qui Statuszeile angezeigt. aussi doit je seulement avec
qui souris ins la fenêtre klicken (wahrscheinlich par waitinput).

Könnte on une Klick simulieren ?
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
21.06.2014  
 




E.T.
Hab la fois bissel gespielt (ExitCode des aufgerufenen Programms,Statuszeile, Montrer...)
KompilierenMarqueSéparation
Declare runp&, btn1&, btn2&, btn3&, btn4&, st&, pid&, ec&
Declare b#
Declare m#
Declare hfm&, hfmx&
Dim m#, 1000
Dim b#, 12
Long b#, 0 = 200,500,-1
runp& = 0
WindowStyle 512
Window 800, 600
btn1&  = @Create("Button", %HWnd, "Start", 10,  10, 60, 25)
btn2&  = @Create("Button", %HWnd, "Ende",  100, 10, 60, 25)
st&    = @Create("StatusWindow", %HWnd, "STATUS", 3, b#)
hfm& = @Create("Filemap", "Zahl", 1000)

WhileNot @Clicked(btn2&)

    Waitinput 100

    If @Clicked(btn1&)

        If runp& = 0

            locate 20,0
            print "                                            "
            SetText  st&, 1,  "...warte"
            runp& = 1
            Clear pid&
            '            pid& = pExec("|RunProzess", %HWnd)
             $IFDEF INTERPRETER
            pid& = PExec("|RunProzess")
             $ELSE
            pid& = PExec("|RunProzess")
             $ENDIF
            SetText st&, 0, "Prozess läuft  !"
            EnableWindow btn1&, 0

        Else

            MessageBox("Prozess läuft bereits !", "Info", 0)

        EndIf

        Case %Key = 2 : Break

    EndIf

    If ec& = 777

        SetText st&, 0, "Prozess beendet"
        runp& = 0
        EnableWindow btn1&, 1
        hfmx& = FileMap("Open", "Zahl")

        If hfmx&

            m# = FileMap("Map", hfmx&)
            FileMap("Close", hfmx&)
            locate 20,0
            print STRING$(m#,0)
            SetText  st&, 1,  String$(m#,0)

        Else

            MessageBox("Speicherdatei konnte nicht geöffnet werden!", "MAP-Hinweis", 48)

        EndIf

        Clear ec&, pid&

    EndIf

    ec& = getExitCode(pid&)
    SetText st&, 2, str$(pid&) + ", " + str$(ec&)

EndWhile

Dispose b#, m#

Proc RunProzess

    Parameters win&
    Declare mf&, ok&, a&, buffer#
    Dim buffer#, 1000
    mf& = FileMap("Open", "Zahl")

    WhileLoop 1, 100

        a& = &LOOP
        '        case getText$(win&) = "" : Break ????Nur ein durchlauf !!
        Sleep 10

    EndWhile

    buffer# = FileMap("Map", mf&)
    'String buffer#, 0 = Str$(a&) + " Schritte im Prozess verarbeitet !!!"
    String buffer#, 0 = "Fertig : " + @dt("DateTimeStr", "c", !now)
    Dispose buffer#
    ok& = FileMap("Close", mf&)
    End 777

ENDPROC

Fin

Bei'm auslesen et Montrer la hâte du hfm& (qui ID qui Mapdatei) überschrieben:
KompilierenMarqueSéparation
hfm& = @Créer("Filemap", "Nombre", 1000)
...
hfm& = FileMap("Open", "Nombre")
...

Tricolore simple la fois angepasst, et déjà funzt es toujours et toujours wieder:
KompilierenMarqueSéparation
...
hfmx& = FileMap("Open", "Nombre")
...

...nebenbei plan la fois une Klick simuliert
 
Grüße aus Sachsen... Mario
WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte...
22.06.2014  
 



 
- page 2 -



E.T.
[OFFTOPIC]Probe-Eintrag pour Umbau[/OFFTOPIC]
 
XProfan X2
Grüße aus Sachsen... Mario
WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte...
15.07.2014  
 




répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

14.285 Views

Untitledvor 0 min.
Rolf Koch26.11.2015
Nico Madysa18.12.2014
Georg Teles14.10.2014
Pedro Miguel04.10.2014
plus...

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie