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

WinDev Discussion :

Surveillance de l'activité des disques


Sujet :

WinDev

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    486
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 486
    Points : 875
    Points
    875
    Par défaut Surveillance de l'activité des disques
    J'ai posté sur le site de dépôt de PC-Soft un utilitaire pour surveiller l'activité des disques
    Lien de téléchargement

    Je n'ai pas réussi à faire fonctionner correctement l'API SHGetPathFromIDList en pure code WinDev, ce qui m'a obligé a écrire une petite DLL dont le code source est fourni.

    Si quelqu'un arrive à faire fonctionner l'appel vers "SHGetPathFromIDList" uniquement avec le WL, je suis curieux de savoir comment, car toutes mes tentatives ont échouées pour récupérer correctement zPath1 et zPath2.

    Voici la portion de code en question
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
            // DLL replacement for the code below that doesn't work in WL
            API(SHAPI, "zSHGetPathFromIDList", wParam, &zPath1, &zPath2)
    //		p is fixed array of 2 ITEMIDLIST
    //		bidon is ITEMIDLIST
    //		nCount = Dimension(bidon) * 2
    //		Transfer(&p, wParam, nCount)
    //		IF (p[1] <> Null) THEN
    //			SHGetPathFromIDListA(&p[1], &zPath1)
    //		ELSE
    //			zPath1 = $Nil // Test if ZERO or a valid pointer
    //		END
    //		IF (p[2] <> null) THEN 
    //			SHGetPathFromIDListA(&p[2], &zPath2)
    //		ELSE 
    //			zPath2 = $Nil // Test if ZERO or a valid pointer
    //		END
    ...

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 953
    Points : 9 283
    Points
    9 283
    Par défaut
    hello,
    j'arrive à faire fonctionner l'API SHGetPathFromIDList mais je ne l'utilise peut-etre pas avec le même type de paramètres que toi.
    Voici le code qui marche chez moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    resultat est un entier système
    resbool est un booléen
    PtrPIDL est un entier système
    MonBuffer est un  Buffer sur 256 octets
    // CSIDL_DESKTOPDIRECTORY = 16
    resultat = API("Shell32.dll","SHGetSpecialFolderLocation",Instance(),16,&PtrPIDL)
    SI resultat = 0 ALORS
    resbool = API("Shell32.dll","SHGetPathFromIDListA",PtrPIDL,&MonBuffer)
    SI PAS resbool ALORS
    Trace("Erreur dans SHGetPathFromIDListA")
    SINON
    Trace(MonBuffer)
    FIN
    FIN
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    486
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 486
    Points : 875
    Points
    875
    Par défaut
    Merci du retour, effectivement nous ne l'utilisons pas de la même façon.

    Dans mon cas je suis obligé de passer par wParam qui retourne un pointeur sur un tableau de 2 structures, lesquelles contiennent elles-mêmes un pointeur vers 2 chaines de type asciiz que je n'arrive pas a récupérer en WL.

    Je vais essayer de passer zPath1 et zPath2 en variables globales, pour m'assurer que le contenu mémoire ne bouge pas.
    Pour le moment ma petite DLL permet de contourner le problème, mais en WL à part la fonction transfer pour affecter le pointeur wParam je ne vois rien d'autre que je puisse utiliser.

    L'idéal serait de pouvoir dimensionner un tableau directement à une adresse mémoire (pointeur), comme on peut le faire avec les langages compilés natifs.

Discussions similaires

  1. Surveiller l'activité des postes sous debian
    Par TAC_Forum dans le forum Réseau
    Réponses: 3
    Dernier message: 26/05/2008, 14h27
  2. Arrêt des disques durs
    Par bibx dans le forum Administration système
    Réponses: 1
    Dernier message: 29/07/2004, 17h56
  3. Détection des disques physiques et logiques
    Par TheBigMac dans le forum Assembleur
    Réponses: 3
    Dernier message: 10/06/2004, 21h08
  4. Réponses: 3
    Dernier message: 09/01/2004, 14h37
  5. Récupèrer la liste des disques durs
    Par Tililian dans le forum C++Builder
    Réponses: 4
    Dernier message: 19/06/2003, 12h42

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