Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Детонатор ака Свободу макросам часть 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...

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог