Forum | | | | - 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. |
| | | | |
| | | | | - 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 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. |
| | | | |
| | 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. |
| | | | |
| | 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éparationDeclare 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. |
| | | | |
| | 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. |
| | | | |
| | 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éparationDeclare 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éparationDeclare 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éparationhfm& = @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 X2Grüß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épondreOptions du sujet | 14.285 Views |
Themeninformationencet Thema hat 4 participant: |