Forum | | | | - page 1 - |
|  Jac de Lad | Hm, je sais gar pas, wohin je anfangen soll...
mon Problem ist folgendes: j'ai un Programme, dass près de dem normalen le bout aussi qui ganze Zeit (einmal pro seconde aktualisiert) qui l'heure et den Speicherverbrauch dans qui Statusbar Montrer soll. je habs bisher avec qui Fil.pcu gemacht. mais iF rät en ab, zurecht. Gaaaaanz selten venez es avant, dass beim finissons trop einer Fehlermeldung venez, weil qui benötigte Bereichsvariable plus rapide disposed wird comme qui Fil finissez wird (oui c'est ca dit wird chacun seconde une annonce erzeugt, qui ensuite den Bilschirm füllen).
So, eh bien hat qui iF dit, dass qui PCU überflüssig ist, là es oui dans XProfan 11 Subclassing gibt. et il hat sich aussi alle Mühe gegeben mir cela trop expliquer, mais je habs pas verstanden. c'est pourquoi fois le Frage: Hat quelqu'un peut-être un Beispiel pour un Programme, cela entweder im Waitinput steckt (zum Beispiel un anklickbarer Button) et sur 2 Funktionen irgendwas ausgibt ou bien une autre?
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 ▲ |
| |
| | | | | - page 1 - |
|  Andreas Miethe
 | IntervalProc kam trop spät 
déjà fertig avec dem Beispiel.
Erklärung en supplément. Es volonté 2 Datein nécessaire, Einmal cela eigentliche Programme, zum anderen cela quoi den Boucle contient. qui Boucle-Programme muss kompiliert son. cela Hauptprogramm startet sich simple selber avec Parametern (Boucle-Programme) récente. cela Ganze funktioniert seulement si beide Programme kompiliert sommes !
Ist peut-être encore verbesserungswürdig, funktioniert mais erstmal !
Boucle-Programme ( comme timer.prf Sauver et kompilieren ) KompilierenMarqueSéparation Hauptprogramm KompilierenMarqueSéparation#########################################
Fil starten, pausieren laisser, finissons
Andreas Miethe 28.03.2008
#########################################
BEACHTE : starten comme EXE ou bien 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)
Déclarer ProcessHandle&,Processhandle1&
Déclarer ThreadHandle&,Threadhandle1&
Proc CreateThread
Paramètres Param$
Déclarer StartupInfo#,CommandString$,ProcessInfo#
Déclarer Retval&,Processhandle&,ThreadHandle&
CommandString$ = Par$(0) + + Param$
Faible StartupInfo#,StartupInfo
Claire StartupInfo#
StartupInfo#.cb& = SizeOf(StartupInfo#)
Faible ProcessInfo#,ProcessInfo
Claire ProcessInfo#
~CreateProcess(0,Addr(CommandString$),0,0,0,0,0,0,StartupInfo#,ProcessInfo#)
ProcessHandle& = ProcessInfo#.hProcess&
ThreadHandle& = ProcessInfo#.hThread&
Dispose StartupInfo#
Dispose ProcessInfo#
Retour Str$(ProcessHandle&)+,+Str$(ThreadHandle&)
ENDPROC
Proc TerminateThread
Paramètres ProcessHandle&
Déclarer ExitCode&
~GetExitCodeProcess(Processhandle&,Addr(ExitCode&))
~TerminateProcess(Processhandle&,ExitCode&)
ENDPROC
Proc PauseThread
Paramètres Threadhandle&
~SuspendThread(Threadhandle&)
ENDPROC
Proc ResumeThread
Paramètres Threadhandle&
~ResumeThread(Threadhandle&)
ENDPROC
Var Handles$ =
Var Start& = Créer(Button,%hwnd,Start,10,10,80,24)
Var Pause& = Créer(Button,%hwnd,récréation,10,40,80,24)
Var Resume& = Créer(Button,%hwnd,continuer,10,70,80,24)
Var Terminate& = Créer(Button,%hwnd,Ende,10,100,80,24)
Var Empfang& = Créer(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& = Créer(StatusWindow,%hwnd,)
UpdateStatus(Statusbar&)
SubClass StatusBar&,1SubClassing einschalten
~SetTimer(StatusBar&,1,1000,0)Minuteur à qui Statusbar hängen
SubClass %hwnd,1SubClassing einschalten
Utilisateur Messages ~wm_close
WhileNot Ende&
Waitinput
Si Clicked(Start&)
qui Exe startet sich selber encore einmal avec Parametern
qui paramètre, qui ici erwartet wird ist un un Kompilat ( PRC-Dossier )
Handles$ = CreateThread(Minuteur.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
Si %Umessage = ~wm_close
si TerminateThread() pas chez Programmende aufgerufen wird,
fonctionne cela 2.Programme plus !
TerminateThread(ProcessHandle1&)
Ende& = 1
Endif
Endwhile
SubClass StatusBar&,0
SubClass %hwnd,0
end
Proc UpdateStatus
Paramètres Statusbar&
Déclarer MemStatus#
Faible Memstatus#,MEMORYSTATUS
MemStatus#.dwLength& = SizeOf(MemStatus#)
~GlobalMemoryStatus(MemStatus#)
SetText Statusbar&,maintenant : +Time $(0)+:+Left $(Time $(1),2)+ - Speicherverbrauch : +Str$(MemStatus#.dwMemoryLoad&)+%
Dispose MemStatus#
ENDPROC
SubClassProc
Si 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 ▲ |
| |
| | | | - page 2 - |
| |  Jac de Lad | mais ici volonté 2 Programme nécessaire, c'est 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 ▲ |
| |
| |  | mais peut-être ist es grade c'est pourquoi nochmal un Denkanstoß cela un echter 2. Fil pour Votre projet (égal comment verpackt) simple uneffizient ist, la fois indépendant en cela Andreas là une super Prozessverpackung vormacht qui kopiert pour Codesnippets est! |
| | | | |
| |  Jac de Lad | dire wirs la fois so: je vois cela un. Aaaaaaber, je peux dans mon Prog pas 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 | de Uwe Pascal Niemeyer (ou bien wars Sebastian König?) donnais es la fois un Beispiel, dans dem avec Assembler une montre dans qui Statusbar gesteuert wird. je habs maintenant pas prêt, mais peut-être peux Du oui la fois sur seiner HP chercher. |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ...  | 28.03.2008 ▲ |
| |
| |  Frank Abbing |
de Uwe Pascal Niemeyer (ou bien wars Sebastian König?) donnais es la fois un Beispiel, dans dem avec Assembler une montre dans qui Statusbar gesteuert wird. je habs maintenant pas prêt, mais peut-être peux Du oui la fois sur seiner HP chercher.
là wird per Assembler un fil gestartet. y peux mais ne...aucune Profancode ablaufen. Jac, quelque chose comme ist avec XPIA très simple possible. |
| | | | |
| |  Jac de Lad | Hm...je seh ici nich plus par...je glaub je lasses, is trop compliqué seulement pour ne montre et 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, justement cet Beispiel Permanente montre mais est chez XPIA dabei...  KompilierenMarqueSéparation {$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/'>Fin
|
| | | | |
| |  Frank Abbing | cela gleiche dans reinem Profan, seulement avec TimerProc anstelle eines eigenen Threads: KompilierenMarqueSéparationDEF 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)
Fin
|
| | | | |
| |  Jac de Lad | oui c'est ca quelque chose comme hab je 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
oui c'est ca quelque chose comme hab je gesucht. 
oui c'est ca quelque chose comme wird Dir sûrement viel Freude apporter!  |
| | | | |
| |  |
| | | | |
|
répondreOptions du sujet | 2.771 Views |
Themeninformationencet Thema hat 5 participant: |