IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> 'System::String ^' to 'LPWSTR', VC++
сообщение
Сообщение #1


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


CreateProcess( NULL, this->checkedListBox1->Items[0]->ToString(), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)
error C2664: 'CreateProcessW' : cannot convert parameter 2 from 'System::String ^' to 'LPWSTR'
и что с ним делать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Также CreateProcess почему-то отказывается работать с Unicode.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  627  +


Цитата
и что с ним делать?
PtrToStringChars, чтобы сборщик мусора не прикасался к содержимому строки, и быстро копировать в буфер из wchar_t. Например, через wcscpy или wcscpy_s.

Цитата
Также CreateProcess почему-то отказывается работать с Unicode
Сам проект юникодный? CreateProcessW тоже отказывается?

P.S. Непонятно, зачем столько мучений вместо того, чтобы работать в C#
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


STARTUPINFO si;
static PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
CreateProcessW( NULL, TEXT("D:\\Project1.exe"), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi )

при Project->Properties->Character Set->Use Unicode Character Set выдает такую штуку:
Цитата
An unhandled exception of type 'System.AccessViolationException' occurred in PI.exe
Additional information: Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена.
Думал, что возможно от "static", но во-первых, оно при Not Set работает, а во-вторых, выдает то же самое.

System::String *s = new String(this->checkedListBox1->Items[0]->ToString());
const wchar_t __pin *s = PtrToStringChars(s);
CreateProcess( NULL, s, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi )
Как-то так?
Пишу в VS2005 и такую гадость пишет DragDrop файла

Сообщение отредактировано: sheka -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


Попробуй вот это
Но это больше костыль,чем нормальное решение)))Но мне помогло пару раз.

Сообщение отредактировано: Krjuger -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  627  +


Цитата(sheka @ 9.08.2011 12:46) *
Как-то так?
Лучше - вот так:

System::String ^s = gcnew System::String(this->checkedListBox1->Items[0]->ToString());
array<char> ^chArr = s->ToCharArray();
LPWSTR lpArr = new WCHAR[chArray->Length];
System::Runtime::InteropServices::Copy(chArr, 0, IntPtr(lpArr), chArr->Length);
// дальше можно использовать lpArr

// в конце не забываем удалить
delete [] lpArr;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 19.04.2024 9:32
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name