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

Framework .NET Discussion :

runningObjectTable.GetObject() ne retourne pas toujours quelque chose.


Sujet :

Framework .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Février 2014
    Messages : 2
    Par défaut runningObjectTable.GetObject() ne retourne pas toujours quelque chose.
    Bonjour,

    J'ai un souci sur ce bout de code :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    using System.Runtime.InteropServices;
    using System.Runtime.InteropServices.ComTypes;
     
     
    namespace Test {
     
    	/// <inheritdoc />
    	public class Test {
     
    		[DllImport("ole32.dll")]
    		private static extern int CreateItemMoniker([MarshalAs(UnmanagedType.LPWStr)] string lpszDelim, [MarshalAs(UnmanagedType.LPWStr)] string lpszItem, out IMoniker ppmk);
     
    		[DllImport("ole32.dll")]
    		private static extern int GetRunningObjectTable(uint reserved, out IRunningObjectTable pprot);
     
    		private object GetFromProcess(int processId) {
    			CreateItemMoniker(null, $"SolidWorks_PID_{processId}", out IMoniker moniker);
    			GetRunningObjectTable(0, out IRunningObjectTable runningObjectTable);
     
    			int result = runningObjectTable.GetObject(moniker, out object obj);
    			return obj;
    		}
    	}
     
    }
    J'utilise Visual Studio et Rider.
    Pour ce même code, Visual Studio va bien trouver un 'obj' mais pas Rider. et d'autres fois, c'est l'inverse.
    Il arrive parfois que tout fonctionne bien et d'un coup ça ne fonctionne plus.
    Je précise que l'application recherchée est bien lancée, le processId est bon.
    Quand ça ne fonctionne pas, result = -2147221021.

    Auriez-vous des idées du pourquoi de ce problème et comment le régler svp ?

    Merci bien !

  2. #2
    Candidat au Club
    Homme Profil pro
    Retraité informaticien
    Inscrit en
    Février 2025
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité informaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2025
    Messages : 4
    Par défaut
    Bjr,

    Et si vous programmiez cet exemple en C++?

    Personnellement j'ai eu une mauvaise expérience des langages C# et apparentés (mauvaise optimisation du code binaire généré, marshal difficile, etc.).
    Par ailleurs, j'ai pu convertir facilement une application Windows complexe C++ 32 bits en 64 bits, ce qui n'a pas été le cas du C#.

    Ceci étant dit, cela ne résout pas votre problème.
    Cdlt.

  3. #3
    Membre Expert

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 296
    Par défaut
    Je ne connais pas les fonctions CreateItemMoniker et GetRunningObjectTable, mais les deux sont censées retourner S_OK si elles réussissent. Or, dans votre code, il n'y a pas de tests relatif au succès ou à l'échec de ces fonctions.

Discussions similaires

  1. Réponses: 13
    Dernier message: 04/05/2015, 11h35
  2. Réponses: 5
    Dernier message: 14/12/2009, 09h36
  3. Réponses: 9
    Dernier message: 14/06/2007, 12h22
  4. Fonction ne retournant pas toujours une valeur
    Par mastochard dans le forum C
    Réponses: 14
    Dernier message: 25/05/2006, 12h13
  5. [thread][methodologie]Quelque chose que je ne comprends pas!
    Par norkius dans le forum Général Java
    Réponses: 5
    Dernier message: 16/03/2005, 14h01

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