J'ai un projet de bibliothèque de types "MyLib" où je dois ajouter une nouvelle méthode comme indiqué ci-dessous. Lorsqu'il est appelé depuis mon application client C#, il doit prendre l'argument IntPtr
comme argument.Comment passer l'argument de type IntPtr du projet C# à mon projet DLL COM
Voici la définition IDL de la méthode au sein du projet « MyLib »:
[id(9), helpstring("method PrintFile"), local]
HRESULT PrintFile([in] HANDLE pDevMode);
Quelqu'un peut-il s'il vous plaît me dire quel type je devrais utiliser pour cet argument perticular dans mon fichier IDL?
Voici mon C# codes du projet client:
PrintDialog PrntDlg = new PrintDialog();
PrintDocument printDocument = new PrintDocument();
printDocument.DocumentName = "filename";
PrntDlg.Document = printDocument;
PrntDlg.AllowSelection = true;
PrntDlg.AllowSomePages = true;
if (PrntDlg.ShowDialog() == DialogResult.OK)
{
IntPtr PDevMode = PrntDlg.PrinterSettings.GetHdevmode();
MyLib.PrintFile(PDevMode);
}
Lorsque j'utilise HANDLE
dans la définition IDL les années get exception suivante jeté:
Impossible de jeter l'objet COM de type « système. __ComObject » type d'interface ...