Как программно убрать сообщение об ошибке сценария

Тема в разделе "WASM.BEGINNERS", создана пользователем assch, 22 окт 2017.

  1. assch

    assch Member

    Публикаций:
    0
    Регистрация:
    17 мар 2011
    Сообщения:
    208
    Код программы:

    Код (ASM):
    1.  
    2. .686
    3. .model flat,stdcall
    4. option casemap :none
    5. ;--------------------------------------------------------------
    6. include \masm32\include\windows.inc
    7. include \masm32\include\kernel32.inc
    8. includelib \masm32\lib\kernel32.lib
    9. include \masm32\include\user32.inc
    10. includelib \masm32\lib\user32.lib
    11. include \masm32\include\Ole32.inc
    12. includelib \masm32\lib\ole32.lib
    13. ;--------------------------------------------------------------
    14. .data?
    15. hInstance dd ?
    16. hWnd dd ?
    17. pWeb dd ?
    18. hDll dd ?
    19. AtlAxAttachControl dd ?
    20. wc WNDCLASSEXA <>
    21. ;--------------------------------------------------------------
    22. .data
    23. szClass db "MyClass",0
    24. szTitle db "Internet Explorer",0
    25. szDll   db "atl.dll",0
    26. szFun   db "AtlAxAttachControl",0
    27. ;--------------------------------------------------------------
    28. .const
    29. ;--------------------------------------------------------------
    30. ; CLSID_WebBrowser - "8856F961-340A-11D0-A96B-00C04FD705A2"
    31. ;--------------------------------------------------------------
    32. CLSID_WebBrowser dd 08856F961h
    33. dw 0340Ah
    34. dw 011D0h
    35. db 0A9h,06Bh,000h,0C0h,04Fh,0D7h,005h,0A2h
    36. ;--------------------------------------------------------------
    37. ; IID_IWebBrowser2 - "D30C1661-CDAF-11D0-8A3E-00C04FC9E26E"
    38. ;--------------------------------------------------------------
    39. IID_IWebBrowser2 dd 0D30C1661h
    40. dw 0CDAFh
    41. dw 011D0h
    42. db 08Ah,03Eh,000h,0C0h,04Fh,0C9h,0E2h,06Eh
    43. ;--------------------------------------------------------------
    44. ; ссылка в формате юникода-https://online.sberbank.ru
    45. ;--------------------------------------------------------------
    46. Url dw "h","t","t","p","s",":","/","/","o","n","l","i","n","e"
    47.     dw ".","s","b","e","r","b","a","n","k",".","r","u",0
    48. ;--------------------------------------------------------------
    49. .code
    50. start:
    51. ;--------------------------------------------------------------
    52. invoke GetModuleHandle,0
    53. mov hInstance,eax
    54. ;--------------------------------------------------------------
    55. ; создадим окно для - Internet Explorer
    56. ;--------------------------------------------------------------
    57. mov wc.cbSize,         sizeof WNDCLASSEXA
    58. mov wc.style,          0
    59. mov wc.lpfnWndProc,    offset WndProc
    60. mov wc.cbClsExtra,     0
    61. mov wc.cbWndExtra,     0
    62. push hInstance
    63. pop wc.hInstance
    64. mov wc.hbrBackground,  COLOR_BTNFACE+1
    65. mov wc.lpszMenuName,   0
    66. mov wc.lpszClassName,  offset szClass
    67. mov wc.hIcon,          0
    68. mov wc.hCursor,        0
    69. mov wc.hIconSm,        0
    70. invoke RegisterClassEx,addr wc
    71. ;--------------------------------------------------------------
    72. invoke CreateWindowEx,0,addr szClass,addr szTitle,\
    73.                       WS_OVERLAPPEDWINDOW+WS_VISIBLE,\
    74.                       100,100,600,400,0,0,hInstance,0
    75. mov hWnd,eax
    76. ;--------------------------------------------------------------
    77. ; создадим указатель на интерфейс - IID_IWebBrowser2
    78. ;--------------------------------------------------------------
    79. invoke OleInitialize,0
    80. invoke CoCreateInstance,addr CLSID_WebBrowser,0,CLSCTX_ALL,\
    81.                         addr IID_IWebBrowser2,addr pWeb
    82. ;---------------------------------------------------------------
    83. ; создадим ссылку на функцию - AtlAxAttachControl из atl.dll
    84. ;---------------------------------------------------------------
    85. invoke LoadLibrary,addr szDll
    86. mov hDll,eax
    87. invoke GetProcAddress,hDll,addr szFun
    88. mov AtlAxAttachControl,eax
    89. ;---------------------------------------------------------------
    90. ; к объекту ActiveX привяжем указатель интерфейса - pWeb
    91. ; и поместим объект ActiveX в указанноое окно - hWnd
    92. ;---------------------------------------------------------------
    93. push 0
    94. push hWnd
    95. push pWeb
    96. call AtlAxAttachControl
    97. ;---------------------------------------------------------------
    98. ; интерфейсом - pWeb   (IID_IWebBrowser2)
    99. ; запустим ссылку методом - Navigate   (смещение - 44)
    100. ;---------------------------------------------------------------
    101. push 0
    102. push 0
    103. push 0
    104. push 0
    105. push offset Url
    106. mov eax,pWeb
    107. push eax
    108. mov eax,[eax]
    109. call dword ptr [eax+44]
    110. ;--------------------------------------------------------------
    111. call FunGetMessage
    112. ;--------------------------------------------------------------
    113. invoke OleUninitialize
    114. invoke FreeLibrary,hDll
    115. invoke ExitProcess,0
    116. ;==============================================================
    117. ; процедурная функция окна
    118. ;--------------------------------------------------------------
    119. WndProc proc hWin,uMsg,wParam,lParam
    120. .if uMsg == WM_DESTROY
    121. invoke PostQuitMessage,0
    122. xor eax,eax
    123. jmp @f
    124. .endif
    125. invoke DefWindowProcA,hWin,uMsg,wParam,lParam
    126. @@:
    127. ret
    128. WndProc endp
    129. ;==============================================================
    130. ; функция обработки сообщений процесса
    131. ;--------------------------------------------------------------
    132. FunGetMessage proc
    133. local msgL:MSG
    134. @@:
    135. invoke GetMessageA,addr msgL,0,0,0
    136. or eax,eax
    137. jz @f
    138. invoke TranslateMessage,addr msgL
    139. invoke DispatchMessageA,addr msgL
    140. jmp @b
    141. @@:
    142. ret
    143. FunGetMessage endp
    144. ;===============================================================
    145. end start
    146.  
    Алгоритм программы:

    Создаётся окно под - Internet Explorer
    потом создаём интерфейс - IID_IWebBrowser2
    к объекту ActiveX привязываем интерфейс
    и помещаем этот ActiveX в окно программы
    затем интерфейсом запускаем ссылку методом - Navigate

    Всё работает нормально кроме одного ньюанса
    как только в окне программы открывается ссылка
    в данном случае - онлайн-сбербанка
    через секунду появляется сообщение

    На этой странице произошла ошибка сценария

    Конечно не все страницы открываются с таким предупреждением
    а только те страницы у которых HTML разметка
    по каким то причинам не пондравилась - Internet Explorer

    Ради интереса я открыл эту ссылку
    напрямую через браузер - Internet Explorer
    но ни каких предупреждений он не показал
    видно в настройках браузера это улажено

    А вот при создании интерфейса как у меня в коде
    эта проблемка возникает

    Вопрос для тех кто в теме
    Что нужно в коде дополнительно прописать
    чтобы это предупреждение не появлялось
     

    Вложения: