IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Программирование (http://www.imho.ws/forumdisplay.php?f=40)
-   -   Передача имени сервиса в OpenService (http://www.imho.ws/showthread.php?t=118984)

doro 08.05.2007 21:09

Передача имени сервиса в OpenService
 
Как в OpenService правильно передать имя сервиса, объявленного как string или char в проекте VC++ с charset'ом unicode или multibite?

yan_kos 08.05.2007 23:09

Код:

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);


doro 09.05.2007 14:59

Цитата:

Сообщение от yan_kos (Сообщение 1405299)
LPWSTR wServiceName

А разве таким способом можно определиьт значение переменной (имя сервиса)?
И как вообще сделать код независимый от используемого набора символов?

yan_kos 09.05.2007 21:32

Цитата:

Сообщение от doro (Сообщение 1405497)
А разве таким способом можно определиьт значение переменной (имя сервиса)?

в смысле?
Цитата:

Сообщение от doro (Сообщение 1405497)
И как вообще сделать код независимый от используемого набора символов?

Ну по началу ты должен определить как ты получаеш имя сервиса от этого зависит есть ли смысл вообще его конвертить и т.п. то бишь от куда ты его береш, если он "зашыт" в программе тогда можно вообще обойтись без конвертирования так как ф-я OpenService есть как в мультибайт так и в юникоде... а если из вне тогда опешы конкретней от куда ты береш имя, и какая кодировка в программке

Если хочешь писать что бы не сильно зависить от кодировки юзай tchar.h и вместо char или w_char -> TCHAR и т.д. подробней в MSDN...

doro 10.05.2007 14:29

yan_kos

Имя вводится с клавы. А с кодировкой… Хотелось бы чего-нибудь универсального.

yan_kos 10.05.2007 22:20

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


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

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