typeSendCommand SendCommand =
reinterpret_cast<typeSendCommand>(GetProcAddress(hm,«SendCommand»));
if (!SendCommand) {
printf("\«SendCommand\» not found (0x%X)\n", GetLastError());
return -1;
}
else {
BYTE* ss = SendCommand(reinterpret_cast<BYTE*>(
"<command id='connect'>"
"<login>KOKS</login><password>koks</password>"
"<host>192.168.15.15</host><port>3901</port>"
"<logsdir>.\\LOGS\\</logsdir><loglevel>0</loglevel></command>"));
std::cout<<reinterpret_cast<const char*>(ss);
FreeMemory(ss);
Sleep(10000);
ss = SendCommand(reinterpret_cast<BYTE*>("<command id='subscribe'>"
"<alltrades><secid>304</secid></alltrades>" //идентификаторы взял просто для примера
"<quotations><secid>304</secid></quotations>" //в реально кода надо ориентировать на то,
"<quotes><secid>304</secid></quotes>" //что присылвает сервер
"</command>"));
std::cout<<reinterpret_cast<const char*>(ss);
FreeMemory(ss);
Sleep(1000);
ss = SendCommand(reinterpret_cast<BYTE*>(
"<command id='disconnect'/>"));
std::cout<<reinterpret_cast<char*>(ss);
FreeMemory(ss);
}
try {
FreeLibrary(hm);
}
catch (...) {
std::cout<<«Fail in FreeLibrary»;
}
}
int err = GetLastError();
xmlfile<<"</root>";
Bitcoin: Покупатели разминаются перед штурмом ключевой горизонтали
Биткоин протестировал точку пересечения уровня поддержки 75500 и пробитой локальной линии даунтренда (проведенной через точки 1 и 2), параллельно завершив субботу восходящей сессией. Путь для...
Московская биржа: взгляд аналитиков после отчетности
Московская биржа — крупнейшая биржевая площадка России, которая проводит торги акциями, облигациями, производными инструментами, валютой, инструментами денежного рынка и товарами,...
Мы продолжаем вести модельный портфель для активного трейдера. В регулярном материале отражены текущие изменения в портфеле с пояснениями логики проводимых операций, его актуальный...
Сделки УК Первой! Полностью продали одну нефтегазовую компанию в НОЛЬ чтобы купить другие истории
Продолжаю делать серию ежемесячных постов с отслеживанием покупок/продаж профессиональными управляющими. Особенно теми, кто управляет МИЛЛИАРДАМИ рублей в акциях. Зачем? Посмотреть, как думают...
Михаил Родин, Ничего, если я опять по пунктам ?
1. Курс по облигациям. Бесплатный
stepik.org/course/145151/syllabus
2. Тоже бесплатный, от того же автора, про акции
stepik.org/course/21068...
Сергей П, да не знаю как прокомментировать, как будто вообще отчетность странно выглядит. в частности если деб. задолженность снизилась, неясно почему в отчете о движении денежных средств статья от...
⚡На SPO Аэрофлота не нашли покупателя, будут размещать в стакан ММВБ сообщили в Минфине В Минфине пояснили, доля акций в свободном обращении увеличится с 25,03 до 48,79%. Еще 1,2% составят квазиказнач...
⚡Укрепление рубля сделало экспорт зерна нерентабельным На пленарном заседании Всероссийского зернового форума в Сочи 22 мая обсуждались меры для сохранения конкурентоспособности российской продукции. ...
А давайте выкупим у застройщиков нераспроданные квартиры и подарим их бедноте! Чиновники могли бы тратить собираемые с работающих россиян налоги на выкуп у крышуемых застройщиков нераспроданных кварти...
Остерегайтесь инвестиций в фонды недвижимости Финансовая грамотность — это 99% знаний того, чего делать с деньгами не нужно. Это знание можно обрести на своем опыте, потеряв деньги. Из теории, книг и ...
«Алроса»: лучшее, конечно, впереди Курс акций «Алросы» находится в районе 26,8 рублей за штуку, спустившись таким образом до минимума, ранее фиксировавшегося в 2012 году. Подобное вряд ли можно было о...
#include <iostream>
#include <fstream>
#define TACCESS_API __declspec(dllimport)
typedef bool (WINAPI *tcallback)(BYTE* pData);
typedef BYTE* (WINAPI *typeSendCommand)(BYTE* pData);
typedef bool (WINAPI *typeFreeMemory)(BYTE* pData);
typedef bool (WINAPI *typeSetCallback)(tcallback pCallback);
std::ofstream xmlfile;
typeFreeMemory FreeMemory;
bool CALLBACK acceptor(BYTE *pData)
{
xmlfile<<pData<<std::endl;
FreeMemory(pData);
return true;
}
int main(int argc, char* argv[]) {
setlocale(LC_CTYPE, "");
std::cout<<«Statring!»<<std::endl;
xmlfile.open(«test.xml»);
xmlfile<<"<?xml version='1.0' encoding='UTF-8'?>";
xmlfile<<"<root>";
HMODULE hm = LoadLibrary(«Debug\\txmlconnector.dll»);
if (hm) {
typeSetCallback SetCallback =
reinterpret_cast<typeSetCallback>(GetProcAddress(hm, «SetCallback»));
FreeMemory =
reinterpret_cast<typeFreeMemory>(GetProcAddress(hm, «FreeMemory»));
SetCallback(acceptor);
typeSendCommand SendCommand =
reinterpret_cast<typeSendCommand>(GetProcAddress(hm,«SendCommand»));
if (!SendCommand) {
printf("\«SendCommand\» not found (0x%X)\n", GetLastError());
return -1;
}
else {
BYTE* ss = SendCommand(reinterpret_cast<BYTE*>(
"<command id='connect'>"
"<login>KOKS</login><password>koks</password>"
"<host>192.168.15.15</host><port>3901</port>"
"<logsdir>.\\LOGS\\</logsdir><loglevel>0</loglevel></command>"));
std::cout<<reinterpret_cast<const char*>(ss);
FreeMemory(ss);
Sleep(10000);
ss = SendCommand(reinterpret_cast<BYTE*>("<command id='subscribe'>"
"<alltrades><secid>304</secid></alltrades>" //идентификаторы взял просто для примера
"<quotations><secid>304</secid></quotations>" //в реально кода надо ориентировать на то,
"<quotes><secid>304</secid></quotes>" //что присылвает сервер
"</command>"));
std::cout<<reinterpret_cast<const char*>(ss);
FreeMemory(ss);
Sleep(1000);
ss = SendCommand(reinterpret_cast<BYTE*>(
"<command id='disconnect'/>"));
std::cout<<reinterpret_cast<char*>(ss);
FreeMemory(ss);
}
try {
FreeLibrary(hm);
}
catch (...) {
std::cout<<«Fail in FreeLibrary»;
}
}
int err = GetLastError();
xmlfile<<"</root>";
std::cout<<"\nEnded...\n";
char c;
std::cin>>c;
return 0;
}