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 !