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

API, COM et SDKs Delphi Discussion :

lock abusif UnlockFileEx


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre confirmé
    Avatar de annemarie
    Femme Profil pro
    Développeur multimédia
    Inscrit en
    Juillet 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2006
    Messages : 97
    Billets dans le blog
    1
    Par défaut lock abusif UnlockFileEx
    Bonjour à tous,

    j'ai un problème de lock de fichier par un process externe à mon soft qui les libère de façon pas très propre et qui parfois ne libère carrément pas. Le soft Unlocker marche bien dessus pour le libérer.

    Je voudrais maintenant du coup le délocker via mon code et je cherche un exemple delphi utilisant UnlockFileEx (si cette fonction est appropriée ce qui est moins sur ...).

    Bien à vous

  2. #2
    Membre confirmé
    Avatar de annemarie
    Femme Profil pro
    Développeur multimédia
    Inscrit en
    Juillet 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2006
    Messages : 97
    Billets dans le blog
    1
    Par défaut Tentative malheureusement infructueuse
    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
     
    var handle: HWND;
         Ov: OVERLAPPED;
    begin
      TargetFile := TargetFile + #0;
      handle := CreateFile(@TargetFile[1], GENERIC_READ, 0, nil, OPEN_EXISTING, 0, 0);
      try
        ov.Internal := 0;
        ov.InternalHigh := 0;
        ov.Offset := 0;
        ov.OffsetHigh := 0;
        ov.hEvent := handle;
        UnlockFileEx(handle, 0, 100, 0, Ov);
      finally
        CloseHandle(handle);
      end;
    ... ça ne marche pas !

  3. #3
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    UnlockFileEx permet de dévérouiller un secteur dans un fichier, dont cas, tu déverouille 100 octets dans le fichier ... de plus ton hEvent n'est pas cohérent ... mets le plutôt à Zéro, car sinon il faut utiliser CreateEvent

    Cette application externe vérouille-t-elle vraiement le fichier, ou c'est juste un SHARE_EXCLUSIVE ce qui n'est pas le même chose ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    Membre confirmé
    Avatar de annemarie
    Femme Profil pro
    Développeur multimédia
    Inscrit en
    Juillet 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2006
    Messages : 97
    Billets dans le blog
    1
    Par défaut
    Je ne sais pas exactement, la suppression du fichier est impossible avec le message : Cette ressource est utilisée par une autre personne ou un autre programme. Parfois, en attendant un peu, ça passe, parfois ça reste bloqué. Il s'agit du process : transcodage quicktime par ffmpeg.

    En utilisant le logiciel unlocker j'arrive à le supprimer. Je ne suis pas une experte des files systèmes et autre windows système mania, du coup je suis un peu dans l'expectative.

    Faut-il juste changer les attributs (SHARE_EXCLUSIVE) par l'ouverture du fichier dans un autre mode ou y a t-il plus simple.

    En tout cas merci pour la réponse, sur les derniers post que j'ai posté, c'est la première réponse que j'ai depuis longtemps, ça fait plaisir....

  5. #5
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    C'est comme si effectivement QuickTime ne relachait pas tout de suite le fichier, ...

    peux-tu utilise UnLocker en ligne de commande, en lui passant le fichier à dévérouiller par exemple ?
    Ou voir si il fournisse un objet COM importable dans Delphi


    pour SHARE_EXCLUSIVE, je pense que c'est QuickTime qui l'ouvre avec cette option, regarde avec Process Explorer ou Process Monitor, si il y a encore des opérations sur le fichier

    Sinon, à quoi servirait un forum si l'on n'y répondait pas !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #6
    Membre confirmé
    Avatar de annemarie
    Femme Profil pro
    Développeur multimédia
    Inscrit en
    Juillet 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2006
    Messages : 97
    Billets dans le blog
    1
    Par défaut
    J'ai utilisé ProcessExplorer, je vois bien mon soft et le scan sur un répertoire des fichiers sources à transcoder, mais rien concernant le fichier destination bloqué. Le fichier est bloqué par WLXQuickTimeControlHost.exe mais qui n'est plus actif dans les process en cours (je ne vois rien dans ProcessExplorer). En fait ce WLXQuickTimeControlHost.exe est un soft de Windows Live, qui n'a rien à voir avec mon soft et qui prend la main dessus (pour quelle raison je ne sais pas). Je l'ai donc désinstallé et je n'ai plus de blocage. Donc le problème est résolu par la méthode forte. Le seul problème, c'est que je ne peux plus tchater avec les copines (va falloir que je travaille ....bouh). Maintenant je ne sais toujours pas comment déloquer un fichier par une commande, mais bon.

    Merci en tout cas de ton aide (être aidée par ShaiLeTroll, c'est quand même la classe ...).

  7. #7
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    Regarde de plus près UnLocker, lance un CMD, puis fait UnLocker /? ...

    Command line usage:

    Unlocker.exe Object [Option]

    Object:

    Complete path including drive to a file or folder

    Options:

    /H or -H or /? or -?: Display command line usage
    /S or -S: Unlock object without showing the GUI
    /L or -L: Object is a text file containing the list of files to unlock
    /LU or -LU: Similar to /L with a unicode list of files to unlock
    /O or -O: Outputs Unlocker-Log.txt log file in Unlocker directory
    /D or -D: Delete file
    /R Object2 or -R Object2: Rename file, if /L or /LU is set object2 points to a text file containing the new name of files
    /M Object2 or -M Object2: Move file, if /L or /LU is set object2 points a text file containing the new location of files
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UnLocker c:\monFichier.wav -s
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  8. #8
    Membre confirmé
    Avatar de annemarie
    Femme Profil pro
    Développeur multimédia
    Inscrit en
    Juillet 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2006
    Messages : 97
    Billets dans le blog
    1
    Par défaut
    effectivement ça marche

    UnLocker c:\monFichier.wav -s -D et ça le supprime en prime.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Locking Record
    Par Fr@ncky dans le forum Hibernate
    Réponses: 4
    Dernier message: 24/11/2004, 11h26
  2. Curseur et lock : Les différence & lequel choisir
    Par BilTCD dans le forum Access
    Réponses: 2
    Dernier message: 22/10/2004, 14h03
  3. [CVS] Problème de commit (Could not open lock file)
    Par 1tox dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 19/10/2004, 11h22
  4. [VB.NET] Synchronisation via application.lock
    Par David.V dans le forum ASP.NET
    Réponses: 4
    Dernier message: 15/06/2004, 06h51
  5. Row lock
    Par cassandra dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 09/04/2003, 16h07

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