Категории каталога

Форма входа

Поиск

Друзья сайта

Статистика


Онлайн всего: 1
Гостей: 1
Пользователей: 0

Наш опрос

Оцените мой сайт
Всего ответов: 58
Главная » Статьи » Кодинг » Из старого

Детонатор ака Свободу макросам часть 2

Стилистика и орфография сохранены, ценность материала при этом не пострадала.


Детонатор ака Свободу макросам часть 2

Багиров Заур aka BiZet
bizetik@lycos.com
2002 Baku Azerbaijan

Intro:

Салам всем любителям покопаться в личной жизни многострадальных юзеров. Сегодня, сейчас я начинаю очередной рассказ из жизни макросов. В данной статье , которая как и все предыдущие является ознакомительной и несет чисто информативный характер ,я постараюсь рассказать о технологии запуска файлов офисных приложений с помощью сторонних программ. Или если быть конкретнее мы с вами постараемся написать небольшую программку - загрузчик на VB.Еще раз повторяюсь, что не несу никакой ответственности за все те последствия, которые могут произойти с людьми или с техникой, после прочтения и претворения в жизнь данного опуса. Итак ехаем :

Loading:

Для наших сегодняшних экспериментов нам понадобятся: руки прямые - 2 шт., голова на плечах 1 шт. (но лучше 2) .В ваших письмах вы часто задаете вопрос - каким образом загрузить с помощью макросов стороннее приложение. Делается это следующим образом, предположим у вас вдруг резко возникло желание запустить с помощью обыкновенного офисного файла нужное вам приложение. Например , виндозный Калькулятор или на худой конец Нотпад. Для осуществления этой вашей мечты нужно всего лишь размять пальцы и набрать следующее:

Sub Loader()
Dim ExeFileName as Variant
ExeFileName=Shell ("c:\WINDOWS\NOTEPAD.EXE") 'запускаем НОТПАД
End Sub

Как видите ничего сложного в этом нет. Используется функция Shell ,которая имеет следующий синтаксис :

Shell(pathname[,windowstyle])

Единственный необходимый параметр у этой функции - pathname это полный путь к исполняемому файлу, второй параметр взят в квадратные скобки это говорит о том, что данный параметр не обязательный. Он может принимать значения которые приведены в таблице :
КонстантаЦифровой эквивалентОписание
vbHide0Окно запускаемого приложения невидимо и фокус передается в это невидимое окно (запущенное приложение можно увидеть по CTRL+ALT+DELETE).Но такой финт невозможен на Макплатформах.
vbNormalFocus1Окно запускаемого приложения видимо на дисплее и принимает свой оригинальный размер и позицию, фокус также передается запущенному приложению.
vbMinimizedFocus2Окно запускаемого приложения сворачивается в кнопку на Таскбаре фокус также приходится на нее.
vbMaximizedFocus3Окно запускаемого приложения максимизируется с фокусировкой.
vbNormalNoFocus4Окно запускаемого приложения принимает свой оригинальный размер и позицию фокус передается активному в данный момент приложению.
vbMinimizedNoFocus6Окно запускаемого приложения сворачивается в кнопку на Таскбаре фокус передается активному в данный момент приложению.

По-моему все предельно ясно. С этим вроде разобрались .Теперь приступим к основной части нашего с вами сегодняшнего задания :

Dim 2 as variant:

Начнем-с. Общеизвестно, что если есть бомба, то должен быть и детонатор. Т.Е.у вас есть макрокод (неважно какого рода), но при его запуске предупреждение о безопасности сводит все ваши старания на нет. Значит вам нужен детонатор чтобы эту бомбу (макрос) завести .Как я и обещал сейчас мы с вами попробуем написать программу-детонатор (загрузчик) на VB с помощью которой попытаемся запустить офисный файл .

Открываем VB (любой версии) у меня на компе 6 установлен в следующем диалоговом окне (рис.1) выбираем Standard EXE ,дальше из проекта удаляем все формы (сегодня нам не до них) хотя нет одну форму все-таки оставьте и добавьте туда же стандартный модуль. С этим я надеюсь у вас никаких проблем не должно возникнуть. Форму пока оставьте в покое ее займемся чуть позже. Открывайте свой модуль и пишите ( Листинг # 2). Код закомментирован, так что проблем быть не должно.


Рисунок 1 - Все стандартное просто.
Option Explicit
Private Excel As Object 'объявляем переменную Excel как объект
Sub Main()
On Error GoTo ExitSub: 'обработка исключительных ситуаций
'(иногда они происходят)
Set Excel = CreateObject("Excel.Application") 'объявление объекта
Excel.Visible = True 'если поставить False,то Ексель стартует в невидимом режиме
Excel.Workbooks.Open FileName:= _
App.Path & "\ИмяФайла.xls"
'открываем файл с нашим макросом App.Path -указывает на, то
'что офисный файл должен находиться в той же директории что и
'детонатор. В противном случае вам придется писать функцию
'поиска данного файла, а это очень муторно :-)

Excel.Run "ИмяФайла.xls!Loader" 'запускаем наш макрос указав явно его имя
Excel.Quit 'закрываем Ексель - он уже выполнил поставленную задачу
ExitSub: 'сюда можете(если быть конкретнее нужно)вставить процедуру обработки ошибки
End Sub

Откомпилируем проект и вот он наш Детонатор готов. Весит новорожденный всего лишь 20 кб (20480 байт) - неплохо для начала. Некоторые особливо догадливые скажут что к этим 20 кб надо прибавить 1,3 мб , которые весит msvbvm60.dll без него ни одно приложение написанное на VB не заработает. И будут правы, хотя самое главное в данной ситуации это то что мы добились главного запустили макрос без каких либо предупреждений системы безопасности, а остальное всего лишь издержки производства. Теперь можно и поэкспериментировать с детонатором, проверить его в боевых условиях. Открываем офисное приложение, устанавливаем уровень безопасности в Высокая и пытаемся загрузить ВашФайл.xls ,мы видим до боли знакомое предупреждение системы безопасности. Дальше со словами - подожди, подожди у меня, сейчас я тебе.... закрываем офисное приложение и запускаем наш Детонатор. И вот оно свершилось Микрософт опять лажанулась - макрос, то запустился и система безопасности промолчала...

Post FUCKtum ( ):

Ладно замаялся я, что-то. Да, насчет той формы что я оставил в проекте, подумайте на сон грядущий что там сварганить чтобы все выглядело чин - чинарем (чтобы ушастый не испугался и повелся на ваш блеф ). Немаленькие вроде, разберетесь...

На этом разрешите откланяться. В следующий раз разберемся с Дельфой и еще кое с чем. Исходники прилагаются. Что не ясно пишите на мыло, постараюсь ответить. Все всем здравия желаю!!! До новых надеюсь встреч.

To be continued...

Категория: Из старого | Добавил: wsnow2 (02.10.2008)
Просмотров: 676 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Имя *:
Email *:
Код *: