Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
5 / 2 / 0
Регистрация: 18.07.2012
Сообщений: 54

HINTERNET hConnect - динамически заполнять домен

18.07.2012, 15:23. Показов 2091. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, форумчане!

Как при таком подключении использовать не литерал в имени домена, а какую-нибудь переменную?
Когда пишу вместо TEXT("www.cyberforum.ru") вот такое TEXT(index) - компилятор ругается и выдает ошибку - 'Lindex' : undeclared identifier. index - переменная типа char, в которой содержится - www.cyberforum.ru.

C++
1
2
3
4
5
6
7
8
9
HINTERNET hConnect = 
            ::InternetConnect(
                hInternet,
TEXT("www.cyberforum.ru"),
                INTERNET_DEFAULT_HTTP_PORT,
                NULL,NULL,
                INTERNET_SERVICE_HTTP,
                0,
                1u);

А я хочу чтобы вот так было:

C++
1
2
3
4
5
6
7
8
9
     HINTERNET hConnect = 
            ::InternetConnect(
                hInternet, 
TEXT(index),
                INTERNET_DEFAULT_HTTP_PORT,
                NULL,NULL,
                INTERNET_SERVICE_HTTP,
                0,
                1u);
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.07.2012, 15:23
Ответы с готовыми решениями:

Динамически заполнять форму
Здравствуйте. Пишу прогрумму, галлерею. Получается пока вот так: Но всё не так хорошо, как хотелось бы. Изображения заполняют форму...

TreeView - динамически заполнять из DataTable...
Доброго дня, для нахождения нужной квартиры хочу использовать контрол "TreeView", т.е. сначала данный контрол надо будет...

Как динамически заполнять метаданные?
собственно собж, как в коде прописывать keywords и description например в загрузке страницы?

10
Модератор
 Аватар для vxg
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
18.07.2012, 15:46
TEXT - это судя по всему макрос для автоматического превращения неюникодовских строковых констант в юникодовские. зачем вам он нужен? уберите его.
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
18.07.2012, 15:46
декларацию функции InternetConnect() посмотри, и все встанет на свои места.
TEXT() - это макрос.
0
5 / 2 / 0
Регистрация: 18.07.2012
Сообщений: 54
18.07.2012, 16:09  [ТС]
HINTERNET InternetConnect(
HINTERNET hInternet,
LPCTSTR lpszServerName,
INTERNET_PORT nServerPort,
LPCTSTR lpszUsername,
LPCTSTR lpszPassword,
DWORD dwService,
DWORD dwFlags,
DWORD_PTR dwContext
);
hInternet Дескриптор, полученный вызовом предыдущей функции.
lpszServerName Задаёт имя сервера. Это может быть обычное имя, например www.rsdn.ru, или адрес IP.
nServerPort Номер TCP/IP порта к которому мы собираемся подсоединиться. Мы будем использовать значене INTERNET_DEFAULT_HTTP_PORT для обычных соединений, либо INTERNET_DEFAULT_HTTPS_PORT для SSL соединений.
dwService Тип сервиса - FTP, HTTP или Gopher. Мы будем использовать INTERNET_SERVICE_HTTP.

Спасибо, я это прочла и у мя все работает при статическом домене! вопрос в том как сделать его переменной!

Добавлено через 13 минут
добавила переменную какокого страшного типа, как я поняла - указателя.

LPCTSTR content = L"www.cyberforum.ru";

так работает. А как можно переменную content изменить? например приравнять чаровскому значению?
0
Модератор
 Аватар для vxg
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
19.07.2012, 09:14
объявляем и присваиваем
C++
1
std::wstring content = L"aaa";
передаем в функцию
C++
1
..., content.c_str(), ...
Добавлено через 50 секунд
... ну или используем встроенные юникод строки если разрабатывается в XE
0
5 / 2 / 0
Регистрация: 18.07.2012
Сообщений: 54
19.07.2012, 14:08  [ТС]
Цитата Сообщение от vxg Посмотреть сообщение
объявляем и присваиваем
C++
1
std::wstring content = L"aaa";
передаем в функцию
C++
1
..., content.c_str(), ...
Добавлено через 50 секунд
... ну или используем встроенные юникод строки если разрабатывается в XE
А если с клавиатуры вводить адрес? как его можно запихнуть
C++
1
std::wstring content = L ВОТ_СЮДА;
и чтобы работало...
0
Модератор
 Аватар для vxg
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
19.07.2012, 16:17
если вы вводите адрес в консоли, то
C++
1
std::getline(std::wcin, content);
если нет, то поясните откуда его берете ибо вариантов 1 млн
0
5 / 2 / 0
Регистрация: 18.07.2012
Сообщений: 54
20.07.2012, 10:38  [ТС]
Цитата Сообщение от vxg Посмотреть сообщение
если вы вводите адрес в консоли, то
C++
1
std::getline(std::wcin, content);
если нет, то поясните откуда его берете ибо вариантов 1 млн
Если говорить подробнее, то я создаю прогу которая должна парсить один сайт и все бы хорошо. я нахожу ссылки на странице и должна перейти на них автоматически(по очереди). адрес корневой страницы не меняется. Допустим он такой: "www.cyberforum.ru" .Далее я должна переходить по ссылкам. Например на эту тему: HINTERNET hConnect - динамически заполнять домен

Ссылки, которые находит программа записываются в char переменную. Хочется, чтобы эта переменная шла в продолжение ссылки и прогружалась страница.

Проблема в том, что я не знаю как вместо TEXT("/cpp-networks/thread625473.html") поставить переменную, которая меняется каждый раз...и какого типа она должна быть, как присваивать значения!

Работаю в Visual Studio 2010. Консольная программа.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if (hInternet != NULL) {
        HINTERNET hConnect = 
            ::InternetConnect(
                hInternet, TEXT("www.cyberforum.ru")
                INTERNET_DEFAULT_HTTP_PORT,
                NULL,NULL,
                INTERNET_SERVICE_HTTP,
                0,
                1u);
        if (hConnect != NULL) {
            HINTERNET hRequest = 
                ::HttpOpenRequest(
                    hConnect,
                    TEXT("GET"),
                    TEXT("/cpp-networks/thread625473.html"),
                    NULL,
                    NULL,
                    0,
                    INTERNET_FLAG_KEEP_CONNECTION,
                    1);
Добавлено через 17 часов 17 минут
Кажись проблема решена. Нашла готовое решение:

WCHAR str3[256];
char* data="?id=5";
MultiByteToWideChar( 0,0, data,-1, str3, strlen(data));
LPCWSTR cstr4=str3;
Спасибо!
0
Модератор
 Аватар для vxg
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
20.07.2012, 12:57
не исключено что вы могли бы использовать HttpOpenRequestA без преобразования в юникод
0
5 / 2 / 0
Регистрация: 18.07.2012
Сообщений: 54
20.07.2012, 13:03  [ТС]
Цитата Сообщение от vxg Посмотреть сообщение
не исключено что вы могли бы использовать HttpOpenRequestA без преобразования в юникод
Каким образом?
0
Модератор
 Аватар для vxg
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
20.07.2012, 16:11
потому что эта функция примет C-строку
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
INTERNETAPI_(HINTERNET) HttpOpenRequestA(
    IN HINTERNET hConnect,
    IN LPCSTR lpszVerb,
    IN LPCSTR lpszObjectName,
    IN LPCSTR lpszVersion,
    IN LPCSTR lpszReferrer OPTIONAL,
    IN LPCSTR FAR * lplpszAcceptTypes OPTIONAL,
    IN DWORD dwFlags,
    IN DWORD_PTR dwContext
    );
INTERNETAPI_(HINTERNET) HttpOpenRequestW(
    IN HINTERNET hConnect,
    IN LPCWSTR lpszVerb,
    IN LPCWSTR lpszObjectName,
    IN LPCWSTR lpszVersion,
    IN LPCWSTR lpszReferrer OPTIONAL,
    IN LPCWSTR FAR * lplpszAcceptTypes OPTIONAL,
    IN DWORD dwFlags,
    IN DWORD_PTR dwContext
    );
#ifdef UNICODE
#define HttpOpenRequest  HttpOpenRequestW
#else
#define HttpOpenRequest  HttpOpenRequestA
#endif // !UNICODE
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.07.2012, 16:11
Помогаю со студенческими работами здесь

Как динамически заполнять массив через ТекстБокс
Имеется массив, необходимо сделать так чтобы каждый элемент массива принимал значение через textBox Random r = new Random(); ...

Как динамически заполнять ListView из другой activity?
Нужна помощь! Как динамически заполнять ListView из другой активности? (Например, есть два activity: один имеет поле ввода текста и кнопку,...

Слеш и hInternet
Вообщем есть такой код int main(int argc, char* argv) { setlocale(LC_CTYPE, ""); //русский текст ...

HInternet, wininet и windows 8.1
есть такой код: uses .... ,wininet,SevenZipVCL,ShellAPI; ...... var hSession, hURL: HInternet; ....... AssignFile...

Hinternet не видит переменную
hinternet не видит переменную фаил txt domain1.ru domain2.ru domain3.ru беру txt и помещаю в vector<string>


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru