У меня есть проект библиотеки типов "MyLib", где я должен добавить новый метод, как показано ниже. При вызове из моего клиентского приложения C# он должен принимать IntPtr
в качестве аргумента.
Ниже приведено определение IDL метода внутри проекта "MyLib":
[id(9), helpstring("method PrintFile"), local]
HRESULT PrintFile([in] HANDLE pDevMode);
Может ли кто-нибудь сказать мне, какой тип я должен использовать для этого конкретного аргумента в моем файле IDL?
Ниже приведены коды моего клиентского проекта С#:
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);
}
Когда я использую HANDLE
внутри определения IDL, возникает следующее исключение:
Не удалось преобразовать COM-объект типа «System.__ComObject» в тип интерфейса...