|
Из Дельфи передать хэндл формы в COM библиотеку.
|
|||
---|---|---|---|
#18+
Привет. Подскажите пожалуйста, как нужно правильно описать типы, чтобы передать в COM библиотеку, написанную на C#, передать хэндл формы ? Мне нужно вызвать этот метод: http://msdn.microsoft.com/en-us/library/ms223190.aspx У него последний параметры, типа IntPtr. Для простоты использую позднее связывание COM без TLB - пока только тестовый вариант библиотеки. Delphi код: Код: pascal 1.
C# Код: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Но при вызове метода, в Delphi программе, вылетает ошибка: Код: xml 1.
'интерфейс не поддерживается' - мне не понятно. Не пойму о чем вообще сообщает ошибка. Подозреваю, что дело в маршалинге, но как правильно вызывать ? PS. Если переделать метод, передавая туда, к примеру, просто integer тип, то метод работает. Проблема явно при передаче хэндла на форму. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2014, 21:05 |
|
Из Дельфи передать хэндл формы в COM библиотеку.
|
|||
---|---|---|---|
#18+
Ростигай'интерфейс не поддерживается' - мне не понятно. Не пойму о чем вообще сообщает ошибка. Подозреваю, что дело в маршалинге, но как правильно вызывать ?Надо правильно расставить COM-атрибуты на сишарпных классах/методах. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2014, 08:15 |
|
Из Дельфи передать хэндл формы в COM библиотеку.
|
|||
---|---|---|---|
#18+
Алексей КРостигай'интерфейс не поддерживается' - мне не понятно. Не пойму о чем вообще сообщает ошибка. Подозреваю, что дело в маршалинге, но как правильно вызывать ?Надо правильно расставить COM-атрибуты на сишарпных классах/ методах . Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
Сборка помечена, как COM-доступная. Мм... Что я упустил, подскажите пожалуйста ? Как-то нужно помечать C# методы ? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2014, 12:56 |
|
Из Дельфи передать хэндл формы в COM библиотеку.
|
|||
---|---|---|---|
#18+
Ростигай, не ты первый, меняй на Int64 и будет счастье (tlb кривой получается) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2014, 14:24 |
|
Из Дельфи передать хэндл формы в COM библиотеку.
|
|||
---|---|---|---|
#18+
Изопропилменяй на Int64Зачем? Он же сам выбирает размер указателя IntPtr? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2014, 14:43 |
|
Из Дельфи передать хэндл формы в COM библиотеку.
|
|||
---|---|---|---|
#18+
Изопропил, Спасибо ) Попробую. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2014, 14:44 |
|
Из Дельфи передать хэндл формы в COM библиотеку.
|
|||
---|---|---|---|
#18+
РостигайДля простоты использую позднее связывание COM без TLB ... 'интерфейс не поддерживается' - мне не понятно.Ну может надо атрибут какой повесить, чтобы дотнетом реализовывался IDispatch? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2014, 14:45 |
|
Из Дельфи передать хэндл формы в COM библиотеку.
|
|||
---|---|---|---|
#18+
Алексей КРостигайДля простоты использую позднее связывание COM без TLB ... 'интерфейс не поддерживается' - мне не понятно.Ну может надо атрибут какой повесить, чтобы дотнетом реализовывался IDispatch?Таки надо. Подробности тут . ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2014, 14:47 |
|
Из Дельфи передать хэндл формы в COM библиотеку.
|
|||
---|---|---|---|
#18+
Алексей КЗачем? Он же сам выбирает размер указателя IntPtr? По идее должен, но не выбирает или Int64 или Variant(object) в tlb(midl) нельзя записать переменный размер ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2014, 15:14 |
|
Из Дельфи передать хэндл формы в COM библиотеку.
|
|||
---|---|---|---|
#18+
ИзопропилАлексей КЗачем? Он же сам выбирает размер указателя IntPtr? По идее должен, но не выбираетУ меня выбирает, в зависимости от разрядности процесса, в который загружается дотнетная dll. IntPtr этим и отличается от всех остальных. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2014, 15:22 |
|
Из Дельфи передать хэндл формы в COM библиотеку.
|
|||
---|---|---|---|
#18+
Изопропилв tlb(midl) нельзя записать переменный размерИли про какой размер? Я про размер указателя 32 или 64 бита в зависимости от разрядности процесса: x86 или x64. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2014, 15:24 |
|
Из Дельфи передать хэндл формы в COM библиотеку.
|
|||
---|---|---|---|
#18+
Алексей К, я об этом же нет в COM такой возможности - скомпили под x86,64,AnyCPU и сравни tlb ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2014, 15:33 |
|
Из Дельфи передать хэндл формы в COM библиотеку.
|
|||
---|---|---|---|
#18+
ИзопропилАлексей К, я об этом же нет в COM такой возможности - скомпили под x86,64,AnyCPU и сравни tlbНу COM-то в данном случае дотнетный. А дотнет знает при маршалинге размер указателя. В TLB так же указано, что параметр является указателем: void* . ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2014, 15:43 |
|
Из Дельфи передать хэндл формы в COM библиотеку.
|
|||
---|---|---|---|
#18+
Алексей КВ TLB так же указано, что параметр является указателем: void* . только что проверил - пишется LONG или int64 реальность расходится с теорией ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2014, 15:45 |
|
Из Дельфи передать хэндл формы в COM библиотеку.
|
|||
---|---|---|---|
#18+
ИзопропилАлексей КВ TLB так же указано, что параметр является указателем: void* . только что проверил - пишется LONG или int64 реальность расходится с теориейА так? Код: c# 1. 2.
зы: Может другой UnmanagedType указать, я не уверен. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2014, 15:58 |
|
Из Дельфи передать хэндл формы в COM библиотеку.
|
|||
---|---|---|---|
#18+
Алексей Кзы: Может другой UnmanagedType указать, я не уверен. ну не лезет через IDispatch IntPtr ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2014, 16:08 |
|
Из Дельфи передать хэндл формы в COM библиотеку.
|
|||
---|---|---|---|
#18+
ИзопропилАлексей Кзы: Может другой UnmanagedType указать, я не уверен. ну не лезет через IDispatch IntPtr Блеат... Ну да и Бог с ним. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2014, 16:19 |
|
Из Дельфи передать хэндл формы в COM библиотеку.
|
|||
---|---|---|---|
#18+
Так какое финальное решение правильное ? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2014, 16:29 |
|
Из Дельфи передать хэндл формы в COM библиотеку.
|
|||
---|---|---|---|
#18+
РостигайТак какое финальное решение правильное ? :)Моя ссылка + совет от Изопропила. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2014, 16:52 |
|
Из Дельфи передать хэндл формы в COM библиотеку.
|
|||
---|---|---|---|
#18+
Спасибо. Изменил на тип Int64 и заработало. Немного странновато появляется диалог. Строго в левом-верхнем углу формы. Не знаете, как можно отпозиционировать его по центру формы ? А то просто не очень красиво и удобно. Просто функция X509Certificate2UI не возвращает никаких указателей на созданный диалог, и не получает параметров, которые бы указывали где ей появляться. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2014, 14:43 |
|
|
start [/forum/topic.php?fid=20&fpage=105&tid=1402341]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
37ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
others: | 331ms |
total: | 482ms |
0 / 0 |