Foro | | | | - Página 1 - |
| Jac de Lad | Hm, Yo weiß nada, wo Yo anfangen se...
Mein Problema es folgendes: Yo habe una Programa, dass neben el normalen Ablauf auch el todo Tiempo (una vez pro Sekunde aktualisiert) el Uhrzeit y el Speicherverbrauch en el Statusbar Mostrar se. Yo habs bisher con el Hilo.pcu gemacht. Aber IF rät su de, zurecht. Gaaaaanz selten kommt lo antes, dass beim Beenden a uno Fehlermeldung kommt, porque el benötigte Bereichsvariable más rápido disposed se como el Hilo termina (genau dijo se jede Sekunde una Meldung producido, el entonces el Bilschirm füllen).
So, nun ha el IF dijo, dass el PCU überflüssig es, como lo sí en XProfan 11 Subclassing son. Und él ha se auch todos Mühe gegeben me a erklären, pero yo habs no verstanden. Deshalb veces el Cuestión: Sombrero alguien tal vez una Ejemplo para una Programa, el entweder en el Waitinput steckt (para Ejemplo una anklickbarer Button) y encima 2 Características algo ausgibt oder una otro?
Jac |
| | | Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 27.03.2008 ▲ |
| |
| | | | | - Página 1 - |
| Andreas Miethe
| IntervalProc kam a spät
Schon fertig con el Ejemplo.
Erklärung dazu. Lo voluntad 2 Datein benötigt, Einmal el eigentliche Programa, para otro el qué el Loop enthält. Der Loop-Programa muss kompiliert ser. Das Hauptprogramm startet se simplemente selber con Parametern (Loop-Programa) neu. Das Ganze funktioniert sólo si beide Programas kompiliert son !
Ist tal vez todavía verbesserungswürdig, funktioniert aber primero !
Loop-Programa ( como timer.prf speichern y kompilieren ) KompilierenMarcaSeparación Hauptprogramm KompilierenMarcaSeparación#########################################
Hilo starten, pausieren dejar, final
Andreas Miethe 28.03.2008
#########################################
BEACHTE : starten como EXE oder STRG+F8
#########################################
$IFDEF Compiler
$H Windows.ph
$H Structs.ph
$H Messages.ph
Struct StartupInfo = ~STARTUPINFO
Struct ProcessInfo = ~PROCESS_INFORMATION
Struct MEMORYSTATUS = ~MEMORYSTATUS
Var Ende& = 0
cls ~GetSysColor(~COLOR_BTNFACE)
Declarar ProcessHandle&,Processhandle1&
Declarar ThreadHandle&,Threadhandle1&
Proc CreateThread
Parámetros Param$
Declarar StartupInfo#,CommandString$,ProcessInfo#
Declarar Retval&,Processhandle&,ThreadHandle&
CommandString$ = Par$(0) + + Param$
Dim StartupInfo#,StartupInfo
Claro StartupInfo#
StartupInfo#.cb& = SizeOf(StartupInfo#)
Dim ProcessInfo#,ProcessInfo
Claro ProcessInfo#
~CreateProcess(0,Addr(CommandString$),0,0,0,0,0,0,StartupInfo#,ProcessInfo#)
ProcessHandle& = ProcessInfo#.hProcess&
ThreadHandle& = ProcessInfo#.hThread&
Disponer StartupInfo#
Disponer ProcessInfo#
Volver Str$(ProcessHandle&)+,+Str$(ThreadHandle&)
ENDPROC
Proc TerminateThread
Parámetros ProcessHandle&
Declarar ExitCode&
~GetExitCodeProcess(Processhandle&,Addr(ExitCode&))
~TerminateProcess(Processhandle&,ExitCode&)
ENDPROC
Proc PauseThread
Parámetros Threadhandle&
~SuspendThread(Threadhandle&)
ENDPROC
Proc ResumeThread
Parámetros Threadhandle&
~ResumeThread(Threadhandle&)
ENDPROC
Var Handles$ =
Var Start& = Crear(Button,%hwnd,Start,10,10,80,24)
Var Pause& = Crear(Button,%hwnd,Pause,10,40,80,24)
Var Resume& = Crear(Button,%hwnd,Fortsetzen,10,70,80,24)
Var Terminate& = Crear(Button,%hwnd,Ende,10,100,80,24)
Var Empfang& = Crear(TEXT,%hwnd,,10,130,80,24)
SendMessage(Start&,~WM_SETFONT,~GetStockObject(~ANSI_VAR_FONT),1)
SendMessage(Pause&,~WM_SETFONT,~GetStockObject(~ANSI_VAR_FONT),1)
SendMessage(Resume&,~WM_SETFONT,~GetStockObject(~ANSI_VAR_FONT),1)
SendMessage(Terminate&,~WM_SETFONT,~GetStockObject(~ANSI_VAR_FONT),1)
SendMessage(Empfang&,~WM_SETFONT,~GetStockObject(~ANSI_VAR_FONT),1)
EnableWindow Pause&,0
EnableWindow Resume&,0
EnableWindow Terminate&,0
Var Statusbar& = Crear(StatusWindow,%hwnd,)
UpdateStatus(Statusbar&)
SubClass StatusBar&,1SubClassing einschalten
~SetTimer(StatusBar&,1,1000,0)Temporizador a el Statusbar hängen
SubClass %hwnd,1SubClassing einschalten
Mensajes del usuario ~wm_close
Sinestar encargado Ende&
Waitinput
If Clicked(Start&)
El Exe startet se selber todavía una vez con Parametern
el Parámetro, el hier esperado se es una una Kompilat ( PRC-Expediente )
Handles$ = CreateThread(Temporizador.prc +str$(Empfang&))
ProcessHandle1& = Val(Substr$(Handles$,1,,))
ThreadHandle1& = Val(Substr$(Handles$,2,,))
EnableWindow Pause&,1
EnableWindow Terminate&,1
EnableWindow Start&,0
Elseif Clicked(Pause&)
PauseThread(ThreadHandle1&)
EnableWindow Pause&,0
EnableWindow Resume&,1
ElseIf Clicked(Resume&)
ResumeThread(ThreadHandle1&)
EnableWindow Pause&,1
EnableWindow Resume&,0
ElseIf Clicked(Terminate&)
EnableWindow Pause&,0
EnableWindow Resume&,0
EnableWindow Terminate&,0
EnableWindow Start&,1
TerminateThread(ProcessHandle1&)
Endif
If %Umessage = ~wm_close
si TerminateThread() no en Programmende aufgerufen se,
se ejecuta el 2.Programa más !
TerminateThread(ProcessHandle1&)
Ende& = 1
Endif
EndWhile
SubClass StatusBar&,0
SubClass %hwnd,0
end
Proc UpdateStatus
Parámetros Statusbar&
Declarar MemStatus#
Dim Memstatus#,MEMORYSTATUS
MemStatus#.dwLength& = SizeOf(MemStatus#)
~GlobalMemoryStatus(MemStatus#)
SetText Statusbar&,Jetzt : +Time$(0)+:+Left$(Time$(1),2)+ - Speicherverbrauch : +Str$(MemStatus#.dwMemoryLoad&)+%
Disponer MemStatus#
ENDPROC
SubClassProc
If SubClassMessage(%hwnd, ~WM_SIZE)
SetWindowPos Statusbar& = 0,0-0,0
ElseIf SubClassMessage(Statusbar&, ~WM_TIMER)
UpdateStatus(&sWnd)
Endif
ENDPROC
|
| | | Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 28.03.2008 ▲ |
| |
| | | | - Página 2 - |
| | Jac de Lad | Aber hier voluntad 2 Programas benötigt, el es Mist. |
| | | Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 28.03.2008 ▲ |
| |
| | | Aber tal vez es grade deshalb otra vez una Denkanstoß el una echter 2. Hilo para Su Vorhaben (egal como verpackt) simplemente uneffizient es, veces unabhängig su el Andreas como una super Prozessverpackung vormacht el kopiert después de Codesnippets gehört! |
| | | | |
| | Jac de Lad | Sagen wirs veces así: Yo sehe el una. Aaaaaaber, Yo kann en mein Prog no 500 SetStatus() einbauen. |
| | | Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 28.03.2008 ▲ |
| |
| | Jörg Sellmeyer | Von Uwe Pascal Niemeyer (oder wars Sebastian König?) gab lo veces una Ejemplo, en el con Ensamblador una Uhr en el Statusbar gesteuert se. Yo habs ahora no parat, aber tal vez kannst Usted sí veces en su HP suchen. |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 28.03.2008 ▲ |
| |
| | Frank Abbing |
Von Uwe Pascal Niemeyer (oder wars Sebastian König?) gab lo veces una Ejemplo, en el con Ensamblador una Uhr en el Statusbar gesteuert se. Yo habs ahora no parat, aber tal vez kannst Usted sí veces en su HP suchen.
Dort se por Ensamblador un hilo comenzó. Darin kann aber kein Profancode ablaufen. Jac, algo como es con XPIA muy simplemente posible. |
| | | | |
| | Jac de Lad | Hm...Yo seh hier nich mehr por...Yo glaub Yo lasses, is a kompliziert sólo para ne Uhr y ne Speicheranzeige... |
| | | Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 29.03.2008 ▲ |
| |
| | Frank Abbing | Hm, gerade dieses Ejemplo Permanente Uhr es doch en XPIA esta... KompilierenMarcaSeparación {$iq}
Declare dh&,x&,y&,z&,thread&
Cls
If 0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
AsmStart StartClock(x&)
.data
hwnd dd 0
vthread dd 0
.data?
uhrtext db 24 dup(?)
.code
m2m hwnd,para1
jmp start
thread:
szText komm, - eine permanente Uhr.
.while 1
invoke GetTimeFormat,0,0,0,0,addr uhrtext,20
invoke lstrcat,addr uhrtext,addr komm
invoke SendMessage,hwnd,WM_SETTEXT,0,addr uhrtext
invoke Sleep,1000
.endw
start:
invoke CreateThread,0,0,addr thread,0,0,addr vthread
AsmEnd
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
AsmStart StopClock(x&)
invoke TerminateThread,para1,STILL_ACTIVE
AsmEnd
EndIf
thread&=Call(xpia_getprocaddressm(xpia_hmodule&,StartClock),%hwnd)
Print %hwnd
Whileloop 20000
Print Int(Rnd(100000))
EndWhile
Call(xpia_getprocaddressm(xpia_hmodule&,StopClock),thread&)
Print
Demo Ende.
Waitinput
f='./../../funktionsreferenzen/XProfan/end/'>End
|
| | | | |
| | Frank Abbing | Das gleiche en reinem Profano, sólo TimerProc anstelle uno eigenen Hilos: KompilierenMarcaSeparaciónDEF SetATimer(4) !USER32,SetTimer
DEF KillATimer(2) !USER32,KillTimer
DEF GetTimeFormat(6) !KERNEL32,GetTimeFormatA
Proc timerproc
Declare text$
text$=Space$(20)
GetTimeFormat(0,0,0,0,Addr(text$),20)
text$=Uhrzeit: +text$
SetText %hwnd,text$
EndProc
Cls
SetATimer(%hwnd,1,1000,ProcAddr(timerproc,0))
Whileloop 20000
Print Int(Rnd(100000))
EndWhile
Print
Demo Ende.
Waitinput
KillATimer(%hwnd,1)
End
|
| | | | |
| | Jac de Lad | Exactamente algo como tener Yo gesucht. |
| | | Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 30.03.2008 ▲ |
| |
| | | Jac
Exactamente algo como tener Yo gesucht.
Exactamente algo como se Usted sicher viel Freude bringen! |
| | | | |
| | |
| | | | |
|
RespuestaThemeninformationenDieses Thema ha 5 subscriber: |