Уважаемы господа! Вопрос такой. Есть ли возможность создавая оффлайновую версию сайта, запаковать его в базу данных (или в что-нибуль похожее с помощью С++), чтобы не была видна структура сайта. Спасибо. Толик
Добрый день, Анатолий! Возможность есть. Пишите. :) Ответ отправлен: 28.05.2004, 12:42 Отправитель: vitya Отвечает bocha
Приветствую Вас, Анатолий! А чем не нравится HTML Help WorkShop(MSDN диск 1)? Компилируешь в один *.chm -файл и , что характерно, никакой структуры. Ответ отправлен: 28.05.2004, 15:49 Отправитель: bocha
Вопрос № 1650
ПривеТ!! К вопросу 5342: ф-кция ExitProcess находится в таблице импорта(kernel32.dll). Мне надо узнать ее адрес чтобы вызвать при помощи Call: Call <адрес>. Так какой же адрес у ExitProces?
Приветствую Вас, qh! 1. линкуй с kernel32.lib 2. LoadLibrary - GetProcAddress к вашим услугам. Ответ отправлен: 28.05.2004, 12:42 Отправитель: vitya Отвечает Sedric
Здравствуйте, qh! В kernel32.dll эта функция находится не в импорте, а в экспорте.Вызывать ее так не стоит.Лучше доверится линкеру.Он соберет все как надо.Просто прикрути нужные хидеры. Можно сделать так: invoke LoadLibrary,addr name ;это название длл mov hInstance,eax invoke GetProcAddress,hInstance,addr func_name ;здесь будет ExitProcess mov pT,eax ;это указатель на функцию call pT
Ответ отправлен: 28.05.2004, 12:47 Отправитель: Sedric Отвечает CrackLab
Доброе время суток, qh! Для получения адреса функции воспользуйтесь функцией GetProcAddress Ответ отправлен: 27.05.2004, 23:23 Отправитель: CrackLab Отвечает Fess
Приветствую Вас, qh! Слухай, ты в ту рассылку попал? Здесь отродясь не было вопроса № 5342! Я сейчас на 1650 отвечаю. Может ты на Асме пишешь? Но даже тогда тебе не обязательно знать адрес функции, просто помещаешь параметры в стек в обратном направлении (например, сначала третий, затем второй, потом первый), это если у тебя stdcall стоит. Затем стек выравниваешь, а уж потом калом вызываешь. :-) Либы если правильно подключил, всё прокатит. А можно геморроем не страдать, и вызывать через invoke. Ну, а если приспичило адрес узнать, есть GetProcAddress ВинАпишный.
Приложение: Ответ отправлен: 29.05.2004, 16:50 Отправитель: Fess
Вопрос № 1651
Здравствуйте,скажите пожалуйста как понимать(float) в следующем выражении percents[i] = ((float) scores[i]) / MAX; C Ув. Роберт
Добрый день, Robert! Если scores и MAX объявлены как целые, а нужно получить вещественный результат, то производят приведение типов.При делении целых происходит отсечение дробной части. Кстати этот ответ можнобыло получить, открыв ЛЮБУЮ книжку, где описывается синтаксис языка, клчевые слова "типы", "приведение". Ответ отправлен: 28.05.2004, 15:14 Отправитель: bocha Отвечает vitya
Добрый день, Robert! Max i scores[i] являются, видимо, целыми числами. Для того, чтобы получить точный результат - надо привести хотя бы одно из чисел к типу с плавающей запятой. Ответ отправлен: 28.05.2004, 12:41 Отправитель: vitya Отвечает Sedric
Приветствую Вас, Robert! Понимай как есть!%)))) Это приведение типа.scores[i] приводится к типу float. Правда, корявое приведение.Я бы использовал статик_каст Ответ отправлен: 28.05.2004, 12:47 Отправитель: Sedric Отвечает CrackLab
Доброе время суток, Robert! Очевидно, что percents - переменная типа float, а scores - переменная типа несовместимого с float, тогда компилятор не позволит писать percents[i] = scores[i] / MAX; Для этого тип scores переводится в этом месте во float, и компилятор не выдаст ошибки. Т.е. указание типа в скобках перед переменной указывает компилятору к какому типу необходимо привести данную переменную. Ответ отправлен: 28.05.2004, 00:48 Отправитель: CrackLab Отвечает Fess
Добрый день, Robert! Это прямое приведение типа. Понимать это надо так: scores[i] теперь имеет тип float. Приемлемо для С, редко для С++. Очень небезопасно. В С++ лучше использовать static_cast(можно использовать везде, где использовал Сишный вариант), dynamic_cast (для приведения типов в иерархии классов, например, привести указатель на базовый класс в указатель на субкласс), const_cast (для работы с идентификаторами volatile и const, установить или снять оные), reinterpret_cast (ну, это, скажем, можно использовать во всех других случаях, например, когда приведение зависит от реализации, часто единственный возможный способ корректного приведения). Думаю, что понятно.
Ответ отправлен: 29.05.2004, 16:56 Отправитель: Fess
Вопрос № 1652
ПРивет!! Как сделать чтобы программа работал в фоновым режиме?
Добрый день, qh! SowWindow(hWnd, SW_HIDE); Ответ отправлен: 28.05.2004, 16:17 Отправитель: bocha Отвечает CrackLab
Приветствую Вас, qh! Что значит в фоновом ? Вы хотите просто спрятать окно или вы хотите чтобы программа работала как сервис? Ответ отправлен: 28.05.2004, 18:58 Отправитель: CrackLab Отвечает vitya
Здравствуйте, qh! Спрячьте окно. И пусть себе работает. Ответ отправлен: 28.05.2004, 12:39 Отправитель: vitya
Вопрос № 1653
Здравстуйте эксперты, У меня такой вопрос: Кто нибудь пользуется библиотеками расширениями MFC для GUI? Такими как : - Dundas Ultimate C++ Toolbox - BCG Control Bar - CodeJock - Prof-UIS - Stingray 2000 и т.д. Если кто пользуется, то помогите найти их(вместе с исходниками). Может кто знает название диска и где он продается, или можно линку для скачивания. Заранее спасибо, Абрамовский Иван.
Доброе время суток, Абрамовский Иван! Дундас продается на сайте дундаса, а стинграй на сайте rougewave.com. Про остальные не знаю. Я не поддерживаю нелицензионнос использование компонентов. Stringray поставляется с исходниками. Ответ отправлен: 29.05.2004, 13:16 Отправитель: vitya
Вопрос № 1654
К вопросу 1652. Мне надо чтобы программа работала как сервис или вирус. ShowWindow не подходит.
Здравствуйте, qh! В своё время на старых Виндах, чтобы от Ctrl+Alt+Delete притарить, юзал RegisterServiceProcess. На ХРюше/2000 не пробовал. Вот так вот... А вирус сделать без знакомства с VX making'ом не получится. Винды нужно хорошо знать, формат PE вообще как свои пять пальцев (ну, это не самое сложное). Да я думаю тебе заражать ничего и не нужно, да и размножаться не обязательно. ИМХО что в сторону вирусов ты напрасно копаешь, лучше тогда в сторону троянов копай. Опять же ИМХО. :-)
Ответ отправлен: 31.05.2004, 11:28 Отправитель: Fess Отвечает CrackLab
Доброе время суток, qh! По поводу создания сервисов посмотрите тут: http://doc.docsearch.ru/docs.cgi?pageid=6 а также в BCB есть класс TService для этого дела. Ответ отправлен: 28.05.2004, 19:00 Отправитель: CrackLab Отвечает bocha
Доброе время суток, qh! SC_HANDLE OpenSCManager( LPCTSTR lpMachineName, LPCTSTR lpDatabaseName , DWORD dwDesiredAccess);//открывает сессию загрузки службы SC_HANDLE CreateService(SC_HANDLE hSCManager, LPCTSTR lpServiceName, LPCTSTR lpDisplayName,DWORD dwDesiredAccess, DWORD dwServiceType, DWORD dwStartType, DWORD dwErrorControl, LPCTSTR lpBinaryPathName, LPCTSTR lpLoadOrderGroup, LPDWORD lpdwTagId, LPCTSTR lpDependencies, LPCTSTR lpServiceStartName, LPCTSTR lpPassword); BOOL StartService(CS_HANDLE hService, DWORD dwNumServiceArgs, LPCTSTR* lpServiceArgVectors); BOLL DeleteService(CS_HANDLE hService); BOLL CloseServiceHandle(CS_HANDLE hCSObject);//закрывает хендлы и сессии и службы в зависимости от переданного хендла Имена вобщем-то понятны, детали и примеры копай в MSDN, SDK, DDK Ответ отправлен: 28.05.2004, 19:38 Отправитель: bocha
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.