IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Affichage des résultats du sondage: Utilisez-vous les API Windows ?

Votants
20. Vous ne pouvez pas participer à ce sondage.
  • Oui, souvent

    5 25,00%
  • Oui, rarement

    11 55,00%
  • Plus maintenant (Pourquoi ?)

    0 0%
  • Non, jamais

    3 15,00%
  • Sans avis

    1 5,00%
WinDev Discussion :

Utilisez-vous les API Windows et de quelle façon ?


Sujet :

WinDev

  1. #21
    Membre habitué
    Avatar de jdsetls
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Décembre 2012
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2012
    Messages : 209
    Points : 167
    Points
    167
    Billets dans le blog
    1
    Par défaut Du droit d'Halluciner...
    @ RY_YO

    Bonjour,
    Merci de votre réponse.
    Je viens d'entrer dans mon ardoise magique votre code que je récupère ensuite.
    Je rappelle que le but de ce post est de comprendre les API et de les utiliser.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    RetourFonction est un booléen // Type C :BOOL
    uiAction est un entier sans signe // Type C :UINT
    uiParam est un entier sans signe // Type C :UINT
    pvParam est un entier système // Type C :PVOID
    fWinIni est un entier sans signe // Type C :UINT
    RetourFonction=API("USER32","SystemParametersInfoA",uiAction,uiParam,pvParam,fWinIni)
    Zone_de_résultats =  RetourFonction
    Le résultat obtenu est : 1
    En d'autres termes afin de m'apprendre les API, vous me donnez de façon utile un code qui donne pour résultat : 1
    En termes de reproductibilité efficace sous Windev et d'adaptabilité à des situations nouvelles, mes neurones gigotent.
    Bon on avance quand même.
    Reprenons le code d'origine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    BOOL WINAPI SystemParametersInfo(
      _In_     UINT uiAction,
      _In_     UINT uiParam,
      _Inout_  PVOID pvParam,
      _In_     UINT fWinIni
    );
    Je comprends que vous définissez des types de variables.
    Moi qui ne connais pas le C, je me pose la question encore sans réponse de savoir comment on passe de l'un à l'autre, en listant la longue liste exhaustive des API Windows, et surtout grâce à vous ?
    Et évidemment comment je peux le faire sans vous la prochaine fois.

    Merci, je vais tester vos autres exemples et ceux d'Hibernatus le Réveillé, afin de voir ce que je peux en faire. Hein (sans jeu de mots) ?
    Cordialement
    nb : Comme dit la chanson, 'J'y retourne immédiatement'.

  2. #22
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 153
    Points
    2 153
    Par défaut
    Je crois que vous en demandez beaucoup !

    Hibernatus nous a fourni une documentation claire, accessible au non-initié au C et franchement j'ai pas encore tout lu mais ça me semble bien complet.... !

    Ensuite on vous a fourni (Patrice Terrier je crois) un lien vers la page MSDN qui liste les API Windows disponibles...

    Enfin Ry_Yo vous donne un exemple et les clés pour ré-exploiter sa méthode avec d'autre API.... Avez-vous essayé de modifier la vitesse du pointeur comme il vous invite à le faire ? afin de constater que le résultat n'est pas toujours 1....

    Je crains qu'une série exhaustive d’exemple d'implémentation des API Windows en Windev ne soit pas prévu au programme de cette année...

  3. #23
    Membre habitué
    Avatar de jdsetls
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Décembre 2012
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2012
    Messages : 209
    Points : 167
    Points
    167
    Billets dans le blog
    1
    Par défaut Suite de la discussion avec RY_YO
    Bonjour,
    On avance doucement.
    Dans mon ardoise magique j'entre le code de RY_YO :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    RetourFonction est un booléen // Type C :BOOL
    uiAction est un entier sans signe // Type C :UINT
    uiParam est un entier sans signe // Type C :UINT
    pvParam est un entier système // Type C :PVOID
    fWinIni est un entier sans signe // Type C :UINT
    nVitesse est un entier
    uiParam = 0
    uiAction = 0x0070 //récup les infos
    pvParam = &nVitesse 
    fWinIni = 0
    Zone_de_résultats =  uiparam + cr + uiaction + cr + pvparam + cr + fwinini
    J'y ai ajouté un code de récupération Windev et j'obtiens ceci :
    0
    112
    39794124
    0

    D'un côté j'ai avancé puisque le système répond.
    De l'autre, puisque le but est de s'instruire en créant une liste d'API sympathiques et utiles, je me pose la question suivante :
    - Si ma réponse est bien là, je suppose 112, quelle est la signification de l'autre nombre ?
    - Relativement à une réponse de 112, quels sont les mini et maxi ?
    - Puisqu'il s'agit d'une lecture, comment moi-même décider d'un éventuel changement de vutesse et par rapport à quels critères ?

    Une fois répondu à cela, on pourra commencer à progresser réellement, puisque les lecteurs de ces posts deviendront acteurs. Sans pour autant devoir apprendre le C.
    Sinon j'ai l'impression désagréable que certains, ici, sont beaucoup plus intelligents que moi, à connaitre d'aussi bien belles choses...
    Cordialement
    NB : Pour la suite, j'y retourne immédiatement...

  4. #24
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : Laos

    Informations forums :
    Inscription : Mars 2003
    Messages : 557
    Points : 1 200
    Points
    1 200
    Par défaut
    Avant de répondre à une de vos questions, je voudrais vous faire une remarque globale :
    Votre approche pour comprendre comment utiliser une API n'est pas bonne du moins c'est ce qu'il ressort de ce post, pour faire une analogie, si je résume ce post, c'est comme si vous étiez en Chine, devant un chinois avec un dico chinois et vous ouvrez une page au hasard et vous me dites, c'est ce mot que je veux lui dire !
    Sans comprendre ce que veut dire le mot en question, mais avec certitude, c'est ce mot ! Un linguiste vous dira qu'il faudra certainement d'autres mots pour constituer une phrase ou du moins une forme minimal de grammaire pour que le mot prenne son sens. Et encore en espérant que le mot en question ne soit pas une insulte !

    Donc de manière général, on veut utiliser une API pour une raison précise pour combler une carrence du WLangage, du coup comme la recherche est orientée, on passe une longue liste d'API à une API avec plusieurs méthode grâce à google ou autres support...

    C'est pour cela que pour vous aider, le problème n'était pas comment on se sert d'une API, mais comment récupérer la vitesse de déplacement de la souris. Afin d'orienté les recherches et simpifié la compréhension pour ensuite la généraliser.

    Citation Envoyé par jdsetls Voir le message
    ...
    Reprenons le code d'origine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    BOOL WINAPI SystemParametersInfo(
      _In_     UINT uiAction,
      _In_     UINT uiParam,
      _Inout_  PVOID pvParam,
      _In_     UINT fWinIni
    );
    Je comprends que vous définissez des types de variables.
    Moi qui ne connais pas le C, je me pose la question encore sans réponse de savoir comment on passe de l'un à l'autre, en listant la longue liste exhaustive des API Windows, et surtout grâce à vous ?
    Et évidemment comment je peux le faire sans vous la prochaine fois.
    ...
    Vous avez choisi au hasard cette API. Ok, regardons de plus près l'analogie avec Windev vue que vous êtes concentré uniquement sur le WLangage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PROCEDURE SystemParametersInfo(LOCAL uiAction est un entier systeme, LOCAL uiParam est un entier systeme, pvParam est un entier systeme, LOCAL fWinIni est un entier systeme)
    Pourquoi j'ai déclaré uiAction comme entier systeme ? (ou sans signe...) parce que j'ai demandé à google à quoi correspondait le type UINT ? :
    http://msdn.microsoft.com/fr-fr/library/x0sksh43.aspx

    Donc si vous avez pris le temps de lire on peut "traduire"

    _In_ par LOCAL en effet la valeur ne sera pas modifier par l'appel de la procédure, on parle de passage de paramètre par valeur et non référence
    _InOut là par contre la variable sera modifié par la procédure, c'est presque un passage de paramètre par référence, mais nan, car on passe l'adresse de la variable, donc on se doute que c'est la fonction qui fera la modification

    UINT c'est donc le typage du paramètre

    uiAction est donc le nom du paramètre
    Donc maintenant si vous avez compris le concept, votre fonction SystemParametersInfo() attend combien de paramètre ? --> réponse : 4
    Que dit l'aide PCSOFT sur la fonction API() :
    http://doc.pcsoft.fr/fr-FR/?3014005&name=api_fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Exécuter une fonction d'une DLL externe ou de l'API Windows identifiée par son nom Masquer les détails
    <Résultat> = API(<Nom de la DLL> , <Nom de la fonction> [, <Paramètre 1> [, <Paramètre 2> [, ...]]])
     
    Donc il faudra 4 paramètres à l'appel de cette fonction.
     
    RetourFonction=API("USER32","SystemParametersInfoA",.....)
    Enfin là où vous n'avez pas vu la subtilité avec les pointeurs, c'est la valeur de la variable nVitesse qui sera modifié. La valeur de pvparam contient l'adresse de nVitesse. Donc elle est inchangé pour une instance donnée. Donc si vous affichiez plutôt la valeur de nVitesse, vous verrez qu'elle sera comprise entre 1 et 20.

  5. #25
    Membre habitué
    Avatar de jdsetls
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Décembre 2012
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2012
    Messages : 209
    Points : 167
    Points
    167
    Billets dans le blog
    1
    Par défaut On progresse, merci
    Tout d'abord, merci de votre aide.
    Vous remarquerez avec moi que pour l'instant, je ne dispose pas encore d'une API personnalisée Windev, me permettant à moi windévien, de lire cette vitesse et de la modifier...
    C'est bien là le but.
    En créant ce sondage, je propose de nous constituer une bibliothèque d'API que chacun pourra mettre en œuvre en n'utilisant que des éléments Windev.
    Du pratique, sous emballage RY_YO ou Hibernatus le Réveillé...
    Quelque chose d'à la fois simple, clair, pratique et facile à utiliser.
    Du type boîte noire et non pas boîte blanche.
    Meerci d'avance
    Cordialement

  6. #26
    Membre éprouvé Avatar de WDKyle
    Homme Profil pro
    Analyste-Programmeur
    Inscrit en
    Septembre 2008
    Messages
    1 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-Programmeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 200
    Points : 962
    Points
    962
    Par défaut
    J'essai de manipuler l'API DirectX (DirectSound plus précisément) et dans cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    HRESULT DirectSoundCaptureEnumerate(
             LPDSENUMCALLBACK lpDSEnumCallback,
             LPVOID lpContext
    )
    Le résultat est un HRESULT, j'ai vu sur msdn comment était structuré un HRESULT (http://msdn.microsoft.com/en-us/library/bb446131.aspx) mais à quoi cela correspond en W-Langage ?

    Merci

  7. #27
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 153
    Points
    2 153
    Par défaut
    D'après MSDN il s'agit d'un entier non signé sur 32 bit donc un entier sans signe sur 4 octets (je pense) ...mais structuré : il faudra donc traiter le résultat pour récupérer les sections qui vous intéressent (le premier bit est a priori le retour de la fonction)... et ça j'avoue que je ne sais pas comment vous êtes sensé le faire mais quelqu'un ici doit savoir !

  8. #28
    Membre éprouvé Avatar de WDKyle
    Homme Profil pro
    Analyste-Programmeur
    Inscrit en
    Septembre 2008
    Messages
    1 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-Programmeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 200
    Points : 962
    Points
    962
    Par défaut
    Citation Envoyé par Hibernatus34 Voir le message
    Pour répondre au sondage :
    - Beaucoup de GDI+ (version native C++)
    - DirectSound
    - Manipulation de fenêtres, champs (notamment layered windows pour des effets sympas)

    Et hors SDK Windows, on a des projets utilisant des SDK de matériel (e.g. ED-SDK Canon), libs de traitement d'image (e.g. ArcSoft), nos propres DLL C++ (soit du traitement, soit un pont vers d'autres API, car c'est plus pratique en C++ qu'en WD), libs comme libvlc, LAME...
    Bonsoir,

    Je serais interressé de savoir comment tu utilise l'api directsound ? Je cherche a faire de la lecture et de l'enregistrement de fichier audio sur sortie/entree specifique de carte son.

    Je connais un peu bass.dll mais elle n'est pas gratuite pour un projet commercial et c'est pas donne cote tarif

    Merci

  9. #29
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 146
    Points : 9 723
    Points
    9 723
    Par défaut
    hello,
    je ne voudrais pas relancer la polémique , mais l'utilisation généralisée d'API windows s'adresse plutôt à l'élite qu'au programmeur lambda. Dès qu'il faut commencer à programmer sa propre dll en c++ pour intégrer des procédures utilisant des API windows il y a déjà beaucoup moins de candidats. Par contre s'il s'agit d'utiliser quelques api windows dans son programme windev cela reste à la portée de tout le monde. A mon humble avis il ne faut pas réinventer la roue. Si il y a des bibliothèques ( que se soit des dll c++ ou des assemblages dotnet etc...) qui possèdent la ou les fonctions désirées autant les utiliser. Bien sûr vous me direz, il faut voir leurs licences, les contraintes que cela entraîne (par exemple pour dotnet, qu'il soit présent avec l'O.S). Il y a aussi les performances et le rajout de fichiers. Mais si cela n'est pas trop pénalisant , il faut voir le temps gagné !
    Prenons l'exemple de WDKyle qui veut utiliser l'API windows DirectSoundCaptureEnumerate. Il n'est pas spécialiste du c++ (du moins je pense), il va plutôt galérer pour pouvoir l'utiliser. Comme il veut faire en plus du traitement audio, il va pouvoir utiliser une bibliothèque audio toute faite. Prenons par exemple l'assemblage dotnet Naudio (licence Microsoft public license). Avec cet assemblage il va pouvoir faire l'équivalent du DirectSoundCaptureEnumerate facilement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // Enumérer les périphériques d'entrée Audio avec Naudio
    WaveInDevices est un entier = WaveIn.DeviceCount
    POUR I=0 _A_ WaveInDevices - 1	
    deviceInfo est un WaveInCapabilities dynamique
    deviceInfo = WaveIn.GetCapabilities(I)
    Trace("Périphérique","  ",I, " :  Nom : ",deviceInfo:ProductName," - Canaux : ", deviceInfo:Channels)	
    FIN
    et bien d'autres choses. Par exemple pour lire un fichier mp3 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // Lire un fichier mp3 avec NAudio
    myWaveOutDevice est un WaveOut
    myAudioFileReader est un  AudioFileReader("F:\test.mp3")
    myWaveOutDevice.Init(myAudioFileReader)
    myWaveOutDevice.PLay()
    Ami calmant, J.P

    PS : N'hésitez pas à forcer sur les pouces vers le bas, je suis vacciné (contre la grippe porcine) et je ne suis pas auto-stoppeur

  10. #30
    Membre habitué
    Avatar de jdsetls
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Décembre 2012
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2012
    Messages : 209
    Points : 167
    Points
    167
    Billets dans le blog
    1
    Par défaut Sourceforge et les API sans droits
    Bonjour,

    Les API sont des morceaux de code écrits en C et exigeant un minimum de compréhension de la syntaxe et des variables C.
    Elles sont puissantes en ce sens qu'elles que :

    1. Ce sont des bibliothèques de fonctions toutes faites
    2. Elles sont nombreuses et spécialisées
    3. Elles sont à priori fiables
    4. Elles vont au coeur du système un peu comme dans Dune les soeurs du Bene Gesserit


    L'inconvénient est clair, les API ne sont pas intuititves.
    Elles sont peu lisibles en ce sens que les éventuelles erreurs n'apparaissent pas comme dans le vérificateur de syntaxe.
    Ne comptons pas sur le débogueur pour signaler les erreurs.

    Je ne crois pas qu'elles soient réservées à l'élite des programmeurs mais plutôt aux programmeurs informés.
    Elles font appel à un mélange de docilité à la syntaxe, à une bonne mémoire et procurent à certains un agréable sentiment d'être à part.
    Elles plairaient beaucoup à Monsieur Monk.


    Par curiosité, je suis allé voir s'il existait pour nous une documentation utile concernant les API, ceci sur les sites officiels Sourceforge.
    Voir par exemple :
    http://sourceforge.net/apps/trac/sourceforge/wiki/API

    There are a number of APIs available for the SourceForge platform.

    Allura API - A read/write API for reading/writing to project info, tickets, wiki pages, etc on the New SourceForge system.
    Classic API - A read-only API for obtaining various project details
    Download Stats API - A read-only API for obtaining download statistics
    File Release API - set the default download for your project.

    Related

    Apache Allura: Chat: 50d51acd0594ca02a3548a95
    Community Docs: Using the Release API
    Documentation: API - Classic
    Documentation: Allura API
    Documentation: Download Stats API

    Language Interfaces

    The following interfaces are available to access (portions of) this API.

    WWW::SourceForge (Perl) provides access to a subset of this API - http://search.cpan.org/~rbow/WWW-SourceForge/README.pod

    Ce que je demande ici, et nous sommes capables d'y parvenir, c'est la construction d'une passerelle Windev vers API et retour.
    Pour résumer, une simplification de l'usage des API, sans pour autant apprendre le C.

    Que la force soit avec nous,
    Cordialement

  11. #31
    Membre habitué
    Avatar de jdsetls
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Décembre 2012
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2012
    Messages : 209
    Points : 167
    Points
    167
    Billets dans le blog
    1
    Par défaut LA valeur de nvitesse, dans votre code est à zéro
    Citation Envoyé par Ry_Yo Voir le message
    Avant de répondre à une de vos questions, je voudrais vous faire une remarque globale :
    Votre approche pour comprendre comment utiliser une API n'est pas bonne du moins c'est ce qu'il ressort de ce post, pour faire une analogie, si je résume ce post, c'est comme si vous étiez en Chine, devant un chinois avec un dico chinois et vous ouvrez une page au hasard et vous me dites, c'est ce mot que je veux lui dire !
    Sans comprendre ce que veut dire le mot en question, mais avec certitude, c'est ce mot ! Un linguiste vous dira qu'il faudra certainement d'autres mots pour constituer une phrase ou du moins une forme minimal de grammaire pour que le mot prenne son sens. Et encore en espérant que le mot en question ne soit pas une insulte !

    Donc de manière général, on veut utiliser une API pour une raison précise pour combler une carrence du WLangage, du coup comme la recherche est orientée, on passe une longue liste d'API à une API avec plusieurs méthode grâce à google ou autres support...

    C'est pour cela que pour vous aider, le problème n'était pas comment on se sert d'une API, mais comment récupérer la vitesse de déplacement de la souris. Afin d'orienté les recherches et simpifié la compréhension pour ensuite la généraliser.



    Vous avez choisi au hasard cette API. Ok, regardons de plus près l'analogie avec Windev vue que vous êtes concentré uniquement sur le WLangage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PROCEDURE SystemParametersInfo(LOCAL uiAction est un entier systeme, LOCAL uiParam est un entier systeme, pvParam est un entier systeme, LOCAL fWinIni est un entier systeme)
    Pourquoi j'ai déclaré uiAction comme entier systeme ? (ou sans signe...) parce que j'ai demandé à google à quoi correspondait le type UINT ? :
    http://msdn.microsoft.com/fr-fr/library/x0sksh43.aspx

    Donc si vous avez pris le temps de lire on peut "traduire"



    Donc maintenant si vous avez compris le concept, votre fonction SystemParametersInfo() attend combien de paramètre ? --> réponse : 4
    Que dit l'aide PCSOFT sur la fonction API() :
    http://doc.pcsoft.fr/fr-FR/?3014005&name=api_fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Exécuter une fonction d'une DLL externe ou de l'API Windows identifiée par son nom Masquer les détails
    <Résultat> = API(<Nom de la DLL> , <Nom de la fonction> [, <Paramètre 1> [, <Paramètre 2> [, ...]]])
     
    Donc il faudra 4 paramètres à l'appel de cette fonction.
     
    RetourFonction=API("USER32","SystemParametersInfoA",.....)
    Enfin là où vous n'avez pas vu la subtilité avec les pointeurs, c'est la valeur de la variable nVitesse qui sera modifié. La valeur de pvparam contient l'adresse de nVitesse. Donc elle est inchangé pour une instance donnée. Donc si vous affichiez plutôt la valeur de nVitesse, vous verrez qu'elle sera comprise entre 1 et 20.
    Bonjour et merci, le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    RetourFonction est un booléen // Type C :BOOL
    uiAction est un entier sans signe // Type C :UINT
    uiParam est un entier sans signe // Type C :UINT
    pvParam est un entier système // Type C :PVOID
    fWinIni est un entier sans signe // Type C :UINT
    nVitesse est un entier
    uiParam = 0
    uiAction = 0x0070 //récup les infos
    pvParam = &nVitesse 
    fWinIni = 0
    Zone_de_résultats =  uiparam + cr + uiaction + cr  + fwinini  + cr + + pvparam + cr + "nvitesse = " + nvitesse
    ... donne pour résultat :

    0
    112
    0
    39794124
    nvitesse = 0

    Vous voyez bien le problème.
    Je veux bien croire que nvitesse est toujours compris entre 1 et 20 comme vous le dîtes.
    Cependant je demande que vous nous aidiez à créer des fonctions, pas à pas comme vous l'avez fait et de façon compréhensible par tous.
    Pour l'instant je ne vois pas comment j'aurais pu induire de vos posts que cette valeur est comprise entre 0 et 20.
    Ce n'est marqué nulle part et le résultat est zéro.

    C'en est au point que Kyle et d'autres pensent que les API sont réservées à l'élite des programmeurs tandis que je pense qu'elles sont les filles de Monsieur Monk.

    Du moins tant que l'implicite n'est pas remplacé par l'explicite.
    Si c'est simple, c'est du Windev !
    Ce qui est le but de ce fil de discussion et sondage : simplifier, rendre accessible à tous.
    Merci d'avance de vos efforts.
    Cordialement

  12. #32
    Membre expérimenté
    Inscrit en
    Août 2010
    Messages
    732
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 732
    Points : 1 653
    Points
    1 653
    Par défaut
    Citation Envoyé par WDKyle Voir le message
    Bonsoir,

    Je serais interressé de savoir comment tu utilise l'api directsound ? Je cherche a faire de la lecture et de l'enregistrement de fichier audio sur sortie/entree specifique de carte son.

    Je connais un peu bass.dll mais elle n'est pas gratuite pour un projet commercial et c'est pas donne cote tarif

    Merci
    Comme l'a expliqué Jurassic Pork, il vaut mieux être à l'aise avec C++ pour utiliser DirectSound. J'ai développé une petite DLL et des classes WD qui font le pont, ainsi que certaines fonctionnalités directement dans la DLL.
    Suivez plutôt son conseil en utilisant Naudio, ça sera bien plus accessible, et ça vous apportera des fonctionnalités en plus.
    Pour ma part, l'intérêt de DirectSound était que c'est extrêmement léger, simple et fiable.

  13. #33
    Membre expérimenté
    Inscrit en
    Août 2010
    Messages
    732
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 732
    Points : 1 653
    Points
    1 653
    Par défaut
    Citation Envoyé par jdsetls Voir le message
    Par curiosité, je suis allé voir s'il existait pour nous une documentation utile concernant les API, ceci sur les sites officiels Sourceforge.
    Voir par exemple :
    http://sourceforge.net/apps/trac/sourceforge/wiki/API

    There are a number of APIs available for the SourceForge platform.

    Allura API - A read/write API for reading/writing to project info, tickets, wiki pages, etc on the New SourceForge system.
    Classic API - A read-only API for obtaining various project details
    Download Stats API - A read-only API for obtaining download statistics
    File Release API - set the default download for your project.
    C'est complètement hors sujet.
    Il s'agit d'une API Web pour accéder aux données de SourceForge.
    Personnellement, je laisse tomber, ça part dans tous les sens...

  14. #34
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : Laos

    Informations forums :
    Inscription : Mars 2003
    Messages : 557
    Points : 1 200
    Points
    1 200
    Par défaut
    Bonjour,

    Ceci sera ma dernière réponse sur ce post (je pense avoir fait le tour), car je ne partage pas votre point de vue. Rajouter une sur-couche à la "sur-couche windev" n'est pas un travail qui me stimule et je n'en vois pas l'intérêt.

    Par contre aider des personnes qui ont besoin ponctuellement de combler une lacune du WLangage je le conçois parfaitement. Pour le reste, faites ce que je fais régulièrement : j'envoi une suggestion à PCSOFT afin qu'ils complètent leur framework (je sais l'espoir fais vivre ) par exemple la dernière en date était une demande d'équivalence de "INSERT ON DUPLICATE..."


    Enfin sur mon poste de dev. (Win7 pro x64) je vous garantis que ce code fonctionne parfaitement et affiche bien la vitesse de déplacement de la souris

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    RetourFonction est un booléen // Type C :BOOL
    uiAction est un entier sans signe // Type C :UINT
    uiParam est un entier sans signe // Type C :UINT
    pvParam est un entier système // Type C :PVOID
    fWinIni est un entier sans signe // Type C :UINT
    nVitesse est un entier
     
    uiParam = 0
    uiAction = 0x0070 //récup les infos
    pvParam = &nVitesse 
    fWinIni = 0
     
    RetourFonction=API("USER32","SystemParametersInfoA",uiAction,uiParam,pvParam,fWinIni)
    Trace(nVitesse)
    Bonne chance pour votre projet.

    Cordialement.

  15. #35
    Membre habitué
    Avatar de jdsetls
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Décembre 2012
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2012
    Messages : 209
    Points : 167
    Points
    167
    Billets dans le blog
    1
    Par défaut Pertinent ou pas ? Et pourtant...
    Bonjour,
    Je suis perplexe.
    Windev et Webdev sont par définition des passerelles vers d'autres mondes, entre autre Linux.
    Alors en quoi des API donnant accès à des contenus web par le biais de SourceForge seraient-elles hors sujet du point de vue d'Hibernatus ?
    Quant à partir dans tous les sens, quand je lis l'aide Windev sur les API, je reste étonné de l'absence d'exemples utilisables directement.
    J'ai besoin de concret.
    Je ne vois pas pourquoi je resterais privé de l'immense bibliothèque des API sous le vague prétexte qu'elle est insuffisamment documentée.
    Cordialement

  16. #36
    Membre habitué
    Avatar de jdsetls
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Décembre 2012
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2012
    Messages : 209
    Points : 167
    Points
    167
    Billets dans le blog
    1
    Par défaut Et maintenant, après le Get, le Set
    Bonjour,

    Exact, le code de Ry_YO fonctionne.
    Après la lecture, l'écriture.
    Comment fais-tu maintenant, pour établir la valeur au lieu de seulement la lire.
    Là nous aurons avance et fait quelque chose d'à la fois utile, en termes de compréhension (éveil de l'esprit) et d'utilité/réutilisabilité avec un premier bloc pour notre bibliothèque simplifiée d'API.
    Comme je dis toujours à propos de moi-même quand je commence à comprendre : 'Gogol s'améliore'.
    Quelques questions :
    - Quelle est la durée de validité ? Jusqu'à ce qu'on change, jusqu'au prochain démarrage ?
    - Cette API est-elle valable pour l'ensemble des pgms Windows ou seulement là où elle a été établie, c'est à dire dans Windev ?
    Tout çaaaaaaaaaa ...
    Cordialement
    nb : Une réponse du type 'C'est évident' serait de l'ordre de l'implicite = péché mortel en pédagogie, car on présuppose que l'interlocuteur connaît déjà.

  17. #37
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 153
    Points
    2 153
    Par défaut
    Citation Envoyé par jdsetls Voir le message
    Bonjour,
    Je suis perplexe.
    Windev et Webdev sont par définition des passerelles vers d'autres mondes, entre autre Linux.
    Alors en quoi des API donnant accès à des contenus web par le biais de SourceForge seraient-elles hors sujet du point de vue d'Hibernatus ?
    Quant à partir dans tous les sens, quand je lis l'aide Windev sur les API, je reste étonné de l'absence d'exemples utilisables directement.
    J'ai besoin de concret.
    Je ne vois pas pourquoi je resterais privé de l'immense bibliothèque des API sous le vague prétexte qu'elle est insuffisamment documentée.
    Cordialement
    On parle d'API dès lors qu'on a une interface permettant à un programme tiers d’exécuter des fonctions d'un autre programme.
    Vous avez lancé un sujet sur les API Windows, cela n'a rien à voir avec une API Web (webservice)... d'où le hors sujet quand vous parlez des API de Sourceforge.

    Vous devriez lire les réponses qui vous ont été faites avec plus d'attention.
    Personne ne vous fournira de code directement utilisable. Créer une surcouche en windev pour exploiter les API Windows revient à refaire Windev... quel est votre objectif ?

    "Si c'est simple c'est Windev..." oui mais les API ne sont pas du Windev, ça n'est pas si simple... tout dépend de l'API que vous voulez utilisez et de ce que vous voulez faire.

    NB : Vous posez des questions mais n'acceptez pas les réponses parce qu'elle ne vous conviennent pas ou que vous les survolez => péché mortel de l'apprenti.

  18. #38
    Membre éprouvé Avatar de WDKyle
    Homme Profil pro
    Analyste-Programmeur
    Inscrit en
    Septembre 2008
    Messages
    1 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-Programmeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 200
    Points : 962
    Points
    962
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    hello,
    je ne voudrais pas relancer la polémique , mais l'utilisation généralisée d'API windows s'adresse plutôt à l'élite qu'au programmeur lambda. Dès qu'il faut commencer à programmer sa propre dll en c++ pour intégrer des procédures utilisant des API windows il y a déjà beaucoup moins de candidats. Par contre s'il s'agit d'utiliser quelques api windows dans son programme windev cela reste à la portée de tout le monde. A mon humble avis il ne faut pas réinventer la roue. Si il y a des bibliothèques ( que se soit des dll c++ ou des assemblages dotnet etc...) qui possèdent la ou les fonctions désirées autant les utiliser. Bien sûr vous me direz, il faut voir leurs licences, les contraintes que cela entraîne (par exemple pour dotnet, qu'il soit présent avec l'O.S). Il y a aussi les performances et le rajout de fichiers. Mais si cela n'est pas trop pénalisant , il faut voir le temps gagné !
    Prenons l'exemple de WDKyle qui veut utiliser l'API windows DirectSoundCaptureEnumerate. Il n'est pas spécialiste du c++ (du moins je pense), il va plutôt galérer pour pouvoir l'utiliser. Comme il veut faire en plus du traitement audio, il va pouvoir utiliser une bibliothèque audio toute faite. Prenons par exemple l'assemblage dotnet Naudio (licence Microsoft public license). Avec cet assemblage il va pouvoir faire l'équivalent du DirectSoundCaptureEnumerate facilement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // Enumérer les périphériques d'entrée Audio avec Naudio
    WaveInDevices est un entier = WaveIn.DeviceCount
    POUR I=0 _A_ WaveInDevices - 1	
    deviceInfo est un WaveInCapabilities dynamique
    deviceInfo = WaveIn.GetCapabilities(I)
    Trace("Périphérique","  ",I, " :  Nom : ",deviceInfo:ProductName," - Canaux : ", deviceInfo:Channels)	
    FIN
    et bien d'autres choses. Par exemple pour lire un fichier mp3 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // Lire un fichier mp3 avec NAudio
    myWaveOutDevice est un WaveOut
    myAudioFileReader est un  AudioFileReader("F:\test.mp3")
    myWaveOutDevice.Init(myAudioFileReader)
    myWaveOutDevice.PLay()
    Ami calmant, J.P

    PS : N'hésitez pas à forcer sur les pouces vers le bas, je suis vacciné (contre la grippe porcine) et je ne suis pas auto-stoppeur
    Bonjour,

    Merci jurassic pork pour ton aide ! Je vais regarder NAudio mais peut-on choisir les entrées/sorties de carte son ?

    Je voulais passer en API directement car je n'aime pas trop les assemblages .Net sous Windev, je trouve cela pas très stable (j'ai faux ?).

    Avec les fonctions API de Windev, je ne charge que les fonctions dont j'ai besoin, je ne charge pas tout et pas de grosse dépendances à un assemblage. (encore faux ?)

  19. #39
    Membre actif
    Inscrit en
    Octobre 2013
    Messages
    274
    Détails du profil
    Informations forums :
    Inscription : Octobre 2013
    Messages : 274
    Points : 248
    Points
    248
    Par défaut
    bonjour
    Je vois que certains ont vraiment fait preuve de patience.
    n'étant qu'un "petit" utilisateur d'API (par faute de temps je pense), je ne peux pas aider.


    @jdsetls
    j'ai vraiment l'impression que tu te lances dans un domaine qui te dépasse et que tu veux du tout cuit ou du moins du "si c'est simple c'est du windev 2014" comme tu le vends si bien.
    Mais au fait, dans quel but ? te dépanner pour un problème que tu rencontres ou écrire un livre ?

    si c'est le second il serait bien que tu maitrises le sujet.

  20. #40
    Membre habitué
    Avatar de jdsetls
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Décembre 2012
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2012
    Messages : 209
    Points : 167
    Points
    167
    Billets dans le blog
    1
    Par défaut API en lecture et écriture
    Citation Envoyé par michel.souris Voir le message
    On parle d'API dès lors qu'on a une interface permettant à un programme tiers d’exécuter des fonctions d'un autre programme.
    Vous avez lancé un sujet sur les API Windows, cela n'a rien à voir avec une API Web (webservice)... d'où le hors sujet quand vous parlez des API de Sourceforge.

    Vous devriez lire les réponses qui vous ont été faites avec plus d'attention.
    Personne ne vous fournira de code directement utilisable. Créer une surcouche en windev pour exploiter les API Windows revient à refaire Windev... quel est votre objectif ?

    "Si c'est simple c'est Windev..." oui mais les API ne sont pas du Windev, ça n'est pas si simple... tout dépend de l'API que vous voulez utilisez et de ce que vous voulez faire.

    NB : Vous posez des questions mais n'acceptez pas les réponses parce qu'elle ne vous conviennent pas ou que vous les survolez => péché mortel de l'apprenti.
    Bonjour,
    Que ce soient des API ou des DLLs le principe est le même.
    On lit et/ou on écrit pour obtenir des renseignemlents ou attribuer des valeurs.

    Les API ne sont pas réservées à Windows sinon pourquoi dirait-on les API Windows, s'il n'en existait pas d'autres.
    Dans le cas de ce sondage, le but est de réaliser une collection d'API facilement réutilisables, du moins lorsqu'elles permettent des actions non directement Windev/webdev.

    Le premier livre consacré aux API Windows, au début des années 90, était lourd de 1300 pages.
    Cela signifie que pour le programmeur curieux, nous avons là une mine d'or à exploiter.

    Comme j'ai peu de réponses concrètes, et toutes sont les bienvenues, je supporte, encore qu'avec un certain plaisir d'anthropologue, des collections de petits maîtres (pardonnez le fond de ma pensée) qui s'efforcent de montrer qu'ils connaissent le C mais qui sont incapables d'aller jusqu'au bout pour fournir quelque chose d'utile au débutant comme moi, et aux autres.

    Sur l'ensemble des posts autosatisfaits où l'on m'explique que je n'y connais rien, que je n'ai jamais programmé d'API, qu'il faut savoir écouter (mais quoi ?) je me pose la question :

    Pourquoi personne jusqu'à présent n'a prouvé ses connaissances en fournissant une liste des API qui sont intéressantes pour les windéviens et qu'il conviendrait de rendre compréhensibles facilement et tout le monde dirait Bravo ! Et Merci !

    Avec des exemples concrets.

    Au lieu de cela j'ai lu dans un post rigolo 'Je ne suis pas là pour écrire du code à ta place !'.

    Alors dans ce cas, pourquoi être présent dans ce forum ?

    Bref deux dinosaures sur trois ont fui, poursuivis par l'évolution.

    Et nous allons commencer à proposer des API pour tous.

    Cordialement

Discussions similaires

  1. [Débat] Utilisez vous les Pages d'Accès aux Données?
    Par mout1234 dans le forum Sondages et Débats
    Réponses: 7
    Dernier message: 27/12/2006, 20h19
  2. Modifier la couleur d'un STATIC avec les API windows
    Par Mirsa dans le forum Visual C++
    Réponses: 31
    Dernier message: 27/11/2006, 12h18
  3. Réponses: 2
    Dernier message: 03/11/2006, 15h58
  4. Réponses: 69
    Dernier message: 15/06/2006, 12h42
  5. le Handle dans les APIs windows ?
    Par gootsu dans le forum Windows
    Réponses: 8
    Dernier message: 02/06/2006, 16h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo