Здравствуйте. Не могли бы вы прислать мне сэмпл программы под 9х, которая бы работала с UNICODE. Вы можете сказать, что такого не может быть, но я уточню вопрос. Я пишу программу, которая будет работать и под 9х, и под NT. Из-за известных различий в UNICODE, нельзя откомпилить порграмку с UNICODE так, чтобы она работала и с 9х тоже, т.к. там на определены ...W функции (ну определены только несколько, их мало). Поэтому я поступил так: #define UNICODE #include #undef FormatMessage #undef RegOpenKeyEx #undef RegSetValueEx ... #define FormatMessage FormatMessageU #define RegOpenKeyEx RegOpenKeyExU #define RegSetValueEx RegSetValueExU ... а затем эти ...U функции проверяют поддержку UNICODE, если поддержка есть, они просто передают управление, если нет, то они используют ...A аналоги функций, преобразуя
перед этим (или после, в зависимости от функции) строки в ANSI. Т.е. программа внутренне хранит строки только в ЮНИКОД. Проблема возникла пости сразу же, с функцией CreateWindowEx. Я не понимаю, что она от меня хочет %). Вроде я ей передал ANSI строки, но она возвращает NULL, и еще и GetLastError() возвращает 0. RegisterClassExA возвращает нормальное значение. Т.е. ошибки нет. В чем грабли? Если не трудно, укажите линк для разработки таких программ (ANSI-UNICODE), а еще лучше -- вышлите сэмпл.
Добрый день, Golden Vst! Вся проблема в том (посмотрите Рихтера), что под win95 юникода вроде ввобще как бы нету, под win98 только некоторые функции работают. Так что вся проблема из-за этого, пересаживайтесь на nt/2000/xp Ответ отправлен: 26.08.2002, 08:41 Отправитель: vitya
Вопрос № 183
Здарова. По поводу вопроса №169 о выключении компа в Win2000,XP. Все делается очень просто. И никакой защиты нет. Высылаю кусок кода. Взгляните на него!!! Тут винда переходит в спящий режим (если кто понимает что такое в XP спящий режим).
Добрый день, Switcher! Про твой пример скажу следующее, я использовал эту методу в одной своей программе с месяц назад. Дык вот, на 6 из 10 абсолютно с одинаковой аппаратной (а первоначально и программной) частью она работала как нужно, но на 4 не прошло напроч, причем доступ у юзеров на выключение системы был (XP), так что подитожим,- на винде ни в какой функции до конца быть увереным нельзя ;))
Ответ отправлен: 25.08.2002, 03:28 Отправитель: Yuri Gordienko
Вопрос № 184
Дарова всем! Покажите пожалуйста как открыть текстовой файл с помощью API функции CreateFile(); На примере плиз. Не надо мне прототип функции показывать. Заранее спасиба!
Ответ отправлен: 27.08.2002, 22:14 Отправитель: Pablo Отвечает vitya
Добрый день, Влад! HANDLE hFile = ::CreateFile(strTextFile, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (INVALID_HANDLE_VALUE == hFile) { MessageBox(NULL, "Error opening file!", "Error!", MB_OK | MB_ICONHAND); } //do the shit... Итак файл открывается для чтения и записи, при этом, разрешается совместное чтение файла, никого security не предусмотенно, всегда открывается существующий файл, шаблона так же не предусмотренно. После открытия производится проверка на ошибки. Усе. Ответ отправлен: 26.08.2002, 08:37 Отправитель: vitya Отвечает Yuri Gordienko
Доброе время суток, Влад! Интересно ты программы пишеш, если прототипы не интересуют ;)) Смотри, - открываем файл для чтения и записи HANDLE hFile = CreateFile("test.tmp", GENERIC_WRITE | GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if(hFile != INVALID_HANDLE_VALUE){ //открыли }
Ответ отправлен: 26.08.2002, 01:15 Отправитель: Yuri Gordienko
Форма отправки вопроса
Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook"
и "Microsoft Outlook Express". В программе The Bat!
подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте,
что в некоторых браузерах могут стоять запреты на открытие других
окон, а также "чрезмерное" кэширование данных,
при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet
Explorer 5.0+ или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.