begin process at 2010 09 09 09:21:20
  Trouver un code source :
 
dans
 
Accueil > Forum > 

VB.NET et VB 2005

 > 

Windows

 > 

API

 > 

Réccupérer le framerate d'un jeu en VB.NET


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Réccupérer le framerate d'un jeu en VB.NET

jeudi 8 mai 2008 à 19:13:59 | Réccupérer le framerate d'un jeu en VB.NET

tinux

Membre Club

Bonjour, j'aimerais réccupérer le framerate d'un jeu.. je pense pas qu'on puisse le faire nativement, en revanche, je pense que l'on peut réutiliser des dll (comme par exemple celle de FRAPS, ou Tatski).

Pour Fraps j'ai essayé d'importer la dll qui contient la Fonction FrapsSharedData qui permet de retourner CurrentFPS qui est la valeur du Framerate actuelle calculée par FRAPS. Le problème est que l'on ne peut l'importer :

Une référence à 'monprog\fraps.dll' n'a pas pu être ajoutée. Assurez-vous que le fichier est accessible et qu'il s'agit d'un assembly valide ou d'un composant COM.

Donc si quelqu'un à déjà réussi à faire ce genre de chose, par cette méthode ou une autre, je suis preneur ;)
vendredi 9 mai 2008 à 07:31:08 | Re : Réccupérer le framerate d'un jeu en VB.NET

Renfield

Administrateur CodeS-SourceS
il a raison, cette dll est une dll d'api, qui exporte ta fonction.

j'ai tapé FrapsSharedData sur google, il me l'a dit:

http://www.yofx-nrw.de/bilder/yofx_demos/Fraps/README.HTM

(exemples de code tout en bas)

en VB, tu fera donc un Declare function ...
vendredi 9 mai 2008 à 12:00:00 | Re : Réccupérer le framerate d'un jeu en VB.NET

tinux

Membre Club
Merci Renfield ;)

Mais maintenant j'ai un peu de mal encore (j'aime pas trop ça les API).

J'ai le message : Restriction PInvoke : impossible de retourner des variants

et le code que j'ai fait :

    Structure FRAMERATE
        Dim sizeOfStruc As Decimal
        Dim currentFPS As Decimal
        Dim totalFrames As Decimal
        Dim timeOfLastFrame As Decimal
        Dim gameName As String
    End Structure

   Declare Function FrapsSharedData Lib "fraps.dll" (ByVal lpFrame As FRAMERATE)

    Function ActualFPS()
        Dim nActualFPS As FRAMERATE
        FrapsSharedData(nActualFPS)
        ActualFPS = nActualFPS.currentFPS
    End Function


vendredi 9 mai 2008 à 12:17:55 | Re : Réccupérer le framerate d'un jeu en VB.NET

Renfield

Administrateur CodeS-SourceS
Aïe...
ta déclaration d'API ne convient pas...

une fonction qui ne retourne rien (donc un variant, d'ou ton message d'erreur)
une structure dont les types ne conviennent pas... DWORD c'est un UINT, c'est pas décimal...
ton gameName qui n'a pas de taille spécifiée (32 caractères)...

difficile de prévoir ce que ton code va nous générer.

l'API alloue ta structure et t'en renvoie un pointeur (donc Integer, en .NET)
(je ne connais pas Fraps, je ne fais que lire le code)
vendredi 9 mai 2008 à 12:20:55 | Re : Réccupérer le framerate d'un jeu en VB.NET

tinux

Membre Club
En faisant

   Declare Function FrapsSharedData Lib "fraps.dll" (ByVal lpFrame As FRAMERATE) As quelquechose..

Je n'ai plus le message d'erreur mais ça retourne 0 alors que FRAPS est lancé avec une visualisation wmp (60fps)
vendredi 9 mai 2008 à 13:20:50 | Re : Réccupérer le framerate d'un jeu en VB.NET

tinux

Membre Club
Erf ça me renvoie toujours 0.

    Function ActualFPS()
        Dim nActualFPS As FRAMERATE
        FrapsSharedData(nActualFPS)
        ActualFPS = nActualFPS.totalFrames
    End Function

Je pense que ça vient du fait que nActual est souligné me disant qu'une référence de type null peut se produire du fait qu'aucune valeur ne lui est assignée.

Pourtant sur la même structure ceci marche impec :

    Structure MEMORYSTATUS
        Dim dwLength As Long
        Dim dwMemoryLoad As Long
        Dim dwTotalPhys As Long
        Dim dwAvailPhys As Long
        Dim dwTotalPageFile As Long
        Dim dwAvailPageFile As Long
        Dim dwTotalVirtual As Long
        Dim dwAvailVirtual As Long
    End Structure

    Declare Sub GlobalMemoryStatus Lib "kernel32" (ByVal lpBuffer As MEMORYSTATUS)

    Function GetRamSize() As String
        Dim RamStats As MEMORYSTATUS
        GlobalMemoryStatus(RamStats)
        GetRamSize = FormatNumber((RamStats.dwTotalPhys / 1024 ^ 2), -1) ' pour un résultat en Mo
    End Function
vendredi 9 mai 2008 à 13:25:08 | Re : Réccupérer le framerate d'un jeu en VB.NET

Renfield

Administrateur CodeS-SourceS

la fonction FrapsSharedData ne prend aucun argument et renvoie un pointeur vers une structure FRAMERATE qu'elle alloue.

Declare Function FrapsSharedData Lib "fraps.dll" () As Integer
vendredi 9 mai 2008 à 13:39:25 | Re : Réccupérer le framerate d'un jeu en VB.NET

tinux

Membre Club
D'accord mais alors comment intercepter chaque variable du pointeur ?
vendredi 9 mai 2008 à 14:01:18 | Re : Réccupérer le framerate d'un jeu en VB.NET
vendredi 9 mai 2008 à 15:12:23 | Re : Réccupérer le framerate d'un jeu en VB.NET

tinux

Membre Club
Bon, ça n'avance pas trop.

J'ai essayé d'utiliser CopyMemory comme suit :

    Declare Function FrapsSharedData Lib "fraps.dll" () As UInteger
    Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal variable, ByVal pointeur, ByVal byteLen)

    Function ActualFPS()
        Dim currentFPS As UInteger
        Dim Pointeur As UInteger
        Pointeur = FrapsSharedData()
        CopyMemory(currentFPS, Pointeur,4)
        ActualFPS = currentFPS
    End Function

Retourne toujours 0.

1 2

Cette discussion est classée dans : dll, jeu, réccupérer, framerate, fraps


Répondre à ce message

Sujets en rapport avec ce message

Faire une DLL "Callable" [ par Nowid50 ] Bonjour à tous,J'aimerais développer un patch pour un jeu qui permettrait un jeu en ligne. Seul problème, je ne sais pas comment faire des Sockets en MsgBox DLL [ par Soulstormer ] Bonjour, je voudrais savoir si qq sait si on peut (et si oui comment ^^) afficher un MsgBox a partir d'une dll, par exemple si on clique sur un btn, l joindre les dll [ par VladDracula ] Salut ^^Voilà j'ai une appli qui marche parfaitement sur mon pc portable, mais quand je veut la mettre sur mon pc de bureau ou mm la donner à des amis Dll non importée [ par sebtralalaetph ] Bonjour a tous,Je vous explique mon problème:Je viens de créer une dll contenant un certain nombre de fonctions qui est stockée sur un serveur.Cette d Vbadvance et les DLL non activeX [ par andrebernard ] Bonjour à tousEn fouinant sur le web, pour trouver une solution apparement impossible pour créer une DLL standard (Donc non activeX) avec VB6, je suis aide pour creer petits objets d'un jeu Europa Universalis 3 [ par shedyr ] Bonjour à tous ! Je suis un peu impressionné d'être parmi vous d'autant que je suis totalement néophyte en la matière. Mais je n'arrive pas à trouver DLL vb6 [ par xaeris ] Bonjour tout le monde !! j'aurais besoin d'un peu d'aide pour finaliser mon porgramme... je viens de le finir et J'ai crée un executable (Fichier -> Creer enfin une DLL standard (Non active X) avec VB6 [ par andrebernard ] Bonjour à tousVoila, ça fait des années que je reve de pouvoir créer une DLL standard avec VB6.Apres moultes recherches tant sur ce forum qu'ailleurs, DLL??? [ par xaeris ] bonjour tout le monde ! je viens de finir une appli en vb6 et je voudrais la rendre portable n'importe ou, je met donc les dll dans le meme dossier qu problème d'affichage [ par xaeris ] bonjour tout le monde !! J'ai un problème sur laquelle je n'arrive pas a voir clair. J'ai réaliser une application en vb6 qui met a jour des données


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Septembre 2010
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
27282930   

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,437 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales