Работа с HTML и VBScript. *.ICO в HTML??? Help me!!

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Dr. Implex
Новичок
Новичок
 
Сообщения: 44
Зарегистрирован: 25.11.2002 (Пн) 12:05
Откуда: Russia

Работа с HTML и VBScript. *.ICO в HTML??? Help me!!

Сообщение Dr. Implex » 07.04.2003 (Пн) 14:20

Народ!!
Решил заняться изготовлением Active Desktop. Пока все нормально, использую VBS. Единственная проблема - не могу найти как вставить *.ICO в HTML!! Если использовать тег IMG, то вместо картинки отображается пустой черный квадратик. Не могет быть чтоб *.ICO в HTML не вставлялись!! Есть правда выход - конвертировать *.ICO в *.JPG... А если их штук 50???
Разберусь с этой заморочкой - напишу на VB прогу, которая сама будет HTML и VBS генирировать для ActiveDesktop, по вкусу юзера...
А пока... HELP!!!

P. S. Если кто знает где найти примитивный быстрый конвертер ico2jpg(jpg2ico тоже пригодиться) бросьте линк... Ну наверняка есть какой-нить конвертер, который эту фигню через командную строку делает... Тады я его быренько могу в прогу запихнуть...
With respect, Dr. Implex

Dr. Implex
Новичок
Новичок
 
Сообщения: 44
Зарегистрирован: 25.11.2002 (Пн) 12:05
Откуда: Russia

Нашел!!!

Сообщение Dr. Implex » 07.04.2003 (Пн) 15:19

Народ!! нашел офигенный конвертер!! Он и из командной строки работает и группами конвертирует!!!
Скачать его можно здесь: http://www.batchconverter.com
А регистрация здесь: http://www.anycracks.com/?crc_id=69981

(предупреждение: когда будете качать регистрацию вам придется закрывать уйму назойливых ХХХ-сайтов и отказываться от установки разной дряни, но если выдержите до конца, то откроется страница с кнопкой Download и над этой кнопкой заголовок "Advanced Batch Converter v3.x")

Пользуйтесь на здоровье!!!
With respect, Dr. Implex

Dr. Implex
Новичок
Новичок
 
Сообщения: 44
Зарегистрирован: 25.11.2002 (Пн) 12:05
Откуда: Russia

Сообщение Dr. Implex » 08.04.2003 (Вт) 9:49

Люди!!
Извиняйте - HTML отображает ICO!! Просто я с конверторами и грабберами нахимичил и у меня какой-то странный ICO получился - размером около 2,5 Кб, а стандартные - всего 766 байт, кажется.

Вопрос: Как из VBS получить абсолютные координаты курсора? Если специальной функции нет, то как в нем вызвать API GetCursorPos, да и вообще API в целом?
With respect, Dr. Implex

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 08.04.2003 (Вт) 10:05

из VBS вызовы API запрещены, насколько я помню (в целях безопасности клиентской машины)
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

Dr. Implex
Новичок
Новичок
 
Сообщения: 44
Зарегистрирован: 25.11.2002 (Пн) 12:05
Откуда: Russia

Сообщение Dr. Implex » 09.04.2003 (Ср) 10:39

2 Cyrax
Ура!!!
Нашел как вызвать API из VBS!!!
Нужно создать ActiveX DLL на VB, сделать там класс с функциями, прописать в этих функциях вызов API,скомпилить библиотеку, зарегить ее в SYSTEM, потом создать в VBS экземпляр класса и обращаться к его функциям (а они в свою очередь из класса вызывают API!!)
With respect, Dr. Implex

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 09.04.2003 (Ср) 16:24

Dr. Implex писал(а):2 Cyrax
Ура!!!
Нашел как вызвать API из VBS!!!
Нужно создать ActiveX DLL на VB, сделать там класс с функциями, прописать в этих функциях вызов API,скомпилить библиотеку, зарегить ее в SYSTEM, потом создать в VBS экземпляр класса и обращаться к его функциям (а они в свою очередь из класса вызывают API!!)

ну это обходной путь... из самого скрипта на прямую тебе все равно не удастся вызвать АПИ. да к тому же не очень удобный в том смысле, что это получится загружаемый компонент, который надо будет где-то выкладывать в сети (это если на своем сайте использовать). для Active Desktop наверное прокатит, если IE матерится не будет. такие ActiveX'ы надо подписывать.
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 09.04.2003 (Ср) 17:45

Cyrax писал(а):
Dr. Implex писал(а):2 Cyrax
Ура!!!
Нашел как вызвать API из VBS!!!
Нужно создать ActiveX DLL на VB, сделать там класс с функциями, прописать в этих функциях вызов API,скомпилить библиотеку, зарегить ее в SYSTEM, потом создать в VBS экземпляр класса и обращаться к его функциям (а они в свою очередь из класса вызывают API!!)

ну это обходной путь... из самого скрипта на прямую тебе все равно не удастся вызвать АПИ. да к тому же не очень удобный в том смысле, что это получится загружаемый компонент, который надо будет где-то выкладывать в сети (это если на своем сайте использовать). для Active Desktop наверное прокатит, если IE матерится не будет. такие ActiveX'ы надо подписывать.


Хм... Дядьк... Прикольно конечно..., но я тож недавно такую хреначелку делал. Сделал вывод графики (от графических примитивов до рисунков с прозрачным фоном - всё через api и засунул всё это в OCX...). Хм... но не так давно забил на своё мутилово - Большинство народа зайдя на сайт отказываются регить какие то ни было OCX, что верно.

Ну, а раз ты научился вызывать API напрямую из скрипта, то мож поделишся, а то тож хочется знать - как же это делается ? :wink:

Dr. Implex
Новичок
Новичок
 
Сообщения: 44
Зарегистрирован: 25.11.2002 (Пн) 12:05
Откуда: Russia

Сообщение Dr. Implex » 10.04.2003 (Чт) 9:19

2 ALX_2002
Я ж говорю не напрямую, а создав библиотеку.
Ну для сайтов это конечно не годится, а вот для Active Desktop в самый раз. Пример создания библиотеки в VB 6.0 SP 5:
Код: Выделить всё
Option Explicit

Private Type POINTAPI
        x As Long
        y As Long
End Type

Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

Dim Coords As POINTAPI
Dim a As Long


Public Function GetXPos() As Long
Call GetCursorPos(Coords)
GetXPos = Coords.x
End Function

Public Function GetYPos() As Long
Call GetCursorPos(Coords)
GetYPos = Coords.y
End Function


При этом в свойстве класса Instansing надо выбрать 5-Multiuse, а создавать этот класс надо в проекте ActiveX DLL.

Далее засовываем в директорию проекта (где уже лежит скомпиленная библиотека) BAT такого содержания:
Код: Выделить всё
copy impdllCursor.dll %windir%\system\impdllCursor.dll
%windir%\system\regsvr32 %windir%\system\impdllCursor.dll


Теперь наша библиотека зарегистрирована вместе с классом. Пишем на VBS:
Код: Выделить всё
Option Explicit

Dim Cursor

Set Cursor=CreateObject("impdllCursor.impCursor")
MsgBox CStr(Cursor.GetXPos) + ":" + CStr(Cursor.GetYPos)

WScript.Quit

' Если код вызывается из HTML тегом Script - строка WScript.Quit вызовет ошибку, так как при вызове сценариев из HTML IE сам их интерпретирует (WScript.exe остается не у дел), IE во время интерпретации не поддерживает объект WScript и при попытке обращения к его свойствам возникает ошибка.


Что погано, так это то, что Мой Компьютер нельзя отнести ни к какой зоне безопасности, а значит и нельзя отрегулировать параметры защиты, следовательно при каждом рефреше страницы на столе (кстати и при перезагрузке компа) будет появляться запрос на выполнение ActiveX. Вообще в установках IE четыре зоны безопасности. И Мой Компьютер ни к одной из них не относится. НО! В реестре этих зон прописано 5, включая Мой Компьютер!! Поэтому достаточно объединить с реестром REG определенного содержания и мало того, что IE при загрузке страниц в пределах Мой Компьютер не будет предупреждать об ActiveX-элементах, еще и зона Мой Компьютер в настройках безопасности появится!!!

P. S. Содержание REG файла жди в следующем сообщении...
With respect, Dr. Implex

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 10.04.2003 (Чт) 16:31

Хм... OK. Буду ждать. :wink:

У меня только одно предложение по ходу возникло.

По поводу курсора я сделал не 2 функци, а 1

.1
Public Function GetXPos() As Long
Call GetCursorPos(Coords)
GetXPos = Coords.x
End Function

Public Function GetYPos() As Long
Call GetCursorPos(Coords)
GetYPos = Coords.y
End Function
[/code]

2.

Public Function GetCursorPosition(Coordinat As Variant)
Call GetCursorPos(POS)
Call ScreenToClient(UserControl.hwnd, POS)
Select Case Coordinat
Case 1
GetCursorPosition = POS.x
Case 2
GetCursorPosition = POS.y
Case Else
GetCursorPosition = "Wrong syntaksis"
End Select
End Function

Dr. Implex
Новичок
Новичок
 
Сообщения: 44
Зарегистрирован: 25.11.2002 (Пн) 12:05
Откуда: Russia

Сообщение Dr. Implex » 11.04.2003 (Пт) 10:40

2ALX_2002
Принес с собой обещанный REG. Что интересно получился он так:
Поснимал я значит все защиты с зоны Интернет в IE, открыл реестр, экспортировал раздел связанный с Зоной Интернет, а потом импортировал его же в Зону Мой Компьютер (0), убрав некоторые ненужные параметры (типа отображаемого имени и т.п.), после чего в настройках безопасности появилась зона Мой Компьютер. Попробовал на работе ту же фишку провернуть - не фига!! Принес из дома REG, запустил здесь (т.е. на работе) - все пучком - сработало!!!
Привожу текст REG'a:
Код: Выделить всё
REGEDIT4

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\0]

"CurrentLevel"=dword:00000000
"MinLevel"=dword:00011000
"RecommendedLevel"=dword:00011000
"Flags"=dword:00000001
"1001"=dword:00000000
"1004"=dword:00000000
"1200"=dword:00000000
"1201"=dword:00000000
"1400"=dword:00000000
"1402"=dword:00000000
"1405"=dword:00000000
"1406"=dword:00000000
"1407"=dword:00000000
"1601"=dword:00000000
"1604"=dword:00000000
"1605"=dword:00000000
"1606"=dword:00000000
"1607"=dword:00000000
"1800"=dword:00000000
"1802"=dword:00000000
"1803"=dword:00000000
"1804"=dword:00000000
"1805"=dword:00000001
"1A00"=dword:00000000
"1A02"=dword:00000000
"1A03"=dword:00000000
"1A04"=dword:00000000
"1C00"=hex:00,00,03,00
"1E05"=dword:00030000

Лень копировать? Скачай!!
P.S. Предупреждаю, эта фишка стопудово работает в WinME, а в других не знаю... Тестировал на IE 5.5 Rus и IE 6.0 Eng.
Вложения
LocScriptEnbl.zip
(379 байт) Скачиваний: 101
With respect, Dr. Implex

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 05.05.2003 (Пн) 21:12

2 Dr. Implex: Ух... Давно я сюда не заходил.... Хай..... Посморел твою вещицу... Ща буду разбираться... Я уж и забыл о чём речь была... :)


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 68

    TopList