Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| GlobalMemoryStatus | |
| | Auteur | Message |
---|
d.j.peters
Nombre de messages : 77 Age : 60 Localisation : Germany Date d'inscription : 31/07/2010
| Sujet: GlobalMemoryStatus Jeu 23 Sep 2010 - 1:40 | |
| - Code:
-
dll_on "kernel32.dll" ' some colors data 0, 0, 0 data 255, 0, 0 data 255, 0,255 data 0, 0,255 data 255,255,255 data 255,255, 0 data 0,255,255 data 128,128, 0
label tmr_service,frm_resize,frm_paint,get_mem_status
' data type dim dwLength% : ' sizeof(MEMORYSTATUS) dim dwMemoryLoad% : ' percent of memory in use dim dwTotalPhys% : ' bytes of physical memory dim dwAvailPhys% : ' free physical memory bytes dim dwTotalPageFile% : ' bytes of paging file dim dwAvailPageFile% : ' free bytes of paging file dim dwTotalVirtual% : ' user bytes of address space dim dwAvailVirtual% : ' free user bytes
' objects dim frmMain%:width frmMain%,800:height frmMain%,240 dim pic%:pic%=number_objects+1:picture pic% dim tmr%:tmr%=number_objects+1:timer tmr%
' vars dim cWidth%,cHeight%,dWidth%,dHeight%,oWidth%,oHeight% dim ret%,ptr%,type$,i%,scale,x%,y%,s%,m%
dim KB%:KB% = 1024 dim MB%:MB% = KB% * KB%
' arrays dim r%(7),g%(7),b%(7) dim n%(7),o%(7)
' read colors for i%=0 to 7 read r%(i%) read g%(i%) read b%(i%) next i% full_space pic% 2d_target_is pic%
' client size cWidth%=width(pic%)-1 :cHeight%=height(pic%)-1 dWidth%=width(frmMain%)-cWidth%:dHeight%=height(frmMain%)-cHeight%
gosub get_mem_status scale = cHeight% / (dwTotalPhys%+1000) for i%=0 to 6 o%(i%) = n%(i%) next i%
timer_interval tmr%,100 on_timer tmr%,tmr_service
' go in main loop end
tmr_service: gosub get_mem_status cWidth% =width(frmMain%) -dWidth% cHeight%=height(frmMain%)-dHeight% if (cWidth%<>oWidth%) or (cHeight%<>oHeight%) oWidth% =cWidth% oHeight%=cHeight% gosub frm_resize end_if gosub frm_paint return frm_resize: width pic%,cWidth% height pic%,cHeight% 2d_pen_width 1 2d_fill_color 0,128,0 2d_rectangle 0,0,cWidth%,cHeight% 2d_pen_color 0,255,0 for i% = cHeight% to 0 step -10 2d_line 0,i%,cWidth%,i% next i% for i%=0 to cWidth% step 10 2d_line i%,0,i%,cHeight% next i% x%=0 return frm_paint: s%=x%+1 scale = cHeight%/110 2d_pen_width 3 2d_pen_color r%(0),g%(0),b%(0) 2d_line x%,cHeight%-o%(0)*scale,s%,cHeight%-n%(0)*scale o%(0)=n%(0) scale = cHeight%/m% for i%=1 to 6 2d_pen_color r%(i%),g%(i%),b%(i%) 2d_line x%,cHeight%-o%(i%)*scale,s%,cHeight%-n%(i%)*scale o%(i%)=n%(i%) next i% x%=s% if (x%>cWidth%) then gosub frm_resize return
get_mem_status: type$=string$(32," "):ptr%=adr(type$) ret%=DLL_CALL3("RtlMoveMemory",adr(ptr%),ptr%,4) ret%=DLL_CALL1("GlobalMemoryStatus",ptr%) ret%=DLL_CALL3("RtlMoveMemory",adr(dwLength%) ,ptr%+ 0,4) ret%=DLL_CALL3("RtlMoveMemory",adr(dwMemoryLoad%) ,ptr%+ 4,4) ret%=DLL_CALL3("RtlMoveMemory",adr(dwTotalPhys%) ,ptr%+ 8,4) ret%=DLL_CALL3("RtlMoveMemory",adr(dwAvailPhys%) ,ptr%+12,4) ret%=DLL_CALL3("RtlMoveMemory",adr(dwTotalPageFile%),ptr%+16,4) ret%=DLL_CALL3("RtlMoveMemory",adr(dwAvailPageFile%),ptr%+20,4) ret%=DLL_CALL3("RtlMoveMemory",adr(dwTotalVirtual%) ,ptr%+24,4) ret%=DLL_CALL3("RtlMoveMemory",adr(dwAvailVirtual%) ,ptr%+28,4) n%(0) = dwMemoryLoad% n%(1) = dwTotalPhys% / MB% n%(2) = dwAvailPhys% / MB% n%(3) = dwTotalPageFile% / MB% n%(4) = dwAvailPageFile% / MB% n%(5) = dwTotalVirtual% / MB% n%(6) = dwAvailVirtual% / MB% m%=0 for i%=0 to 6 if n%(i%)>m% then m%=n%(i%) next i% m%=m%+(m%/10) return | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: GlobalMemoryStatus Jeu 23 Sep 2010 - 13:30 | |
| Très joli ! même si on ne voit pas trop comment interpréter le résultat !
A ce propos... où trouver les différentes fonctions de la kernel32.dll et les paramètres d'activation ? chez Microsoft je suppose ?
Very nice! even if it is not clear how to interpret the results! In this connection ... where to find the different functions of kernel32.dll and the activation parameters? I guess at Microsoft? | |
| | | Invité Invité
| Sujet: Re: GlobalMemoryStatus Jeu 23 Sep 2010 - 18:51 | |
| Je ne sais pas ce que cela fait. La seule chose que j'obtiens est: Ich verstande nicht. verseihen Sie mich |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: GlobalMemoryStatus Jeu 23 Sep 2010 - 21:45 | |
| Normalement tu devrais obtenir quelque chose comme ça: avec des barres de couleur qui progressent, avec de légères variations, qui arrivent au bout et qui rebouclent... Ça semble être l'état de l'utilisation de la mémoire, mémoire physique, virtuelle, paginée, totale et occupée, en temps réel, mais j'avoue que je ne vois pas du tout comment interpréter ça, DJ n'est pas très prolixe sur le sujet... | |
| | | Invité Invité
| Sujet: Re: GlobalMemoryStatus Jeu 23 Sep 2010 - 22:29 | |
| Il est évident que la barrière de la langue n'aide pas.Peters et il se doit se trouver bien seul dans son coin. On voit qu'il a des capacités, et moi, je ne comprends pas sa méthode.
Pour ce qui est du programme, pas de changement, même erreur. Faudrait faire une analyse complète de ce qu'il fait.
Comme on peut le voir sur ce forum, chacun d'entre nous a un domaine qu'il exploite au mieux. Tous des spécialistes d'un domaine. |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: GlobalMemoryStatus Jeu 23 Sep 2010 - 22:49 | |
| Ce qui est certain, c'est que DJ peters n'est pas un débutant ! et qu'il code des choses pointues (enfin, pour moi). Pour la langue, il semble bien maîtriser l'anglais, et on peut faire avec ça (en tout cas pour moi, qui suis proche de zéro en allemand). Ce qu'il y a c'est que ses programmes sont spectaculaires mais très chiches en commentaires, on ne connaît même pas l'objet du programme (le titre est sans doute censé être assez parlant), il faut deviner...
Pour toi qui as l'air un peu limité en mémoire (eh, je parle du PC !) ce serait bien utile d'avoir un outil pour analyser son fonctionnement, voir ce qui est le plus gourmand. | |
| | | d.j.peters
Nombre de messages : 77 Age : 60 Localisation : Germany Date d'inscription : 31/07/2010
| Sujet: Re: GlobalMemoryStatus Ven 24 Sep 2010 - 5:27 | |
| [english]The result isn't the point of this tiny WIN32 API example. the trick is: PANORAMIC does not support data struc's e.g. - Code:
-
typedef struct _MEMORYSTATUS { // mst DWORD dwLength; // sizeof(MEMORYSTATUS) DWORD dwMemoryLoad; // percent of memory in use DWORD dwTotalPhys; // bytes of physical memory DWORD dwAvailPhys; // free physical memory bytes DWORD dwTotalPageFile; // bytes of paging file DWORD dwAvailPageFile; // free bytes of paging file DWORD dwTotalVirtual; // user bytes of address space DWORD dwAvailVirtual; // free user bytes } MEMORYSTATUS, *LPMEMORYSTATUS; But you can use a PANORAMIC string as replacement for the missing struc. that's all my friends. DJ[/english] | |
| | | 659_minifly
Nombre de messages : 590 Age : 76 Localisation : Valenciennes Nord Date d'inscription : 29/04/2010
| Sujet: Re: GlobalMemoryStatus Ven 24 Sep 2010 - 6:00 | |
| Thanks very much for those informations josh.
| |
| | | jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: GlobalMemoryStatus Ven 24 Sep 2010 - 10:31 | |
| Je ne comprends toujours pas comment passer un type défini par l'utilisateur à une DLL (I still don't understand how to pass an UDT to a DLL) Par exemple, la DLL suivante en FreeBASIC (For instance, the following FreeBASIC DLL) : - Code:
-
extern "Windows-MS"
type Vector x as double y as double end type
function Hypot(byref V as Vector) as double export return sqr(V.x * V.x + V.y * V.y) end function end extern
Comment appeler la fonction Hypot depuis Panoramic ? (How to call function Hypot from Panoramic ?) | |
| | | d.j.peters
Nombre de messages : 77 Age : 60 Localisation : Germany Date d'inscription : 31/07/2010
| Sujet: Re: GlobalMemoryStatus Ven 24 Sep 2010 - 18:21 | |
| - jean_debord a écrit:
- Comment appeler la fonction Hypot depuis Panoramic ? (How to call function Hypot from Panoramic ?)
sorry never ret% = DLL_CALL1("Hypot",pVector) returns only INTEGER not DOUBLE but you can write it as - Code:
-
extern "Windows-MS"
type Vector x as double y as double end type
sub Hypot(byref result as double, byref V as Vector) result = sqr(V.x * V.x V.y * V.y) end sub end extern or more PANORAMIC friendly - Code:
-
extern "Windows-MS"
sub Hypot(byref result as double, byref x as double,byref y as double ) result = sqr(x * x y * y) end sub end extern dummy% = DLL_CALL3("Hypot", adr(result), adr(x), adr(y))DJ | |
| | | jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: GlobalMemoryStatus Sam 25 Sep 2010 - 9:42 | |
| - d.j.peters a écrit:
- But you can use a PANORAMIC string as replacement for the missing struc.
Pourrais-tu donner un exemple simple de cela, sans faire référence à l'API Windows ? Par exemple avec mon type Vector ? (Could you please give a simple example, not referring to the Windows API ? For instance with my Vector type ?) Plus précisément si j'écris la DLL sous la forme : (More precisely, if I write the DLL as : ) - Code:
-
extern "Windows-MS"
type Vector x as double y as double end type
sub Hypot(byref result as double, byref V as Vector) result = sqr(V.x * V.x V.y * V.y) end sub end extern
Comment puis-je passer une chaîne de caractères de Panoramic à la place d'une variable de type Vector ? (How can I pass a Panoramic string instead of a Vector type variable ?) Au passage, merci d'avoir corrigé mon erreur (BTW, Thanks for correcting my error). | |
| | | Contenu sponsorisé
| Sujet: Re: GlobalMemoryStatus | |
| |
| | | | GlobalMemoryStatus | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |