Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
Arbit, чистый вариант на мой взгляд - вернуть BSTR, маршаллер c# память почистит Код: plaintext 1. 2. 3. 4. 5. 6. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2016, 01:31 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
Arbit, твой код у меня успешно отработал, как ни странно )) из замеченного - VARIANT - желательно всегда инициализировать(VariantInit) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2016, 11:20 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
ИзопропилArbit, твой код у меня успешно отработал, как ни странно )) из замеченного - VARIANT - желательно всегда инициализировать(VariantInit) 1. Код отработал нормально как чисто консольное приложение на С++ или как dll вызванная из С#? 2. Строка bstr_t передавалась созданная руками Код: plaintext 1. или созданная COM объектом в функции GetWmiInfo() Код: plaintext 1. Мне кажется, что _bstr_t resValue COM и что _bstr_t resValue обычный - это не одно и то же Я прочитал на одном из форумов что манипуляции со строками COM как с обычными строками не прокатывают. Это особые строки. А вот как с ними работать и не нашел пока. В гугле нашел пока только это: https://msdn.microsoft.com/en-us/library/ms235631.aspx что и попытался применить, но пока безрезультатно. ( там есть примеры для всех вариантов) Может в компиляторе моем... , У меня студия 2013 Но скорее всего это в моих руках(пока еще далеко не ровных) и в голове. :) Потому и пришел за помощью. Если у тебя все работает, скинь мне пожалуйста проект, попробую запустить у себя, может найду причину. Мне ОЧЕНЬ нужно решить эту задачу. Заранее благодарен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2016, 14:39 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
Arbit1. Код отработал нормально как чисто консольное приложение на С++ или как dll вызванная из С#? dll из c# ArbitЯ прочитал на одном из форумов что манипуляции со строками COM как с обычными строками не прокатывают. Это особые строки. читать COM строки можно как и обычные выделение памяти - имеет особенности, отдельно можно обсудить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2016, 14:59 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
ArbitЕсли у тебя все работает, скинь мне пожалуйста проект, попробую запустить у себя, может найду причину. в 2015 студии, смотри ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2016, 15:11 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
Изопропил, Спасибо большое, вечером буду изучать! Отпишусь по результатам, но чуйка подсказывает, что дело в "мозгах и руках" :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2016, 17:17 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
Изопропил, добрый вечер! Докладываю... :)) Перепробовал кучу комбинаций с кодом. Задолбался конечно изрядно. В сухом остатке - Пришлось установить Community 2015 Мой проект заработал только после конвертации в студию 2015 придется дальше писать на новой студии. Так и не нашел где собака зарыта. Но ты мне реально серьезно помог с прочисткой мозгов Спасибо огромное! Можно будет, при необходимости, еще побеспокоить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2016, 21:23 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
ArbitМожно будет, при необходимости, еще побеспокоить? можно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2016, 22:08 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
Изопропил, добрый вечер! Все равно у меня грабли ... моих мозгов не хватает, нагуглить не получилось... - Твое консольное приложение Win32 работает нормально - Мое консольное win32 созданное на моей студии 2015 тоже нормально (это копия твоего) - Мое WindowsForm win32 приложение выдает исключение на 1 шаге функции GetWmiInfo: "Failed to initialize COM library. Error code = 0x". Мои потуги: Мне необходимо получить множество параметров железа Поэтому в функции GetStringID , я вызываю функцию GetWmiInfoс повторно с разными значениями параметров. Если только один вызов то в консольных приложениях все работает, а если повторные вызовы, то вылетало исключение на 2 шаге в GetWmiInfo "Set general COM security levels", так как COM уже инициализирован при первом вызове функции Поэтому в функцию GetWmiInfo я добавил новый параметр int fl - флаг повторного вызова После добавления параметра я получил нужный мне результат. Но когда я перенес код с консольного приложения в WindowsForm Код не хочет инициализировать COM уже на самом 1 шаге DLL лежит в папке "C:\VC\Cont\Debug\Wlb.dll" твоего проекта Все проекты ссылаются на эту же dll в этой же папке Все проекты в архиве в папке VC Может подскажешь? Две недели бьюсь Понимаю что нет времени. Но если появится - посмотри пожалуйста. Очень нужно Спасибо за твою готовность помочь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2016, 19:51 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
Изопропил, Да и еще: WindowsForm я делаю на framework 3.5 так как приложение должно работать начиная с Win XP? чтобы не напрягать юзеров с установкой framework старших версий ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2016, 19:56 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
А как вложить архив? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2016, 20:02 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
Arbit, маршаллинг с тех пор не менялся, жить будет. Не забудь указать в свойствах проекта, что дотнет приложение в 32 бит режиме должно запускаться, чтоб не делать две версии c++ dll ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2016, 20:04 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
Изопропил, Вот ссылка на архив с проектами на моем облаке Загрузить на форум не получилось. так как размер больше допустимого https://cloud.mail.ru/public/JGfc/57NPRsbzd ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2016, 20:20 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
Arbit, Инициализацию COM делает рантайм дотнет. он жить без этого не может просто выбрось все CoInitializeEx, CoInitializeSecurity, CoUninitialize() коды ошибок COM анализировать полезно если код ошибки поискать в гугле - первая же ссылка описывает проблему и решение - http://stackoverflow.com/questions/5662382/why-does-com-coinitializesecurity-fail-in-my-dll ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2016, 20:22 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
Изопропил, ... я даже и не знаю как тебя благодарить... Я не мог предположить что в примере MSDN эти Co... нафиг не нужны! Про коды ошибок я конечно притупил, учту непременно! Не суди строго. Я еще только учусь. Вот решил освоить новую профессию под занавес. Хотя, какая разница что программировать... мозги или компьютер... Принцип тот же, законы тоже, просто нужно выучить соответствующий язык! :)) Две недели... А какой я опыт и сколько нового узнал! Спасибо огромное и РЕСПЕКТ!! ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2016, 01:23 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39337045&tid=2018399]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
67ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 166ms |

| 0 / 0 |
