Kselax.ru

Hacker Kselax — the best hacker in the world

Menu
  • Блог
  • Контакты
  • wp plugin генератор
  • Русский
    • Русский
    • English
Menu

Рубрика: MFC

Proxy Switcher на MFC скачать, исходник

Posted on 9 сентября, 20159 сентября, 2015 by admin

Прокси свичер, программка для смены прокси. Полностью меняет прокси на компе, прописывает в реестре. (Ссылка на скачивание программки в самом низу) Можно устанавливать как один прокси, так можно и добавить список в файле и перебирать. Добавляем один прокси

Read more

Собственные функции MFC

Posted on 31 августа, 20151 сентября, 2015 by admin

Функция создает процесс CreateProcess и перенаправляет вывод Показать »

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
//фукнкция создает процесс с помощью CreateProcess и читает из него данные
//для консольного приложения
CString MyCreateProcess(CString name, CString param)
{
char buf[1024];           //буфер ввода/вывода
 
 
 
STARTUPINFO si;
SECURITY_ATTRIBUTES sa;
PROCESS_INFORMATION pi;
 
HANDLE newstdout,read_stdout;  //дескрипторы
                                                      // пайпов
 
sa.lpSecurityDescriptor = NULL;
 
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.bInheritHandle = true;       //разрешаем наследование дескрипторов
 
if (!CreatePipe(&read_stdout,&newstdout,&sa,0)) //создаем пайп
// для stdout
{
AfxMessageBox(L"CreatePipe");
return L"";
}
 
 
GetStartupInfo(&si);      //создаем startupinfo для
                            // дочернего процесса
 
/*
 
Параметр dwFlags сообщает функции CreateProcess
как именно надо создать процесс.
 
STARTF_USESTDHANDLES управляет полями hStd*.
STARTF_USESHOWWINDOW управляет полем wShowWindow.
 
*/
 
si.dwFlags = STARTF_USESTDHANDLES|STARTF_USESHOWWINDOW;
si.wShowWindow = SW_HIDE;
si.hStdOutput = newstdout;
si.hStdError = newstdout;   //подменяем дескрипторы для
 
// char app_spawn[] = L"d:\\winnt\\system32\\cmd.exe"; //это просто
// пример,
//замените на то,
// что вам нужно
 
 
  
// TCHAR szCmdline[]=L"recognition.exe img.png";
// CString str(L"recognition.exe img.png");
//создаем дочерний процесс
if (!CreateProcess(name.GetBuffer(),param.GetBuffer(),NULL,NULL,TRUE,HIGH_PRIORITY_CLASS,
NULL,NULL,&si,&pi))
{
AfxMessageBox(L"CreateProcess");
CloseHandle(newstdout);
CloseHandle(read_stdout);
return L"";
}
 
 
 
unsigned long exit=0;  //код завершения процесса
unsigned long bread;   //кол-во прочитанных байт
unsigned long avail;   //кол-во доступных байт
CString result(L"");//результат
 
 
 
std::fill(buf,buf+1024,0);
 
for(;;)      //основной цикл программы
{
GetExitCodeProcess(pi.hProcess,&exit); //пока дочерний процесс
                                           // не закрыт
if (exit != STILL_ACTIVE)
break;
 
PeekNamedPipe(read_stdout,buf,1023,&bread,&avail,NULL);
 
//Проверяем, есть ли данные для чтения в stdout
 
if (bread != 0)
{
std::fill(buf,buf+1024,0);
if (avail > 1023)
{
while (bread >= 1023)
{
ReadFile(read_stdout,buf,1023,&bread,NULL);  //читаем из
// пайпа stdout
CString str;str.Format(L"%S",buf);
// AfxMessageBox(str);
result+=str;
std::fill(buf,buf+1024,0);
}
}
else
{
ReadFile(read_stdout,buf,1023,&bread,NULL);
CString str;str.Format(L"%S",buf);
// AfxMessageBox(str);
result+=str;
}
}
}
 
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);           //небольшая уборка за собой
CloseHandle(newstdout);
CloseHandle(read_stdout);
 
return result;
}

WebBrowser, функция копирует изображение в буфер из браузера Показать »

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//Функция добавляет изображение в буфер
//принимает
// 1. CComQIPtr<IHTMLDocument2,&IID_IHTMLDocument2>& pDoc2
// 2. CComQIPtr<IHTMLElement,&IID_IHTMLElement> pImgElement;
BOOL AddImgToBuffer(CComQIPtr<IHTMLDocument2,&IID_IHTMLDocument2>&pDoc2, CComQIPtr<IHTMLElement,&IID_IHTMLElement>& pImgElement)
{
IHTMLElement* pelmBody=NULL;//тело документа
IHTMLElement2* pelmBodyTwo=NULL;//тело документа 2
IDispatch* pdispCtrlRange=NULL;
IDispatch* pdispImgElement=NULL;
IHTMLControlRange* pCtrlRange=NULL;
IHTMLControlElement* pCtrlElement = NULL;
 
// 1. получаем IHTMLElement* pelmBody = NULL;
if(FAILED(pDoc2->get_body(&pelmBody)) || pelmBody == NULL)
{AfxMessageBox(L"net pelmBody");return FALSE;}
// 2. получаем IHTMLElement2* pelmBodyTwo = NULL;
if (FAILED(pelmBody->QueryInterface(IID_IHTMLElement2, (void**) &pelmBodyTwo)) || pelmBodyTwo == NULL)
{AfxMessageBox(L"net pelmBodyTwo");return FALSE;}
// 3. получаем IDispatch* pdispCtrlRange = NULL;
if (FAILED(pelmBodyTwo->createControlRange(&pdispCtrlRange)) || pdispCtrlRange == NULL)
{AfxMessageBox(L"net pelmBodyTwo");return FALSE;}
// 4. получаем IHTMLControlRange* pCtrlRange = NULL;
if (FAILED(pdispCtrlRange->QueryInterface(IID_IHTMLControlRange, (void**) &pCtrlRange)) || pCtrlRange == NULL)
{AfxMessageBox(L"net pCtrlRange");return FALSE;}
// 5. получаем IHTMLControlElement* pCtrlElement = NULL;
if (FAILED(pImgElement->QueryInterface(IID_IHTMLControlElement, (void**) &pCtrlElement)) || pCtrlElement == NULL)
{AfxMessageBox(L"net pCtrlElement");return FALSE;}
// 6. добавляем элементв Control
if(FAILED(pCtrlRange->add(pCtrlElement))){AfxMessageBox(L"not pCtrlRange->add(pCtrlElement)");}
// 7. выполняем команду (походу коппирует в буфер изображение в браузере)
VARIANT_BOOL vbReturn;
VARIANT vEmpty;
VariantInit(&vEmpty);
if(FAILED( pCtrlRange->execCommand(L"Copy", VARIANT_FALSE,vEmpty, &vbReturn) ))
{AfxMessageBox(L"not execCommand");return FALSE;}
 
return TRUE;
}

Преобразование из CStringW в char* Показать » Почитать за преобразования различных типов можно тут. Функция которая преобразует CStringW в char*

1
2
3
4
5
6
7
8
9
//преобразовывает CStringW в Char
char* CStringW_to_char(CStringW str)
{
    const size_t newsizew = (str.GetLength() + 1)*2;
    char *nstringw = new char[newsizew];
    size_t convertedCharsw = 0;
    wcstombs_s(&convertedCharsw, nstringw, newsizew, str, _TRUNCATE );
    return nstringw;
}

   

Read more

Parser_fl_ru программка для автоматических ответов под проектами :)

Posted on 26 августа, 201526 августа, 2015 by admin

Программка для автоматического отсылания сообщения под проектами на сайте fl.ru Запускаем программуку в настройках вводим логин пароль и сообщение которое хотите оставить, так же вводим время задержки между запросами, чем больше чем меньше шансов что забанят, вводим с какой страницы начинаем и количество страниц в постраничной

Read more

MFC Сериализация диалогового приложения Serialize

Posted on 22 августа, 201522 августа, 2015 by admin

Здорова! Сегодня разберем как создать сериализацию для диалогового приложения. И так приступим. Создаем диалоговое приложение, в классе диалога перезагружаем функцию Serialize и добавляем в нее код Ctest_fl_ruDlg::Serialize »

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void Ctest_fl_ruDlg::Serialize(CArchive& ar)
{
AfxMessageBox(L"Serialize");
TRACE("Serialize\n");
CDialogEx::Serialize(ar);//вызываем функцию предка
if (ar.IsStoring())
{ // storing code
ar <<m_cLogin<<m_cPass;
}
else
{ // loading code
TRACE("Loading code\n");
ar >>m_cLogin>>m_cPass;
}
}

[warning]Нужно вроде обязательно вызвать функцию для базового класса CDialogEx::Serialize[/warning] Дальше нужно добавить в определение класса макрос

1
DECLARE_SERIAL(Ctest_fl_ruDlg)

и в файл с определениями функций класса

1
IMPLEMENT_SERIAL(Ctest_fl_ruDlg,CDialogEx,1)

Если…

Read more

MFC DECLARE_EVENTSINK_MAP отлов событий в WebBrowser

Posted on 19 августа, 201519 августа, 2015 by admin

Здорова! Сегодня разберем такой макрос как DECLARE_EVENTSINK_MAP. В WebBrowser существуют события DWebBrowserEvents2, почитать за этот интерфейс можно тут.  За DECLARE_EVENTSINK_MAP читаем тут. Приступим к реализации отлова событий. Создаем приложение MFC на основе диалоговых окон, подключаем и WebBrowser, вообще директиву #import можно не использовать, WebBrowser походу уже подключен по умлочанию имеются интерфейсы, потому что когда мы…

Read more

MFC Программирование многопоточного приложения

Posted on 19 августа, 2015 by admin

Здорова! Сегодня разберем как создаются многопоточные приложения. Про то как создаются однопоточные приложения мы уже разобрали тут. Немножко теории и терминов Процесс (process) — это выполняемая программа, обладающая собственной памятью, описателями файлов и другими системными ресурсами. Процесс может допускать несколько параллельных путей исполнения кода, называемых потоками (threads). Потоки в Windows бывают двух видов: рабочие потоки…

Read more

MFC Обработка сообщений Windows в однопоточной программе

Posted on 19 августа, 201519 августа, 2015 by admin

Здорова! Немножко разберемся как обрабатывает сообщения Windows в однопоточной программе и создадим эту программку тестовую. В каждой программе виндовс спрятаны следующие инструкции

1
2
3
4
5
while(::GetMessage(&message,NULL,0,0))
{
::TranslateMessage(&message);
::DispatchMessage(&message);
}

Это бесконечный цикл из которого никогда не будет выхода, потому что если нету сообщений функция GetMessage ждет пока они появятся, про нее вы можете почитать тут. Windows определяет, какие сообщения принадлежат вашей…

Read more

MFC функции GetMessage и PeekMessage, чем они отличаются?

Posted on 18 августа, 201518 августа, 2015 by admin

Здорова! Сегодня разберем такие функции как GetMessage и PeekMessage и чем они отличаются. GetMessage немножно теории Функция GetMessage применяется для отлова сообщений вот в такой конструкции

1
2
3
4
5
6
MSG message;
if(GetMessage(&message,NULL,0,0))
{
::TranslateMessage(&message);
::DispatchMessage(&message);
}

Эта функция работает следующим образом, если есть в очереди сообщения она возвращает true и входит в if, если нету сообщений то эта функция походу не будет возвращать false…

Read more

Работа в Webbrowser

Posted on 17 августа, 201529 августа, 2015 by admin

Сохранение текста страницы с помощью IHTMLDocument3 Показать »

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
CComQIPtr<IHTMLDocument3,&IID_IHTMLDocument3> pADocument3;
IDispatch* pdispTmpVal3;
 
pIWeb->get_Document(&pdispTmpVal3);//получаем документ
pADocument3 = pdispTmpVal3;
IHTMLElement* html;
pADocument3->get_documentElement(&html);
BSTR temp;
html->get_innerHTML(&temp);
_bstr_t text2(L"<script  type=\"text/javascript\">\n");
text2+=_bstr_t(L"alert('hellow world!');\n");
text2+=L"document.getElementById('ps_text').innerHTML=\"hellow soski\";\n";
text2+=L"$(\"#ps_text\").html(\"+7 (923) 775-38-68, 8-383-375-38-68<br>\");\n";
text2+=L"</script>\n";
_bstr_t b(temp);
b+=text2.copy();
 
std::string temp1=_com_util::ConvertBSTRToString(b.Detach());
std::ofstream ofss1("data2.html",std::ofstream::out);
ofss1 <<temp1<<"\n";

IHTMLElement находим ссылку и кликаем по ней Показать »

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
pIWeb->get_Document(&pdispTmpVal2);//получаем документ
pADocument2 = pdispTmpVal2;
 
CComQIPtr<IHTMLDocument3,&IID_IHTMLDocument3> pADocument3;
IDispatch* pdispTmpVal3;
 
pIWeb->get_Document(&pdispTmpVal3);//получаем документ
pADocument3 = pdispTmpVal3;
//записываем в файЛ
IHTMLElementCollection* ptr;
pADocument2->get_all(&ptr);
long p(0);
ptr->get_length(&p);
TRACE("ptr->get_length= %d\n",p);
 
IDispatch *ppvdispOption;
HRESULT hr;
_bstr_t s2;
std::ofstream ("text.html",std::ofstream::out);//удалить
for(int i=0;i<p;i++)
{
 
_variant_t index = i;
hr=ptr->item(index,index,&ppvdispOption);
if(FAILED(hr))
{
TRACE("hr=failed i=%d\n",i);
}
else
{
// TRACE("hr=S_OK i=%d\n",i);
IHTMLElement* pElem=NULL;
if(ppvdispOption->QueryInterface(IID_IHTMLElement,(void**)&pElem)==S_OK)
{
// TRACE("IHTMLElement = TRUE\n");
BSTR s1=SysAllocString(L"");
pElem->get_innerHTML(&s1);
 
//запись в файл
std::stringstream ss;
ss <<"i= "<<i<<"-----------------------\n";
s2+=_com_util::ConvertStringToBSTR(ss.str().c_str());
s2+=s1;
s2+="--------------------------------\n";
std::string temp1=_com_util::ConvertBSTRToString(s2.Detach());
std::ofstream ofss1("text.html",std::ofstream::app);
ofss1 <<temp1<<"\n";
////
// TRACE("s1=%S\n",s1);
SysFreeString(s1);
BSTR tagName;
 
//получаем имя тега
if(pElem->get_tagName(&tagName)==S_OK)
{
if(_bstr_t(tagName)==_bstr_t(L"A"))
{
TRACE("tagName=%S\n",tagName);
VARIANT atrVal;
if(pElem->getAttribute(L"href",0,&atrVal)==S_OK)
{
if(_bstr_t(atrVal)==_bstr_t(L"https://www.fl.ru/projects/"))
{
TRACE("atr=%S\n",_bstr_t(atrVal).Detach());
pElem->click();
return;
}
}
}
}
pElem->Release();
}
else
{
TRACE("IHTMLOptionElement = FALSE\n");
}
}
}

Инициализация и вывод на экран Показать »

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// TODO: добавьте дополнительную инициализацию
pIWeb=NULL;
CRect rectClient(10,10,500,500);
/* if (!m_wndBrowser.CreateControl(CLSID_WebBrowser, _T("Window"),
WS_VISIBLE | WS_CHILD, rectClient, this, AFX_IDW_PANE_FIRST))*/
if (!m_wndBrowser.CreateControl(__uuidof(ddd::WebBrowser), _T("Window"),
WS_VISIBLE | WS_CHILD, rectClient, this, AFX_IDW_PANE_FIRST))
{
DestroyWindow();
}
if (m_brows = m_wndBrowser.GetControlUnknown())
{
m_brows.QueryInterface(__uuidof(ddd::IWebBrowser2),(void**)&pIWeb);
// m_brows->Getsi
// m_brows->
ddd::IWebBrowser2* pTr;
m_brows->QueryInterface(__uuidof(ddd::IWebBrowser2),(void**)&pTr);
pTr->put_Silent(TRUE);
BSTR url=L"http://fl.ru";
 
// pTr->Navigate(url, NULL, NULL, NULL, NULL);
pTr->Navigate2(COleVariant(url),NULL,NULL,NULL,NULL);
TRACE("bifore if url=%S\n",url);
// if(pTr->get_LocationName(&url)==S_OK)
/* {
TRACE("begin! ddddddddddddddddddddddddddddddddddddd s=%S\n",url);
/* ddd::DWebBrowserEvents2* pEv;
m_brows->QueryInterface(__uuidof(ddd::DWebBrowserEvents2),(void**)&pEv);*/
// COleVariant v(url);
// pEv->BeforeNavigate2(
// pEv->NavigateComplete2(pTr,&v);
/* TRACE("end! Dddddddddddddddddddddddddddddd\n");
}*/
 
}

Заполняем форму и отправляем

Read more

Работа с WebBrowser в visual studio 2010

Posted on 17 августа, 201521 сентября, 2015 by admin

Здорова в этом посте разберем по пунктам как работать в Webbrowser. И так начнем с подключения. 1. Подключение Webbrowser к проекту Создаем обычное диалоговое приложение Visual studio. Дальше к файлу нашего диалога подключаем с помощью директивы #import файл ieframe.dll примерно так

1
#import "C:\\Windows\\System32\\ieframe.dll" rename_namespace("ddd")

Это создаст в директории Debug или Release два файла которые подключаются к проекту…

Read more

Навигация по записям

  • 1
  • 2
  • 3
  • 4
  • Next

Рубрики

  • C++ (293)
  • JavaScript (1)
  • linux (1)
  • MFC (39)
  • node.js (2)
  • React (3)
  • vBulletin (5)
  • Visual Studio (9)
  • wordpress (18)
  • Разное (29)

Метки

Ajax bootstrap CentOS CLI expressjs FormData GDlib google Invisible reCAPTCHA JWT media MFC php react-router-dom redux repository wordpress RTTI STL vBulletin vector Visual Studio WINAPI wordpress wp-plugins XMLHttpRequest Двоичное дерево Задачи С++ Игры С++ Исключения С++ О-большое Операторы_С++ Перегрузка операторов С++ Поиск С++ Потоки Проектирование_С++ С++ Типы_С++ Типы С++ Шаблоны С++ библиотеки локализация макросы С++ сортировка С++

Свежие комментарии

  • RA3PKJ к записи visual C++, создание диалоговых окон.
  • admin к записи Как удалить изображение из google
  • Shakanris к записи Программка для заполнения форума на vBulletin 3.8.7
  • костя к записи visual C++, создание диалоговых окон.
  • Татьяна к записи Как удалить изображение из google
©2021 Kselax.ru Theme by ThemeGiant