Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
 Re: (COM) Разная интерпретация одного и того же метода в С++ и Vb.Net/C#(Interop)  [new]
Дмитрий77
Member

Откуда:
Сообщений: 4097
Просто третий параметр туда дописать?
По логике то что в оригинале является 3-м параметром ([out, retval] LONG *plErrorBodyFile),
за его отсутствием вбухивается в то что ф-ция в Interop возвращает (-1 при успехе она возвращает),
а HRESULT вбухивается в Exeption (Err.Number).
Знать бы еще тот китайский на котором это дописать.
15 сен 17, 12:34    [20798496]     Ответить | Цитировать Сообщить модератору
 Re: (COM) Разная интерпретация одного и того же метода в С++ и Vb.Net/C#(Interop)  [new]
hVostt
Member

Откуда:
Сообщений: 11763
Дмитрий77
Просто третий параметр туда дописать?
По логике то что в оригинале является 3-м параметром ([out, retval] LONG *plErrorBodyFile),
за его отсутствием вбухивается в то что ф-ция в Interop возвращает (-1 при успехе она возвращает),
а HRESULT вбухивается в Exeption (Err.Number).
Знать бы еще тот китайский на котором это дописать.


Взял бы и написал на CLI обётку и не мучался :)
15 сен 17, 12:36    [20798503]     Ответить | Цитировать Сообщить модератору
 Re: (COM) Разная интерпретация одного и того же метода в С++ и Vb.Net/C#(Interop)  [new]
Изопропил
Member

Откуда:
Сообщений: 30643
Дмитрий77,

https://msdn.microsoft.com/en-us/library/ek1fb3c6(v=vs.90).aspx
15 сен 17, 12:43    [20798522]     Ответить | Цитировать Сообщить модератору
 Re: (COM) Разная интерпретация одного и того же метода в С++ и Vb.Net/C#(Interop)  [new]
Дмитрий77
Member

Откуда:
Сообщений: 4097
hVostt
Взял бы и написал на CLI обётку и не мучался :)

Да я как бы не мучаюсь, я понять хочу.
Ты имеешь ввиду CoInitialize/CoCreateInstance?
Задолбаешься.
15 сен 17, 12:43    [20798523]     Ответить | Цитировать Сообщить модератору
 Re: (COM) Разная интерпретация одного и того же метода в С++ и Vb.Net/C#(Interop)  [new]
Изопропил
Member

Откуда:
Сообщений: 30643
Дмитрий77,

Preserve Signature смотри
15 сен 17, 12:49    [20798543]     Ответить | Цитировать Сообщить модератору
 Re: (COM) Разная интерпретация одного и того же метода в С++ и Vb.Net/C#(Interop)  [new]
hVostt
Member

Откуда:
Сообщений: 11763
Изопропил
Дмитрий77,

https://msdn.microsoft.com/en-us/library/ek1fb3c6(v=vs.90).aspx


О, прикольно :)
15 сен 17, 12:58    [20798569]     Ответить | Цитировать Сообщить модератору
 Re: (COM) Разная интерпретация одного и того же метода в С++ и Vb.Net/C#(Interop)  [new]
Дмитрий77
Member

Откуда:
Сообщений: 4097
Изопропил
Дмитрий77,

Preserve Signature смотри


LONG *plErrorBodyFile

, [out] int32& plErrorBodyFile

сойдет?

попробуем-с...
15 сен 17, 13:03    [20798593]     Ответить | Цитировать Сообщить модератору
 Re: (COM) Разная интерпретация одного и того же метода в С++ и Vb.Net/C#(Interop)  [new]
Дмитрий77
Member

Откуда:
Сообщений: 4097
Изопропил,
все получилось, круто.
Function ConnectedSubmit2(pFaxServer As FAXCOMEXLib.IFaxServer, ByRef pvFaxOutgoingJobIDs As Object, ByRef plErrorBodyFile As Integer) As Integer
     является членом: FAXCOMEXLib.IFaxDocument2


  Private Sub ButtonSendFax_Click(sender As Object, e As EventArgs) Handles ButtonSendFax.Click
    Dim objFaxServer As New FAXCOMEXLib.FaxServer
    Dim objFaxDocument As New FAXCOMEXLib.FaxDocument

    Try
      objFaxServer.Connect("")
      With objFaxDocument
        Dim bodies(2) As String
        bodies(0) = "C:\111\test_txt.txt"
        bodies(1) = "C:\111\win8.tif"
        bodies(2) = "C:\111\greet1.wav"
        .Bodies = bodies
        .Recipients.Add("500")
        .Sender.LoadDefaultSender()

        'send
        Dim strJobIds As Object = Nothing
        Dim dwRes As Integer
        Dim iErrorIndex As Integer
        dwRes = .ConnectedSubmit2(objFaxServer, strJobIds, iErrorIndex)
        Debug.Print("iErrorIndex=" & CStr(iErrorIndex))
        Debug.Print("ConnectedSubmit2 Error " & RaiseAPIErrorByNumber(dwRes))
        Try
          Dim strArrJobIds As String() = strJobIds
          Debug.Print("JobId=" & strArrJobIds(0))
        Catch
        End Try
      End With
    Catch ex As Exception
      Debug.Print(ex.Message)
    End Try

    Try : objFaxServer.Disconnect() : Catch : End Try
  End Sub


Возвращает:
iErrorIndex=2
ConnectedSubmit2 Error -2147023741 (Указанному файлу не сопоставлено ни одно приложение для выполнения данной операции)

(совсем другое дело - вместо тупого исключения "Operation failed")

Спасибо.
15 сен 17, 13:34    [20798701]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / WinForms, .Net Framework Ответить