imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 08.05.2007, 20:09     # 1
doro
Full Member
 
Аватар для doro
 
Регистрация: 30.04.2002
Сообщения: 1 419

doro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собой
Передача имени сервиса в OpenService

Как в OpenService правильно передать имя сервиса, объявленного как string или char в проекте VC++ с charset'ом unicode или multibite?
doro вне форума  
Старый 08.05.2007, 22:09     # 2
yan_kos
Junior Member
 
Аватар для yan_kos
 
Регистрация: 16.07.2005
Адрес: Украина, г. Ровно
Пол: Male
Сообщения: 140

yan_kos Известность не заставит себя ждать
Код:
SC_HANDLE OpenService(SC_HANDLE hSCManager,LPCTSTR  ServiceName,DWORD dwDesiredAccess);
LPCTSTR - это константный TCHAR который про дефайнин как просто char или w_char оно же unsigned_short... это зависит от наличия или отсутствия дефайна UNICODE...
Так что можно хранить название службы просто в TCHAR
или же при варианте что имя всегда мультибайт делаеш так:
Код:
LPWSTR wServiceName

#ifdef UNICODE
  //используеш MultiByteToWideChar для конвертации с multib. в unicode 
#endif

OpenService(hSCManager,wServiceName,dwDesiredAccess);
__________________
Та программа не глючит, которая не написана
yan_kos вне форума  
Старый 09.05.2007, 13:59     # 3
doro
Full Member
 
Аватар для doro
 
Регистрация: 30.04.2002
Сообщения: 1 419

doro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собой
Цитата:
Сообщение от yan_kos Посмотреть сообщение
LPWSTR wServiceName
А разве таким способом можно определиьт значение переменной (имя сервиса)?
И как вообще сделать код независимый от используемого набора символов?
doro вне форума  
Старый 09.05.2007, 20:32     # 4
yan_kos
Junior Member
 
Аватар для yan_kos
 
Регистрация: 16.07.2005
Адрес: Украина, г. Ровно
Пол: Male
Сообщения: 140

yan_kos Известность не заставит себя ждать
Цитата:
Сообщение от doro Посмотреть сообщение
А разве таким способом можно определиьт значение переменной (имя сервиса)?
в смысле?
Цитата:
Сообщение от doro Посмотреть сообщение
И как вообще сделать код независимый от используемого набора символов?
Ну по началу ты должен определить как ты получаеш имя сервиса от этого зависит есть ли смысл вообще его конвертить и т.п. то бишь от куда ты его береш, если он "зашыт" в программе тогда можно вообще обойтись без конвертирования так как ф-я OpenService есть как в мультибайт так и в юникоде... а если из вне тогда опешы конкретней от куда ты береш имя, и какая кодировка в программке

Если хочешь писать что бы не сильно зависить от кодировки юзай tchar.h и вместо char или w_char -> TCHAR и т.д. подробней в MSDN...
__________________
Та программа не глючит, которая не написана
yan_kos вне форума  
Старый 10.05.2007, 13:29     # 5
doro
Full Member
 
Аватар для doro
 
Регистрация: 30.04.2002
Сообщения: 1 419

doro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собой
yan_kos

Имя вводится с клавы. А с кодировкой… Хотелось бы чего-нибудь универсального.
doro вне форума  
Старый 10.05.2007, 21:20     # 6
yan_kos
Junior Member
 
Аватар для yan_kos
 
Регистрация: 16.07.2005
Адрес: Украина, г. Ровно
Пол: Male
Сообщения: 140

yan_kos Известность не заставит себя ждать
А какой фреймворк вы используете?
Если .NET MFC на счет WTL точно не помню но в первых двух классы фреймворка сами переходят на нужную кодировку в зависимости от наличия или отсутствия дефайна UNICODE а при использование MFC простой char нужно заменить на TCHAR и вместо strlen или ее юникодовского варианта юзать _tcslen остальные ф-и аналогично...
__________________
Та программа не глючит, которая не написана
yan_kos вне форума  

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 15:47.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.