Август 2002 → | ||||||
1
|
3
|
4
|
||||
---|---|---|---|---|---|---|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
12
|
13
|
14
|
15
|
16
|
17
|
18
|
20
|
21
|
22
|
23
|
24
|
25
|
|
26
|
27
|
28
|
29
|
31
|
За последние 60 дней ни разу не выходила
Открыта:
21-07-2002
Статистика
0 за неделю
Программирование во всем великолепии
Информационный Канал Subscribe.Ru |
Программирование во всем великолепии.
Выпуск #00000002
Содержание:
1. Вступление.2. Программирование на Assembler: Assembler для начинающих. Урок 2.
3. Программирование на Delphi: Delphi для начинающих. Урок 2.
4. JavaScript: Первые шаги. Урок 2.
5. Секреты Windows: Системный реестр.
6. Скрипты в Windows.
7. Как с нами связаться.
1. Вступление.
На всякий ветряк найдется свой Дон Кихот
Здравствуйте, дорогие подписчики. Вот мы и подготовили второй выпуск нашей рассылки. Никогда не думал, что писать статьи настолько сложно... :) Но, мы все таки подготовили очередной выпуск статей. И, как и всегда надеемся, что вам будет интересно читать то, что мы написали...
В этом выпуске мы добавили еще одну статью, т. к. рассылка ведь не только для начинающих, но и для тех, кто уже знает основы, для тех, у кого за плечами не малый опыт программирования...
Хотелось бы пожелать вам удачи, ведь опыт - это удачно найденное решение задачи, и покончить со вступлением... :)
2. Программирование на Assembler: Assembler для начинающих. Урок 2.
автор: Veei
Здравствуйте, уважаемые подписчики. На прошлом уроке мы научились создавать исполняемые файлы из наших программ. На этом уроке мы узнаем, что такое регистры.
Регистры можно рассматривать как переменные, доступные вам при написании любой программы. Регистры бывают сегментные, общего назначения, регистр флагов и указатель следующей команды.
Регистры общего назназначения (РОН): AX, DX, CX, BX, BP, SI, DI, SP, могут использоваться вами для хранения адресов и данных.
Регистр AX (Accumulator register) - аккумулятор, обычно применяется для хранения промежуточных данных.
Регистр CX (Counter register) - счетчик, применяется в командах организации цикла (например, loop).
Регистр BX (Base register) - базовый, применяется для хранения базового адреса некоторого объекта в памяти.
Регистр DX (Data register) - регистр данных, применяется как и регистр AX.
Пример:
;---< numbers.asm >-< begin >----------------------------------------- code segment assume cs:code start: mov cx, 0ah mov ah, 0eh mov bl, 0 _loop_: mov al, cl add al, 2fh int 10h loop _loop_ int 20h code ends end start ;---< numbers.asm >-< end >-------------------------------------------
Регистры SI (Source Index register) и DI (Destination Index register) используются в цепочечных командах. Т. е. si указывает на источник, а di на приемник.
Пример:
;---< strings.asm >-< begin >----------------------------------------- code segment ;Начало сегмента кода assume cs:code, ds:code, ss:code, es:code org 100h start: mov ah, 09h ;Номер функции в AH lea dx, msg3 ;В DX смещение msg3 int 21h ;Вызов прерывания 21h call OutStrings ;Вывод строк до пересылки lea si, str1 ;В SI (источник) адрес первой строки lea di, str2 ;В DI (приемник) адрес второй строки mov cx, StrLen ;В CX (счетчик) количество байт для пересылки rep movsb ;Собственно пересылка mov ah, 09h ;Вывод строки msg4 lea dx, msg4 int 21h call OutStrings ;Вывод строк после пересылки int 20h OutStrings proc mov ah, 09h ;Вывод строки msg1 lea dx, msg1 int 21h mov ah, 09h lea dx, str1 ;Вывод строки str1 int 21h mov ah, 09h ;Вывод строки msg2 lea dx, msg2 int 21h mov ah, 09h ;Вывод строки str2 lea dx, str2 int 21h ret ;Выход из процедуры OutStrings endp msg1 db "Строка str1: $" msg2 db "Строка str2: $" msg3 db "До пересылки:", 0dh, 0ah, 24h msg4 db "После пересылки:", 0dh, 0ah, 24h str1 db "Привет, всем!!!", 0dh, 0ah, 24h str2 db "Всем привет!!! ", 0dh, 0ah, 24h strlen dw 0fh ;Длина строк code ends ;Конец сегмента кода end start ;start - точка входа ;---< strings.asm >-< end >-------------------------------------------Регистр SP (Stack Pointer register) - указатель стека. Используется для хранения адреса вершины стека.
... push cs ;SP = SP-2, т. к. cs - двухбайтный pop ds ;SP = SP+2, т. к. ds - двухбайтный ...
Регистр BP (Base Pointer register) - предназначен для произвольного доступа к данным внутри стека.
Сегментные регистры: CS, DS, SS, ES, GS, FS, содержат адреса сегментов. Все сегментные регистры имеют размер два байта.
Регистр CS (Code Segment) - содержит идентификатор сегмента кода вашей программы.
Регистр DS (Data Segment) - содержит идентификатор сегмента данных.
Регистр SS (Stack Segment) - содержит идентификатор сегмента стека.
Регистры ES, FS, GS - вспомогательные регистры. ES используется в командах пересылки.
Указатель следующей команды IP (Instruction Pointer register) - содержит указатель следующей команды. Изменение значения этого регистра происходит неявно, при выполнении программы.
Регистр флагов Flags, содержит флаги. Регистр флагов может изменяться при выполнении некоторых команд. Каждому флагу соответствует какой-нибудь бит этого регистра, причем если бит равен 1, то говорят, что флаг установлен.
С регистром флагов мы познакомимся более плотно при изучении команд условного перехода.
До встречи...
3. Программирование на Delphi: Delphi для начинающих. Урок 2.
автор: Rasa
Здравствуйте, наши дорогие подписчики! На прошлом уроке мы с Вами остановились на том, что создали кнопку на форме и заставили ее при нажатии завершать программу.
Отступимся же и послушаем немного теории... В общем, Delphi по сути - это язык программирования высокого уровня Object Pascal. Не просто Паскаль, а объектно-ориентированный.
Для того, чтобы программисты могли справляться со своими собственными программами, требовалось уменьшить число элементов, с которыми им приходилось иметь дело одновременно, а для этого требовался новый подход - ООП (Объектно-Ориентированное Программирование). Каждый из объектов обладает своим собственным поведением, которые реагируют на сообщения, говорящие им, какие действия следует предпринимать. В этом и есть суть объектно-ориентированного программирования. ООП - это мощь Delphi, которая позволяет создавать программы, остающиеся жизнеспособными при неизбежных изменениях, сопровождающих жизненный цикл любой системы. "Три кита" на которых стоит ООП - это инкапсуляция, наследование и полиморфизм. Попытаюсь кратко ознакомить вас с ними.
ООП основан на классах. На следующих Класс представляет из себя единство трех сущностей - полей, методов и свойств. Так вот, объединение этих сущностей в единое целое и называется инкапсуляцией (encapsulation). Создавая свой класс в Delhpi вы во многом изолируете его от остальных частей программы, делаете его "автономным", добиваетесь его наибольшей функциональности. Например, класс TButton (кнопка) содержит (инкапсулирует в себе) все необходимое для создания кнопки, класс TMemo инкапсулирует в себе маленький текстовый редактор и т.д.
Наследование (inheritance) - один из главных механизмов языка Object Pascal. Любой класс может быть порожден от другого класса. Он автоматически наследует поля, методы, свойства своего "родителя" и может добавлять новые. Таким образом, принцип наследования обеспечивает поэтапное создание сложных объектов и разработку собственных классов.
Полиморфизм (polymorphism) - это свойство классов решать схожие по смыслу проблемы разными способами. В рамках Object Pascal поведение класса определяется "набором" входящих в него методов. Изменяя алгоритм того или иного метода в потомках класса, программист может придавать этим потомкам отсутствующие у родителя специфические свойства. Для изменения метода необходимо перекрыть его в потомке, т. е. объявить в потомке одноименный метод и реализовать в нем нужные действия. В результате в объекте-родителе и в объекте-потомке будут действовать два одноименных метода, имеющие разную алгоритмическю основу и, следовательно, придающие объектам разные свойства. Это и называется полиморфизмом объектов.
А теперь давайте попробуем это все на практике. Создайте новый проект. Delphi автоматически создала новую форму. Если вы посмотрите в Редакторе кода исходный текст, то увидите, что Delphi вставила следующие строки:
... type TForm1 = class(TForm) private { Private declarations } public { Public declarations } end; var Form1: TForm1; ...После зарезервированного слова type идет определение класса TForm1, потомка от класса TForm, т. е. TForm1 унаследовала все свойства, методы и поля от класса TForm. После зарезервированного слова var идет определение экземпляра класса TForm1. Ну хорошо, продолжим написание нашей программы. Для этого бросим на форму Кнопку и компонент Поле ввода (Edit - пятый по счету элемент на вкладке Standard Панели компонентов). Теперь текст в Редакторе кода изменился на следуюющее:
... type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; private { Private declarations } public { Public declarations } end; ...Появились две новые строчки "Button1: TButton;" и "Edit1: TEdit;" Это значит, что теперь наш класс TForm1 инкапсулирует в себе два объекта - Button1 и Edit1. Попробуем сделать так, чтобы при нажатии на кнопку в Поле ввода появился текст 'Пиво подошло к концу'. Дважды щелкнем на созданной кнопке и в обработчике события напишем "Edit1.Text := 'Пиво подошло к концу';". Text - это свойство объекта Edit1, экземпляра класса TEdit. Это свойство отвечает за содержимое поля ввода. При изменении этого поля вызывается метод объекта Edit1, который изменяет и автоматически обновляет текст в поле ввода. Что такое свойства и что такое методы? Возможно, вы даже не знаете, что такое процедуры и функции, а я уже рассказываю вам про классы. Но ничего - главное стремление научиться!
Со следующего занятия я начну уделять больше времени синтаксису и строению языка Object Pascal.
Пока!
4. JavaScript: Первые шаги. Урок 2.
автор: UniQ
Здравствуйте уважаемые читатели! На прошлом уроке мы рассмотрели, что же такое представляет из себя JavaScript. Для начала следует разобраться, каким образом заставить выполниться написанный нами скрипт. Мы уже выяснили, что для выполнения вашего скрипта нужен только браузер с поддержкой JavaScript. Теперь давайте разберем варианты расположения скрипта в HTML документе, а их может быть несколько. Код скрипта может размещаться в теговой паре <body> </body>. Давайте рассмотрим пример, поясняющий это:
<html> <body> <br> Это обычный HTML документ. <br> <script language="JavaScript"> document.write("Это JavaScript!") </script> <br> Вновь документ HTML. </body> </html>Нужно сказать, что данный скрипт не столь полезен - то же самое, и более просто, можно было бы написать на "чистом" языке HTML. Я всего лишь хотел продемонстрировать Вам один из способов встраивания скрипта. Если Вы хотя бы немного разбираетесь в HTML, то здесь все должно быть понятно, если нет, то я немного поясню. Страница HTML состоит из тегов, управляющих выводом информации, которую несет в себе страница. HTML страничка, в самом общем случае, должна начинаться с тега <html> и заканчиваться тегом </html>. Тег <body> и, закрываещий его </body>, содержит в себе тело страницы, вся информация на странице располагается между этими тегами. Далее в примере встречается тег <br>. Он дает указание браузеру, что следует начать вывод текста за ним со следуещей строки и не имеет закрываещего тега. И вот, наконец, мы добрались до тега <script>, он подразумевает наличие закрываещего тега </script>. Одним из атрибутов этого тега является language, позволяющий указать браузеру какой скрипт-язык Вы намереваетесь использовать. Тут следует сказать, что кроме JavaScript существует еще один скрипт-язык, который понимает браузер - это VBScript. VBScript младший брат языка программирования Visual Basic, имеющий одинаковый с ним синтаксис. Но вопреки стараниям Microsoft, он так и не обрел такой популярности как JavaScript, хотя имеет сравнимые с ним возможности. В нашем примере атрибут language равен JavaScript, хотя можно писать и jscript. Вообще-то браузер по умолчанию, если не встречает в теге <script> атрибута language, считает, что будет использоваться JavaScript, но этим лучше не злоупотреблять. В конце концов пальцы у Вас не отвалятся если укажете, какой скрипт-язык Вы будете использовать, тем самым устранив недопонимание со стороны браузера, и обеспечив надлежащее выполнение скрипта. Далее после тега <script>, Вы встречаете следующую строку:
document.write("Это JavaScript!").
На данном этапе скажу только, что она занимается тем, что выводит в
текущей позиции курсора "Это JavaScript!", без кавычек. Позднее я
объясню, что значит document.write("");. Переходим к следующему
варианту расположения скрипта - между тегами <head> </head>, то есть
в заголовке документа:
<html> <head> <script language="JavaScript"> document.write("Это JavaScript!") </script> </head> <body> <br> Это обычный HTML документ. <br> </body> </html>Этот метод не имеет ни каких преимуществ по сравнению с уже расмотренным. Содержимое тегов <head> </head> выполняется ДО полной загрузки документа в браузер. Об этом методе тоже полезно знать. Скажу также, что скрипт может находится еще и внутри тега, в качестве значения его параметров, например:
<html> <body> <a href="JavaScript:document.write('Привет!')">Жми сюда!</a> </body> </html>В этом примере мы определяем ссылку - теги <a href=""> </a>. По идее параметр href (сокращение Hyper REFerence, от англ. гиперссылка) указывает куда следует перейти по нажатию на ссылку, а мы хитро :) подсовываем браузеру вместо url, наш скрип. Еще один немаловажный момент: как будет выглядеть наша страница, если браузер не воспринимает JavaScript? Браузеры, не имеющие поддержки JavaScript, "не знают" и тега <script>. Они игнорируют его и печатают все стоящие вслед за ним коды как обычный текст. Иными словами, читатель увидит, как код JavaScript, приведенный в нашем скрипте, окажется вписан открытым текстом прямо посреди HTML-документа. Разумеется, это не входит в наши планы. Какой есть способ избежать этого? Для решения этой проблемы можно воспользоваться теговой парой <!-- и -->. браузер найдя на страничке тег <!-- считает весь следующий за ним текст комментарием, пока не встретит закрываещий, для <!--, тег --> и соответственно не отображает содержимое этой теговой пары. Этот способ нам подойдет. Вот пример, иллюстрирующий этот способ:
<html> <body> <!-- <script language="JavaScript"> document.write("Это JavaScript!") </script> --> <br> Это обычный HTML документ. <br> </body> </html>Если Вы попытаетесь просмотреть такую страничку в браузере, то увидите только: "Это обычный HTML документ.", все остальное браузер посчитает комментарием! И напоследок: не ленитесь, набирайте все примеры приводимые в уроках сами! Это позволит Вам быстрее понять конструкции языка и приступить к написанию скриптов самостоятельно. Вот мы и рассмотрели способы встраивания скрипта в HTML страничку, а так же способы его скрытия от браузеров "не понимающих" JavaScript, радует, что таких меньшинство :). На следующем уроке мы приступим к рассмотрению типов переменных и операторов языка.
До свидания!
5. Секреты Windows: Системный реестр.
автор: Rasa
Доброе время, дорогие подписчики! В прошлом номере рассылки я обещал рассказать вам о реестре. Что же он такое по сути?
Так вот, системный реестр Windows (Windows registry) - это фактически база данных, в которой записаны настройки как самой операционной системы, так и установленных в ней приложений. Параметры устройств, расположение значков на Рабочем столе, информация об установленных шрифтах и многое другое - все это хранит в себе реестр. Без реестра Windows неработоспособна. В операционных системах Windows 9x физически реестр располагается в двух файлах в каталоге Windows - System.dat и User.dat. А в Windows ME еще и в файле classes.dat. При загрузке компьютера System.dat и User.dat из каталога Windows загружаются в память и "склеиваются" в единое целое.
Как зарегистрировать свой тип файла? Как связать с определенным типом файла другое приложение, а не то, которое ей было назначено по умолчанию? Как в контекстное меню при выборе файла с нужным типом добавить несколько пунктов? Как запретить редактировать свойства типа файла в окне Вид/Свойства папки/Типы файлов? Заинтересовались? Тогда идем дальше.
Все "известные" расширения файлов Windows хранятся в одной из корневых веток (root keys) реестра HKEY_CLASSES_ROOT (далее по тексту HKCR). Существует псевдоним данной ветки - HKEY_LOCAL_MACHINE\Software\CLASSES, т. е. если мы что-то изменили в одной ветке, то сразу изменяется содержимое другой.
Для того, чтобы зарегистрировать свой тип файла, нужно создать раздел ".расширение" (без кавычек) в корневой ветке HKCR. В созданной ветке в параметре по умолчанию нужно указать другую ветку, содержащую параметры вашего типа файла (внутреннее имя). Это сделано для того, чтобы несколько типов файлов можно было бы связать с одним приложением. Хотя можно зарегистрировать и по упрощенной схеме. При ее использовании внутреннее имя типа файлов не указывается, а те параметры, которые должны были бы присутствовать в разделе с внутренним именем, находятся в разделе с именем расширения файла. Такая схема тоже работает, но все же является не совсем корректной.
Так вот, большинство внутренних имен составлено из <расширение>+"file", но, конечно, вы можете указать все что угодно, лишь бы название раздела совпадало с параметром по умолчанию ветки ".расширение". Для примера придумаем новый тип файла "y8y", а внутренее имя пусть будет "y8yfile". Создадим нужные ветки, по описанному выше алгоритму. В ветке "y8yfile" создадим раздел Shell. Кстати, прямо здесь должен сказать, что если в контекстное меню планируется добавлять больше одного пункта (как например для bat-файлов Открыть, Печать, Изменить), то параметр по умолчанию должен содержать имя ветки, из которой будет считана командная строка при двойном щелчке (нажатии Enter) на файле (в контекстном меню этот пункт выделяется жирным, по умолчанию считывается из ветки "open").
В разделе Shell создадим, для начала, ветку Open, ее параметр по умолчанию должен содержать текст, который будет отображаться в контекстном меню, иначе там будет написано название самой ветки ("open", в данном случае).
В этой ветке создадим еще один раздел Command - ее параметр по умолчанию должен содержать путь к вашей программе и имя передаваемого файла. Например, файл с "нашим" типом открывает программа Proga.exe, тогда в параметре по умолчанию должно быть написано <путь_к_вашей_программе>\proga.exe "%1". Т. е. при открытии файла с расширением .y8y имя этого файла будет передано первым параметром. Если повторить все вышеперечисленные действия, но в разделе Shell создать уже ветку Edit, а в ней ветку Command с параметром по умолчанию, например
<путь_к_вашей_программе>\proga.exe /<параметр_редактирования> "%1"
то в контекстном меню (и в меню Файл) появится уже два пункта и при выборе пункта Edit запустится та же программа programma.exe, но, уже, скажем, для редактирования.
Например, мы хотим запретить другим пользователям изменять свойства или удалять тип файла из окна Вид/Свойства папки/Типы файлов (то есть сделать недоступными кнопки Изменить и Удалить в окне Типы файлов). Запретить это для рядовых пользователей, которые незнакомы с реестром - можно, запретить же это для нас, программистов - это, увы, не просто :)
Для примера разрешим удалять (ни в коем случае не удаляйте!) и изменять настройки/ассоциации типа "Приложение" (расширение .exe). По умолчанию запрещены оба действия. Регулируются они двоичным параметром EditFlags в ветке HKEY_CLASSES_ROOT\exefile. Нашли? Если его удалить - мы сможем и удалять и изменять тип "Приложение" Для того, чтобы запретить только "Удаление" в ветке внутреннего имени создайте двоичный параметр EditFlags и присвойте ему значение 10 00 00 00, а чтобы запретить только "Изменить" присвойте 08 00 00 00. Для того же, чтобы запретить оба действия присвойте параметру EditFlags значение 18 00 00 00. Ну, и чтобы совсем скрыть пункт "Приложение" из окна "Типы файлов" поставьте флаг в 01 00 00 00.
Вы никогда не видели окна 'Открыть с помощью...'? Тогда вы счастливчик или просто недавно с MS Windows... О чем я говорю? Когда вы пытаетесь открыть файл, тип которого Windows не знает, то появляется окно, предлагающее вам выбрать приложение для открытия этого самого файла. Иногда это просто добивает! Попробуем сделать так, чтобы все незарегистрированные в системе файлы открывались блокнотом. Смело запускаем редактор реестра и открываем ветвь HKEY_CLASSES_ROOT\Unknown\Shell (англ. Unknown - Неизвестный) и создаем подветвь Open, а в ней ветвь Command. В получившемся разделе HKEY_CLASSES_ROOT\Unknown\Shell\Open\Command параметр по умолчанию изменяем на 'Notepad.exe "%1"', без апострофов.
Теперь все незнакомые файлы будут открываться в блокноте. А если вы захотите связать файл с другим приложением, просто щелкните на нем правой кнопкой и выберите пункт 'Открыть с помощью...'
На этом cегодня я откланиваюсь и желаю вам "Железного реестра"! Всего хорошего, пока!
6. Скрипты в Windows
автор: UniQ
Часто возникает необходимость выполнять какие-либо однотипные операции несколько раз на день - это занимает некоторое время, которого всегда не хватает. В эпоху, когда господствовала DOS, а миром правили динозавры, пользователи научились автоматизировать выполнение повторяющихся процессов с помощью командных файлов - обычных списков команд DOS, исполняющихся последовательно. В языке командных файлов имелись некоторые простые средства программирования, а все переменные хранились в ограниченной области системной среды. Несмотря на эти ограничения, мастера командных файлов древности творили чудеса. Такие командные файлы, оказались удобным средством автоматизации выполнения рутинных операций. Постепенно DOS стал уходить со сцены, уступая Windows. Возможностей командных файлов стало не хватать, хотя потребность в них не отпала.
Что же могла предложить Microsoft на замену? Система Windows Scripting Host (WSH), дебютировавшая в составе Microsoft Windows 98 и устанавливаемая на любой 32-разрядной Windows-платформе, представляет собой Windows-эквивалент древнего языка командных файлов DOS.
Средствами WSH выполняются крошечные программы, составленные на JavaScript, VBScript или любом совместимом с этой системой языке. Стандартные объекты обеспечивают доступ к оболочке Windows, файловой системе, реестру и другим компонентам ОС. Важно то, что все эти возможности освоит любой пользователь, способный подготовить сценарий из нескольких строк.
Несмотря на то, что WSH является действительно удобным средством, чтобы облегчить жизнь пользователя Windows немногие о нём знают, а меж тем парочка наглядных примеров его использования поставляются вместе с Windows. Вы можете посмотреть эти примеры - они находятся в каталоге с Windows, в папке SAMPLES. Для их выполнения можно воспользоваться либо двойным щелчком, либо пунктом ╚Открыть в окне сеанса MSDOS╩, если расширения JS и VBS связаны с какой-либо другой программой. Ещё один способ выполнения, дать команду: wscript <имя и путь к скрипту>.
Вы можете обратиться к основной странице сценариев Microsoft по адресу http://msdn.microsoft.com/scripting, для получения справочной информации. При необходимости загрузите и установите Windows Script 5.1, а затем WSH2. Кроме того, имеет смысл загрузить локальную копию документации, оформленную в виде документа HTMLHelp и содержащую учебное пособие и справочные разделы, которые можно просматривать через сеть. Если вы недостаточно хорошо знаете VBScript или JavaScript, вернитесь к главной странице сценариев, выберите язык составления сценариев и загрузите документацию по нему. Вооружившись инструментарием и документацией, можно приступить к работе. Начните с запуска справочного файла. Откройте тему Version Information (информация о версии), чтобы просмотреть описание новых возможностей данной версии. Некоторые новые функции, несомненно, предназначены для профессиональных программистов, но остальные подойдут пользователям любого уровня подготовки.
Давайте разберём простой пример, на JScript, результатом выполнения которого является создание на рабочем столе ярлыка для Блокнота:
;--------------------------------------------------------------------- // Разультаты возвращаемые диалогом var vbOKCancel = 1; var vbInformation = 64; var vbCancel = 2; var L_Welcome_MsgBox_Message_Text = "Этот пример создает ярлык для \ Блокнота на рабочем столе."; var L_Welcome_MsgBox_Title_Text = "Пример сервера сценариев Windows"; // Выводим диалог с приветствием Welcome(); var WSHShell = WScript.CreateObject("WScript.Shell"); // Получение доступа к рабочему столу используя объект WshSpecialFolders var DesktopPath = WSHShell.SpecialFolders("Desktop"); // Создание ярлыка на рабочем столе var MyShortcut = WSHShell.CreateShortcut(DesktopPath + "\\На Блокнот.lnk"); // Установка и запись свойств ярлыка MyShortcut.TargetPath = WSHShell.ExpandEnvironmentStrings("%windir%\\notepad.exe"); MyShortcut.WorkingDirectory = WSHShell.ExpandEnvironmentStrings("%windir%"); MyShortcut.Windowstyle="4;" MyShortcut.IconLocation = WSHShell.ExpandEnvironmentStrings("%windir%\\notepad.exe, 0"); MyShortcut.Save(); WScript.Echo("Ярлык на Блокнот создан на рабочем столе."); function Welcome() { var WSHShell = WScript.CreateObject("WScript.Shell"); var intDoIt; intDoIt = WSHShell.Popup(L_Welcome_MsgBox_Message_Text, 0, L_Welcome_MsgBox_Title_Text, vbOKCancel + vbInformation ); if (intDoIt == vbCancel) { WScript.Quit(); } } ;---------------------------------------------------------------------Я думаю, что если Вы знакомы с Jscript, то для Вас здесь нет ничего сложного и, проведя некоторое время за изучением объектов их методов и свойств, Вы вполне сможете сами написать необходимый скрипт. Составление сценария не сложнее подготовки командного файла, а его возможности гораздо шире.
Удачи! Дорогу осилит идущий...
7. Как с нами связаться.
Пишите нам по адресам, указанным ниже. В поле тема укажите "Рассылка". Пишите обо всем, что вам понравилось или не понравилось в нашей рассылке, может быть у вас есть предложения по ее улучшению. Ждем ваших отзывов.
Rasa: rasa@fromru.com
UniQ: not enabled
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||