Пробую программно сделать вход в сбербанк-онлайн я работаю на платформе masm32 обёрнутую в мою макросную стилистику мой код: Код (ASM): @dll ole32 ;---------------------------------------- @gp Url u"https://node2.online.sberbank.ru" ;--------------------------------------- @GUID CLSID_InternetExplorer "0002DF01-0000-0000-C000-000000000046" @GUID IID_IWebBrowser2 "D30C1661-CDAF-11D0-8A3E-00C04FC9E26E" ;--------------------------------------- f OleInitialize,0 f CoCreateInstance,a CLSID_InternetExplorer,0,CLSCTX_LOCAL_SERVER,a IID_IWebBrowser2,a pInterface ;--------------------------------------- fc pInterface,164,VARIANT_TRUE ;IID_IWebBrowser2.put_Visible [164] fc pInterface,44,a Url,0,0,0,0 ;IID_IWebBrowser2.Navigate [44] ;--------------------------------------- @Exit ;--------------------------------------- @End Под капотом компилятор формирует этот код: Код (ASM): .686 .xmm .model flat,stdcall option casemap :none include \masm32\$asm\include\BASIS.inc include \masm32\$asm\include\Kernel32.inc includelib \masm32\$asm\lib\kernel32.lib include \masm32\$asm\include\User32.inc includelib \masm32\$asm\lib\user32.lib .code start: assume es:nothing,ss:nothing,fs:nothing,gs:nothing include \masm32\$asm\include\Ole32.inc includelib \masm32\$asm\lib\ole32.lib .data dd 64 Url dw "h","t","t","p","s",":","/","/","n","o","d","e","2",".","o","n","l","i","n","e" dw ".","s","b","e","r","b","a","n","k",".","r","u",0 .code .const CLSID_InternetExplorer dd 00002DF01h dw 00000h dw 00000h db 0C0h,000h,000h,000h,000h,000h,000h,046h .code .const IID_IWebBrowser2 dd 0D30C1661h dw 0CDAFh dw 011D0h db 08Ah,03Eh,000h,0C0h,04Fh,0C9h,0E2h,06Eh .code push 0 call OleInitialize .data? pInterface dword ? .code push offset pInterface push offset IID_IWebBrowser2 push CLSCTX_LOCAL_SERVER push 0 push offset CLSID_InternetExplorer call CoCreateInstance push VARIANT_TRUE mov eax,pInterface push eax mov eax,[eax] call dword ptr [eax+164] push 0 push 0 push 0 push 0 push offset Url mov eax,pInterface push eax mov eax,[eax] call dword ptr [eax+44] xor eax,eax push eax call ExitProcess end start Программа открывает страницу сбербанка-онлайн в - Internet Explorer где предлагает ввести логин и пароль Кто в теме можно ли программно ввести логин и пароль через интерфейс сам интерфейс в виде структуры: Код (ASM): IWebBrowser2 STRUCT QueryInterface DWORD ? ;[0] (This,riid,ppvObject) AddRef DWORD ? ;[4] (This) Release DWORD ? ;[8] (This) GetTypeInfoCount DWORD ? ;[12] (This,pctinfo) GetTypeInfo DWORD ? ;[16] (This,iTInfo,lcid,ppTInfo) GetIDsOfNames DWORD ? ;[20] (This,riid,rgszNames,cNames,lcid,rgDispId) Invoke DWORD ? ;[24] (This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) GoBack DWORD ? ;[28] (This) GoForward DWORD ? ;[32] (This) GoHome DWORD ? ;[36] (This) GoSearch DWORD ? ;[40] (This) Navigate DWORD ? ;[44] (This,URL,Flags,TargetFrameName,PostData,Headers) Refresh DWORD ? ;[48] (This) Refresh2 DWORD ? ;[52] (This,Level) Stop DWORD ? ;[56] (This) get_Application DWORD ? ;[60] (This,ppDisp) get_Parent DWORD ? ;[64] (This,ppDisp) get_Container DWORD ? ;[68] (This,ppDisp) get_Document DWORD ? ;[72] (This,ppDisp) get_TopLevelContainer DWORD ? ;[76] (This,pBool) get_Type DWORD ? ;[80] (This,Type) get_Left DWORD ? ;[84] (This,pl) put_Left DWORD ? ;[88] (This,Left) get_Top DWORD ? ;[92] (This,pl) put_Top DWORD ? ;[96] (This,Top) get_Width DWORD ? ;[100] (This,pl) put_Width DWORD ? ;[104] (This,Width) get_Height DWORD ? ;[108] (This,pl) put_Height DWORD ? ;[112] (This,Height) get_LocationName DWORD ? ;[116] (This,LocationName) get_LocationURL DWORD ? ;[120] (This,LocationURL) get_Busy DWORD ? ;[124] (This,pBool) Quit DWORD ? ;[128] (This) ClientToWindow DWORD ? ;[132] (This,pcx,pcy) PutProperty DWORD ? ;[136] (This,Property,vtValue) GetProperty DWORD ? ;[140] (This,Property,pvtValue) get_Name DWORD ? ;[144] (This,Name) get_HWND DWORD ? ;[148] (This,pHWND) get_FullName DWORD ? ;[152] (This,FullName) get_Path DWORD ? ;[156] (This,Path) get_Visible DWORD ? ;[160] (This,pBool) put_Visible DWORD ? ;[164] (This,Value) get_StatusBar DWORD ? ;[168] (This,pBool) put_StatusBar DWORD ? ;[172] (This,Value) get_StatusText DWORD ? ;[176] (This,StatusText) put_StatusText DWORD ? ;[180] (This,StatusText) get_ToolBar DWORD ? ;[184] (This,Value) put_ToolBar DWORD ? ;[188] (This,Value) get_MenuBar DWORD ? ;[192] (This,Value) put_MenuBar DWORD ? ;[196] (This,Value) get_FullScreen DWORD ? ;[200] (This,pbFullScreen) put_FullScreen DWORD ? ;[204] (This,bFullScreen) Navigate2 DWORD ? ;[208] (This,URL,Flags,TargetFrameName,PostData,Headers) QueryStatusWB DWORD ? ;[212] (This,cmdID,pcmdf) ExecWB DWORD ? ;[216] (This,cmdID,cmdexecopt,pvaIn,pvaOut) ShowBrowserBar DWORD ? ;[220] (This,pvaClsid,pvarShow,pvarSize) get_ReadyState DWORD ? ;[224] (This,plReadyState) get_Offline DWORD ? ;[228] (This,pbOffline) put_Offline DWORD ? ;[232] (This,bOffline) get_Silent DWORD ? ;[236] (This,pbSilent) put_Silent DWORD ? ;[240] (This,bSilent) get_RegisterAsBrowser DWORD ? ;[244] (This,pbRegister) put_RegisterAsBrowser DWORD ? ;[248] (This,bRegister) get_RegisterAsDropTarget DWORD ? ;[252] (This,pbRegister) put_RegisterAsDropTarget DWORD ? ;[256] (This,bRegister) get_TheaterMode DWORD ? ;[260] (This,pbRegister) put_TheaterMode DWORD ? ;[264] (This,bRegister) get_AddressBar DWORD ? ;[268] (This,Value) put_AddressBar DWORD ? ;[272] (This,Value) get_Resizable DWORD ? ;[276] (This,Value) put_Resizable DWORD ? ;[280] (This,Value) IWebBrowser2 ENDS
В этом примере мы открыли страницу в - Internet Explorer интересно а можно то же самое сделать только чтобы страница открылась в браузере - Chrome для этого понадобится CLSID хрома и если да то где его можно взять или подобная реализация доступна только для браузера - Internet Explorer
assch, Нет, кроме МС никто больше этой наркоманией не занимается. И если уж так хочется покодить activex на винапи, открывай в мсдн раздел COM и начинай читать. Читать придется много, а писать еще больше.
В любом браузере включаете режим разработчика Авторизируетесь, смотрите какие параметры передаются через POST запрос, какой приходит ответ Делаете в своей программе то-же самое, типо того (сократил немного): Код (Text): POST /CSAFront/login.do HTTP/1.1 Host: online.sberbank.ru Connection: keep-alive Content-Length: 8867 Pragma: no-cache Cache-Control: no-cache Origin: https://online.sberbank.ru User-Agent: Mozilla/5.0 Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Accept: */* X-Requested-With: XMLHttpRequest Referer: https://online.sberbank.ru/CSAFront/index.do Accept-Encoding: gzip, deflate, br Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4 fakeLogin=&fakePassword=&field(login)=aaaaa&field(password)=bbbbbb&deviceprint=version=3.4.0.0_2
С большой вероятностью да. Получаешь доступ к IHTMLDocument3 через get_Document получаешь нужные элементы (IHTMLElement) через getElementById, getElementsByName или getElementsByTagName. Далее через свойство outertext задаешь логин и пароль, а через метод click нажимаешь на кнопку. Тоже самое можно получить через коллекции IHTMLDocument2::forms, IHTMLDocument2::all или IHTMLDocument2::body. В общем много вариантов.
есть еще объекты под названием AccessibleObject https://msdn.microsoft.com/ru-ru/library/windows/desktop/dd317978(v=vs.85).aspx