Z
zmey755
Я публикую различные посты на несколько сайтов и мне приходится открывать 10 окон для каждого сайта по окну и вбивать туда данные нового поста, затем следующего и тд !
Неудобство в том что данные поста приходится вбивать на все 10 сайтов поочередно !
Мне нужна удобная форма для заполнения данных поста , которая бы автоматически передавала все данные из ее полей ввода текста в поля ввода текстов этих 10 сайтов !
на одном из форумов я нашел исходный код похожей программы и хотел бы попросить вас скомпилировать его
// Upload file to server
void __fastcall TFMain::bUploadClick(TObject *Sender)
{
AnsiString slHtmlFormName = "UploadForm"; // <form name="UploadForm"...
IHTMLDocument2 *pHTMLDocument = NULL;
if(SUCCEEDED(CppWebBrowser->Document->QueryInterface(
IID_IHTMLDocument2, (LPVOID*)&pHTMLDocument)))
{
if(pHTMLDocument != NULL)
{
IHTMLElementCollection *pAll = NULL;
if(SUCCEEDED(pHTMLDocument->get_all(&pAll)) && pAll)
{
TVariant vName="userfile", vName2 = "passwd", vName0 = "MAX_FILE_SIZE";
TVariant vIndex=0;
// put into hidden field <hidden...
IDispatch *pDisp0=NULL;
if(SUCCEEDED(pAll->item(vName0, vIndex, &pDisp0)) && pDisp0)
{
IHTMLInputHiddenElement *pSize = NULL;
if(SUCCEEDED(pDisp0->QueryInterface(IID_IHTMLInputHiddenElement,
(LPVOID*)&pSize)) && pSize)
{
pSize->put_value(WideString("150000"));
pSize->Release();
}
pDisp0->Release();
}
// paste into file field <file...
IDispatch *pDisp=NULL;
if(SUCCEEDED(pAll->item(vName, vIndex, &pDisp)) && pDisp)
{
IHTMLInputFileElement* pFile = NULL;
if(SUCCEEDED(pDisp->QueryInterface(IID_IHTMLInputFileElement,
(LPVOID*)&pFile)) && pFile)
{
// Copy Full FileName To Clipboard
Clipboard()->SetTextBuf(sFile.c_str());
pFile->select();
// Paste from ClipBoard to "userfile"
CppWebBrowser->ControlInterface->ExecWB(Shdocvw_tlb::OLECMDID_PASTE,
Shdocvw_tlb::OLECMDEXECOPT_DODEFAULT, Variant("userfile"));
pFile->Release();
}
pDisp->Release();
}
// put into input element <input...
IDispatch *pDisp2=NULL;
if(SUCCEEDED(pAll->item(vName2, vIndex, &pDisp2)) && pDisp2)
{
IHTMLInputElement *pInput = NULL;
if(SUCCEEDED(pDisp2->QueryInterface(IID_IHTMLInputElement,
(LPVOID*)&pInput)) && pInput)
{
pInput->put_value(WideString("if5edU7dk4"));
pInput->Release();
}
pDisp2->Release();
}
}
pAll->Release();
}
// click SUBMIT()
IHTMLElementCollection *HTMLForms = NULL;
if(SUCCEEDED(pHTMLDocument->get_forms(&HTMLForms)) && HTMLForms)
{
// slHtmlFormName <form name="UploadForm"...>
TVariant vName3 = slHtmlFormName;
TVariant vIndex3 = 0;
IDispatch *pDisp3 = NULL;
if(SUCCEEDED(HTMLForms->item(vName3, vIndex3, &pDisp3)) && pDisp3)
{
IHTMLFormElement *HTMLForm = NULL;
if(SUCCEEDED(pDisp3->QueryInterface(IID_IHTMLFormElement,
(LPVOID*)&HTMLForm)) && HTMLForm)
{
HTMLForm->submit(); // нажимаем кнопку submit
HTMLForm->Release();
}
pDisp3->Release();
}
HTMLForms->Release();
}
pHTMLDocument->Release();
}
}
============================================================================
Для textarea нужно использовать тип IHTMLTextAreaElement
CODE
if ( SUCCEEDED ( pAll -> item ( vName1, vIndex, &pDisp1 ) ) && pDisp1 )
{
IHTMLTextAreaElement *pInput = NULL;
if ( SUCCEEDED ( pDisp1 -> QueryInterface ( IID_IHTMLTextAreaElement, ( LPVOID* )&pInput ) ) && pInput )
{
pInput -> put_value ( Data );
pInput -> Release ();
}
pDisp1 -> Release ();
}
======================================================================================
Либо очень прошу вас посоветуйте какое либо приложение для осуществления ( кросспостинга ) из одного окна на несколько ресурсов (форумов , блогов) ! С уважением новичек !
Неудобство в том что данные поста приходится вбивать на все 10 сайтов поочередно !
Мне нужна удобная форма для заполнения данных поста , которая бы автоматически передавала все данные из ее полей ввода текста в поля ввода текстов этих 10 сайтов !
на одном из форумов я нашел исходный код похожей программы и хотел бы попросить вас скомпилировать его
// Upload file to server
void __fastcall TFMain::bUploadClick(TObject *Sender)
{
AnsiString slHtmlFormName = "UploadForm"; // <form name="UploadForm"...
IHTMLDocument2 *pHTMLDocument = NULL;
if(SUCCEEDED(CppWebBrowser->Document->QueryInterface(
IID_IHTMLDocument2, (LPVOID*)&pHTMLDocument)))
{
if(pHTMLDocument != NULL)
{
IHTMLElementCollection *pAll = NULL;
if(SUCCEEDED(pHTMLDocument->get_all(&pAll)) && pAll)
{
TVariant vName="userfile", vName2 = "passwd", vName0 = "MAX_FILE_SIZE";
TVariant vIndex=0;
// put into hidden field <hidden...
IDispatch *pDisp0=NULL;
if(SUCCEEDED(pAll->item(vName0, vIndex, &pDisp0)) && pDisp0)
{
IHTMLInputHiddenElement *pSize = NULL;
if(SUCCEEDED(pDisp0->QueryInterface(IID_IHTMLInputHiddenElement,
(LPVOID*)&pSize)) && pSize)
{
pSize->put_value(WideString("150000"));
pSize->Release();
}
pDisp0->Release();
}
// paste into file field <file...
IDispatch *pDisp=NULL;
if(SUCCEEDED(pAll->item(vName, vIndex, &pDisp)) && pDisp)
{
IHTMLInputFileElement* pFile = NULL;
if(SUCCEEDED(pDisp->QueryInterface(IID_IHTMLInputFileElement,
(LPVOID*)&pFile)) && pFile)
{
// Copy Full FileName To Clipboard
Clipboard()->SetTextBuf(sFile.c_str());
pFile->select();
// Paste from ClipBoard to "userfile"
CppWebBrowser->ControlInterface->ExecWB(Shdocvw_tlb::OLECMDID_PASTE,
Shdocvw_tlb::OLECMDEXECOPT_DODEFAULT, Variant("userfile"));
pFile->Release();
}
pDisp->Release();
}
// put into input element <input...
IDispatch *pDisp2=NULL;
if(SUCCEEDED(pAll->item(vName2, vIndex, &pDisp2)) && pDisp2)
{
IHTMLInputElement *pInput = NULL;
if(SUCCEEDED(pDisp2->QueryInterface(IID_IHTMLInputElement,
(LPVOID*)&pInput)) && pInput)
{
pInput->put_value(WideString("if5edU7dk4"));
pInput->Release();
}
pDisp2->Release();
}
}
pAll->Release();
}
// click SUBMIT()
IHTMLElementCollection *HTMLForms = NULL;
if(SUCCEEDED(pHTMLDocument->get_forms(&HTMLForms)) && HTMLForms)
{
// slHtmlFormName <form name="UploadForm"...>
TVariant vName3 = slHtmlFormName;
TVariant vIndex3 = 0;
IDispatch *pDisp3 = NULL;
if(SUCCEEDED(HTMLForms->item(vName3, vIndex3, &pDisp3)) && pDisp3)
{
IHTMLFormElement *HTMLForm = NULL;
if(SUCCEEDED(pDisp3->QueryInterface(IID_IHTMLFormElement,
(LPVOID*)&HTMLForm)) && HTMLForm)
{
HTMLForm->submit(); // нажимаем кнопку submit
HTMLForm->Release();
}
pDisp3->Release();
}
HTMLForms->Release();
}
pHTMLDocument->Release();
}
}
============================================================================
Для textarea нужно использовать тип IHTMLTextAreaElement
CODE
if ( SUCCEEDED ( pAll -> item ( vName1, vIndex, &pDisp1 ) ) && pDisp1 )
{
IHTMLTextAreaElement *pInput = NULL;
if ( SUCCEEDED ( pDisp1 -> QueryInterface ( IID_IHTMLTextAreaElement, ( LPVOID* )&pInput ) ) && pInput )
{
pInput -> put_value ( Data );
pInput -> Release ();
}
pDisp1 -> Release ();
}
======================================================================================
Либо очень прошу вас посоветуйте какое либо приложение для осуществления ( кросспостинга ) из одного окна на несколько ресурсов (форумов , блогов) ! С уважением новичек !