Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Visual Basic для новичков и профессионалов


Информационный Канал Subscribe.Ru

Visual Basic для новичков и профессионалов

Наш Web-портал:

Тема выпуска:
Выпуск #45
От 07.11.2005
Формы, элементы управления, события форм
От Автора

Здравствуйте уважаемые подписчики!

Вот и подошло время для очередного выпуска рассылки. За время последнего выпуска было получено немного вопросов и ответов, был подготовлен раздел для новичков. Ну-с, начнем!

 
Новости сайта, форума
Продолжается работа над сайтом.
 
Обучение для новичков
 

Формы, элементы управления, события форм
Ни одно приложения на Visual Basic не обходится без форм. Наверное многие скажут, что они писали приложения без форм, но это не так! Даже любой InputBox, MessageBox является формой. Сама форма - это элемент управления. Так что же такое форма? Давайте дадим определение формы:

Формы — это объекты, которые обладают свойствами, определяющими их внешний вид, методами, определяющими их поведение, и событиями, которые определяют их взаимодействие с пользователем. Установкой свойств формы и разработкой кода Visual Basic для отклика формы на события создается объект, удовлетворяющий требованиям определенного приложения.

Теперь всем понятно, что даже самая простая форма является элементом управления, которая содержит свой набор свойств и событий. В общем в программировании без элементов управления не обойтись никак! А что такое элементы управления? Давайте дадаим определение элементам управления:

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

Каждый элемент управления обладает своим набором свойств и событий. Чтобы подробней с этим столкнуться, для этого создайте форму с именем FrmMain. Щелкните по форме и взгяните на свойства объекта (их не так уж и мало), давайте их перечислим:

Appearance, AutoRedraw, BackColor, BorderStyle, Caption, ClipControls, ControlBox, DrawMode, DrawStyle, DrawWidth, Enabled, FillColor, FillStyle, Font, FontTransparent, ForeColor, HasDC, Height, HelpContextID, Icon, KeyPreview, Left, LinkMode, LinkTopic, MaxButton, MDIChild, MinButton, Mouselcon, MousePointer, Moveable, NegotiateMenus, OLEDropMode, Palette, PaletteMode, Picture, RightToLeft, ScaleHeight, ScaleLeft, ScaleMode, ScaleTop, ScaleWidth, ShowInTaskbar, StartUpPosition, Tag, Top, Visible, WhatsThisButton, WhatsThisHelp, Width, WindowState.

Каждое свойство отвечает за частичку формы. Всего у формы 50 свойств. Каждое я описывать не буду, но в скорем времени я опубликую все свойства, которые есть у формы и стандартных элементах управления с описанием.

Давайте создадим простое приложение на VB, плавно перейдя на события формы:

Создайте стандартное приложение на VB, при этом уже будет создана форма с именем Form1. Для начала поэксперементируйте со свойством BorderStyle. Что получается? Заголовок окна меняется. Это свойство отвечает за заголовок окна. Запомните, что в процессе выполнения программы, изменить вид заголовка невозможно! Измените свойство Caption формы с Form1 на "Наша форма". Теперь давайте поиграемся с свойствами формы. Для этого разместите на форме 5 CommandButton. Имена кнопок не изменяйте, иначе ничего не получится. Добавьте такой код:

Private Sub Command1_Click()
MsgBox "Сейчас форма будет развернута на весь экран"
Form1.WindowState = vbMaximized
End Sub

Private Sub Command2_Click()
MsgBox "Сейчас форма будет свернута"
Form1.WindowState = vbMinimized
End Sub

Private Sub Command3_Click()
Form1.Caption = InputBox("Введите заголовок окна", "Изменение заголовка окна", "Новый заголовок", Me.Width / 2, Me.Height / 2)
End Sub

Private Sub Command4_Click()
Form1.WindowState = vbNormal
MsgBox "Изменим размеры формы в ширину и высоту"
Form1.Width = Form1.Width + 2000
Form1.Height = Form1.Height + 2000
End Sub

Private Sub Command5_Click()
MsgBox "Закрасим форму в черный цвет!"
Form1.BackColor = &H0&
End Sub

Поэксперементируйте с кнопками.

А теперь взгляните на код и посмотрите, какое событие используется в приложении??? Click - это главное событие CommandButton. Без него бы кнопка была простым украшением для формы. Форма также имеет свои события. Рассмотрим несколько:

Form_Load - наступает после Form_Initialize, т.е. загрузка формы в память
Form_Initialize - наступает с созданием нового объекта, т.е. самой формы.
Form_Click - событие, связанное с мышиными кликами: клик по форме.
Form_Unload - наступает при попытке освободить (выгрузить) форму из памяти.

Для закрепления материала добавьте в уже созданное приложение сделующий код:

Private Sub Form_Click()
MsgBox "Уп-с... Кто это по мне кликает??? 8-о"
End Sub

Private Sub Form_Initialize()
MsgBox "Создаемся..."
End Sub

Private Sub Form_Load()
MsgBox "Загружаемся..."
End Sub

Private Sub Form_Unload(Cancel As Integer)
MsgBox "Ты нажал крестик... :((("
End Sub

На сегодня все! До новых встреч! Читайте раздел Вопросов и Ответов!
 
Вопросы и ответы
Наши лидеры


Место
Имя (ник)
Счет
1
Игорь (=) 167
2
*Casper* (=) 86
3
Stormbringer (=) 82
4
Bourn None (=) 77
5
Андрей (=) 73
6
HouseBugs (=) 60
7
Bullet [PCLO] (=) 59
8
AGavrilov (=) 28
9
Андрей (now@) (=) 24
10
Super Vadim (New!) 24


(+) - на место выше, (-) - на место ниже, (=) - прежнее место, (New!) - впервые в таблице.

Всего участников: 82
Общее число баллов: 1281
Максимальный счет: 167
Минимальный счет: 2
Новые вопросы

173/ Чтобы отправлять сообщения по локальной сети через службу сообщений в своей программе я написал функцию вызова команды net send

WinExec "net send " & comp & " " & text ' comp - имя компа text - текст сообщения

Как отправить сообщение не через вызов программы, а через функцию API или через WinSock?
Если это возможно, то как сделать, чтобы получатель не видел имя компа, откуда отсылали сообщение?
[Ответить]
174/ Всем привет! Кто нибудь знает как решать в ВБ диференциальные уравнения. Например такую:
Численно решить методом Эйлера дифференциальное уравнение с заданными начальными условиями на отрезке с шагом h=0,1 при указанных значениях параметров:
y’=1+x y2 ; y(0)=1, a=0, b=1.
[Ответить]
175/ Вопрос стратегического плана.
Есть государственное предприятие - бухгалтерия управления городского
образования.
Можно ли написать (и стоит ли?)с помощью VB6 и Access 2002 прграмму
для начисления заработной платы и удержания налогов, если в
управлении работают около 10000 человек. Способ начисления одинаковый
почти у всех, но почти у каждого есть свои индивидуальные свойства
по математике начисления зарплаты. Есть для этого проекта 15
бухгалтеров с компьютерами. Как лучше сделать (сетевой вариант, но
уровень пользователей желает знать лучшего) или локально каждому по
несколько учреждений на пк?
1с сложновата с интерфейсом и не все получилось у специалистов по 1с
данного профиля, которых приглашали. Они конечно же старались сделать
сетевую версию.
Спасибо. С уважением Некрасов Андрей.
[Ответить]
176/ Здравствуйте!
Возможно ли в VB 6.0 воспроизвести одновременно 2, 3,... несколько звуковых файлов (mp3. vaw. midi)?
Если возможно, то как.
Заранее спасибо.
[Ответить]
177/ Здравствуйте!
Как добавить иконку в меню? Нужно, чтобы меню состояло из текста с
картинкой. При наведении мышки выделяться должен только текст, а
рисунок должен выходить немного вперед (такой же эффект наблюдается в
меню бейсика и многих другию приложений).
Заранее спасибо!
[Ответить]
178/ Есть форма на которой расположены елементы управления из стандартного набора VB6 и добавленые из библиотеки FM20.dll.
Нужно разместить combobox из FM20.dll, на MSFlexGride, а он упорно рисуется под ним.
На прередний план не переносится, Zorder не помогает.
Можно ли как то это побороть?
[Ответить]
179/ Как преобразовать стандартный цвет типа Long в цвета пригодные для
использования со структурой TRIVERTEX и функцией GradientFillRect?
[Ответить]
180/ Помогите!!!У нас компьютеры соединены сетью. Как можно узнать запущено ли определённое приложение на определённой машине а после запустить приложение тамже. [Ответить]
181/ Люди знающие, вот чтобы создать DLL'ку в С++ мы делаем функции DLLEntryPoint или DLLMain.В VB этот трюк не катит.Не подскажите как реализовать DLL в VB.
Примерчики бы не помешали.
[Ответить]
182/ Товарищи программеры, недавно столкнулся с проблемой - на формочке размещен объект типа ListBox, a фон формы замощен рисунком, проблема - ListBox серый и с общей картинкой на форме не сочетается.Не подскажите способы решения этой проблемы и/или альтернативные решения. [Ответить]
183/ Как запустить свою прогу как сервис Винды? [Ответить]
184/ Здравствуйте!
Я по поводу субклассирования.
Определяю стандартную оконую функцию в модуле. Как теперь сделать так, чтобы эта функия вызвала другую, именно из той копии класса, которая субклассирует даное окно?
Напремер:
У меня есть три контрола:

ContrA субклассирует окно 1
ContrB --////--- 2
ContrC --////--- 3

и NewWindowFunction (в стандартном модуле) если она будет вызвана как можно узнать какая именно копия котнрола ёё вызвала? И вызвать функцию именно того контрла, которая ёё вызвала?

Может ёще существует какой-нибудь другой алгоритм? А то я понатия не имею как можно его организовать.

А как еще можно субклассировать окно пренадлежащее другому процессу?
SetWindowLong конечно возвращае ошибку. Для этой цели пользовался специальным контролом, но хотелось бы "избавиться" от необходимости его присутствия для даных целей.
[Ответить]
Вопросы без ответов

63/ Здравствуйте! Как сделать столбец для таблицы с помощью VB который будет показывать номера кварталов с min зарплатой(в таблице 4 квартала). Другой столбец - Динамика изменения средней зарплаты по кварталам (рост, падение, колебание, постоянно)\ нужно найти среднее знаение среди записей каждого отдела и чтобы написал динамику изменени, то что напискано в скобках, одно слово. [Ответить]
76/ podskazhite pozhalusta, kak pravil'nee pristupit' k sozdaniu tablic i kakogo roda tablica nujna dlya vvoda, obrabotki i rascheta dannix, na VB.net. mne bazu sozdavat' ne nado. Zaranee spasibo [Ответить]
88/ Здравствуйте. У меня такой вопрос: можно ли из VB послать команду так, чтобы включилась удалённая машина в сети, на которой включен WakeUp on LAN. Если да, то как? За ранее спасибо за оказанную помощь! [Ответить]
99/ Здравствуйте. Создается регистратор переговоров. Подскажите, пожалуйста, каким образом записать звук в файл, чтобы в дальнейшем можно было открыть его и прослушать? Заранее спасибо. [Ответить]
115/ Как при работе в сети при разрыве связи можно узнать, что связь разорвана
удаленным сервером или локальной программой (ошибка 600)?
[Ответить]
117/ Как сделать чтобы при выборе шрифта с помощью Microsoft CommonDialog менялся
и набор символов (Кириллица, Западноевропейский и т.п.)? Спасибо.
[Ответить]
122/ Как сделать чтобы при нажатии на объект ListView НЕ воспроизводился тот
идиотский звук, который воспроизводится?
[Ответить]

130/ Доброго времени суток, User`ы. Подскажите пожалуйсто, как в VB 6.0 к какому-либо устройству в порте COM по определённому адресу? Благодарю за внимание и за ответ. Спасибо. [Ответить]
136/ Здравствуйте!
У меня возникла проблема: для создания страниц сайта специфической тематики (математика) требуется программа, способная сохранять введенные пользователем в объект Equation данные в формате gif или png [как это делает MS Word, при сохранении документа в html формате. Т.е. технологический процесс такой: введение формул в Ворде, сохранение в html -> получение рисунков -> верстка страницы].
Сохранять данные в виде рисунка не проблема, но размер у них не такой какой необходим. Это и есть проблема: как сделать так, чтобы OLE объект со вставленным Equation'ом, изменял свои размеры в соответствии с изменениями размеров Equation'а (как это реализовано в MS Word)
[Ответить]
144/ Подскажите: есть MySQL база, в ней есть какбы ячейки с номером,
например 84538834 или 444449329232, эти ячейки содержат информацию -
числа например 100 332 или 50.
Как можно средствами VB сделать программу которая искала бы в
этой базе значения этих ячеек равные нулю и удаляла бы их, и самое
главное нужен отчет о номерах удалённых ячеек, т.е. сколько чего
удалено из базы.
[Ответить]
155/ Здравствуйте. Как изменить иконку у EXE файла програмным методом на VB с помощью функций: BeginUpdateResource, UpdateResource, hResUpdate? [Ответить]
159/ Можно-ли в MS Access в таблице сохранить документ html и вывести его на форму для просмотра. А если можно, то как? [Ответить]
160/ Благодарю Игоря за ответ,очень помогло,также уже сделал редактирования.
Но дальше возникли еще вопросы.
Например:
1.Не как не могу сделать меню правка с подменю
копировать,вставить,вырезать.
Ну уже все перепробовал нечего не помагает((((
2.Везде искал но не как не могу найти,хоть что нибудь про импорт и
экспорт из базы данных.
Почему так мало информации по Visual Basic.NET?
Пожалуйста помогите,кто может начинающему.
Учусь програмироватьб на Visual Basic.NET, вроде что-то наченает
получатся,вот только некоторые вещи тормозят.
Заранее благодарен за помощь.
С уважением Роман.
[Ответить]
162/ Вот у меня вопрос. Имею 2 модема. Опишите мне подробно:
1) набор номера
2) соединение межде модемами
3) установка связи
Желательно через MSComm
[Ответить]
166/ Создал Программу: при ОК на кнопку выходит очередной Перл.
Каждый Перл пронумерован. Как спрограммировать на VB6, чтобы при клике на кнопку Найти Перл или хотя бы его Номер по СЛОВУ? Если требуется перешлю Исходник (в архиве 15 Кб).
[Ответить]
167/ Здравствуйте
Как получить спектр музыкального файла?
[Ответить]
168/ Для скачки файла из инета я использую в своей проге такой код:

Private Function DownloadFile(ByVal FromUrl As String) As String
'процедура загрузки файла
Dim hSession As Long

Dim hFile As Long
Dim LLenthFile As Long
Dim AllFile As String
Dim fBuffer As String
Dim Ret As Long

hSession = InternetOpen("прога", 0, "", "", 0)
DoEvents

hFile = InternetOpenUrl(hSession, FromUrl, "", 0, 0, 0)
Do
DoEvents
fBuffer = Space(1024)
InternetReadFile hFile, fBuffer, 1024, Ret
If Ret <> 1024 Then fBuffer = Left$(fBuffer, Ret)
AllFile = AllFile & fBuffer

Loop Until Ret = 0
InternetCloseHandle hFile
InternetCloseHandle hSession
DownloadFile = AllFile
End Function

но он подвисает, думаю что в цикле Do(скачиваю много файлов)
как сделать лучше(но без контролов)?
[Ответить]
169/ Hi.Есть такой вопрос: Еть сайт на котором есть небольшая картинка и она
не постояна тоесть, надо утянуть картинку из определённой части сайта
или хотябы узнать какая картинка загружена в етот момент на сайте? (url
картинки постоянно меняется.). Заранее спасибо.
[Ответить]
170/ Здраствуйте.
Столкнулся со следующей проблемой:
Как передать в приложение строку с пробелами и кирилицей в имени файла.
"D:\Program Files\IrfanView\i_view32.exe C:\мои картинки\мой рисунок.jpg"
, где "i_view32.exe" программа обработки графики.
[Ответить]
171/ Загоняю в ListView список файлов в директории. стиль report.
Проблема - отобразить рядом с файлами значки соответствующих расширений, короче сделать проводник в стиле "таблица". Если подскажете буду благодарен.
[Ответить]
172/ вопрос по RAS:
как получить параметры имеющихся на компе соединений(dial-up)?
[Ответить]
173/ Можно ли программно на ВБ-6 сжать базу данных Access?
Если можно, то подскажите код для выполнения такой операции.
[Ответить]
174/ Здравствуйте господа Програмисты.
У меня к вам возникло пару вопросов, надеюсь на вашу отзывчивость и
помощь.
Вопрос 1. Как в Visual Basic.NET 7.0 работать с реестром,какие значения
для этого используются и для чего.
Вопрос 2. Я создал программу по работе с базой данных Access и мне надо
как-то подключить еще одну программу, а точнее один exe-файл. Так чтобы
при открытии программы сначало срабатывал тот exe-файл который я
подключу а потом через определенное время запускалась сама програма.
Возможно ли так сделать, если да то как и с помощью чего?
Заранее Благодарен.
С уважением Роман.
[Ответить]
175/ Здавствуйте!
Плиз, помогите!
Я написал ScreenSaver и столкнулся с такой проблемой:
после компиляции и изменении расширения с EXE на SCR и копирования в WINDOWS
у меня не удаётся взаимодействие с WINDOWS, а именно: при выборе моей
заставки она берёт и запускается вместо показа на "нарисованном экранчике".
Как это можно исправить?
Заранее спасибо.
[Ответить]
176/ Здравствуйте! Как получить данные со входа звуковой карты? [Ответить]
Ответы на вопросы
 

159/Можно-ли в MS Access в таблице сохранить документ html и вывести его на форму для просмотра. А если можно, то как? [Ответить]

Отвечает: Oleg K.
Подобную задачу решал в свое время Малютин Николай (а уж его решениями
не брезговал даже Виктор Конюков из ЛидерСофта). Правда задача
ставилась немного иная - нужен был "редактор формул" в Access. Так вот
им были использованы элементы управления RichTextBox и DHTMLEdit

Используя объекты RichTextBox и DHTMLEdit Вы теперь можете написать не
только любую формулу, но и сделать улучшенный дизайн форм в Access.
Ссылку на пример работы с элементами управления RichTextBox и
DHTMLEdit, благодаря правилам рассыли дать не могу, все равно
сочтут рекламой :((
www.leadersoft.ru/subscribe/zip/malnik_formatted_text.zip
а вдруг не сочтут :))
возможно ссылка еще живая, а возможно перенесена в другой раздел сайта.

RichTextBox не идет в стандартной поставке Access, однако он
устанавливается при использовании VB или Microsoft Office 2000
Developer. Либо можно установить вручную.

DHTMLEdit, как утверждает Microsoft идет в поставке IE 5, однако
при первом использовании система может затребовать установочный
диск Office. Наиболее полный пример работы и справка по DHTMLEdit
находятся в msdn Микрософта:
(тут ссылка на msdn, интересно оставят или это тоже "реклама")
{http://msdn.microsoft.com/archive/en-us/dnaredcom/html/dhedsdk.exe}
здесь полный комплект(в т.ч. и установочный для контрола)
или
{http://msdn.microsoft.com/downloads/samples/Internet/browser/editcntrl/dhtms}
amp.exe -только пример

(если ссылки не пропустят, проси у автора рассыки, может он и
смилостивится после дня рождения :))
есть правда надежда, что по оставленым "зацепкам" сам отыщешь

К сожалению эти контролы не работают в отчетах. Однако этот недостаток
можно обойти непосредственно сбрасывая данные в формате RTF(HTML)

Оценка за ответ: 5

160/Благодарю Игоря за ответ,очень помогло,также уже сделал редактирования.
Но дальше возникли еще вопросы.
Например:
1.Не как не могу сделать меню правка с подменю
копировать,вставить,вырезать.
Ну уже все перепробовал нечего не помагает((((
2.Везде искал но не как не могу найти,хоть что нибудь про импорт и
экспорт из базы данных.
Почему так мало информации по Visual Basic.NET?
Пожалуйста помогите,кто может начинающему.
Учусь програмироватьб на Visual Basic.NET, вроде что-то наченает
получатся,вот только некоторые вещи тормозят.
Заранее благодарен за помощь.
С уважением Роман.
[Ответить]

Отвечает: Буглаков Сергей Александрович
Уважаемый Роман!
Сделать меню "копировать", "вырезать", "вставить" очень просто!
Достаточно сделать так:

В меню "копировать" использовать в объекте Clipboard метод SetText
Например:
Clipboard.SetText Text1.SelText, vbCFText

Для "вырезать" - тоже самое, только потом надо очистить выделенный текст.
например:
Clipboard.SetText Text1.SelText, vbCFText: Text1.SelText = ""

Для "вставить" - метод GetText. Вот пример:
Text1.SelText = Clipboard.GetText(vbCFText)

Существует несколько типов инфы в клипбоарде, о которых почти сразу понятно
из названия:
vbCFBitmap, vbCFDIB, vbCFEMetafile, vbCFFiles, vbCFLink, vbCFMetafile,
vbCFPalette, vbCFRTF, vbCFText

Желаю успехов в дальнейшей работе!
С уважением, X-Force.

Оценка за ответ: 5

173/Чтобы отправлять сообщения по локальной сети через службу сообщений в своей программе я написал функцию вызова команды net send

WinExec "net send " & comp & " " & text ' comp - имя компа text - текст сообщения

Как отправить сообщение не через вызов программы, а через функцию API или через WinSock?
Если это возможно, то как сделать, чтобы получатель не видел имя компа, откуда отсылали сообщение?
[Ответить]

Отвечает: Shmeliov Sergey
Вот код для VBA и VBS, наверняка будет работать и в VB6.

Sub MyCompressAccessDatabase(dbname)
Dim app
Dim CompressedDbName 'As String
CompressedDbName = dbname & ".recovered"
Set app = CreateObject("Access.Application")
app.CompactRepair dbname, CompressedDbName, True
' См. справку VBA для Access по объекту Application
Set app = Nothing
End Sub

А таким кодом можно протестировать эту процедуру:
Const dbpath = "D:\test\TestCompr.mdb"
MyCompressAccessDatabase dbpath

Оценка за ответ: 5


Отвечает: Игорь Осипов
Используй метод CompactDatabase
1) подключи ссылки на Access и DAO
2) синтаксис команды:
DBEngine.CompactDatabase имя старой БД, имя сжатой БД, путь к новой БД, options, пароль для подключения к
старой БД
3) пример (из MS Help)


Sub CompactDatabaseX()

Dim dbsNorthwind As dao.Database

Set dbsNorthwind = OpenDatabase("Northwind.mdb")

' Удаляем старый бэкап
If Dir("NwindKorean.mdb") <> "" Then Kill "NwindKorean.mdb"

' Создаём сжатую БД.
DBEngine.CompactDatabase "Northwind.mdb", "NwindKorean.mdb"

' Если хочешь, чтобы сжатая БД была с тем же именем, что и базовая-
' удаляешь базовую и переименовываешь сжатую
Kill "Northwind.mdb"
Name "NwindKorean.mdb" as "Northwind.mdb"

End Sub

Оценка за ответ: 5

174/Всем привет! Кто нибудь знает как решать в ВБ диференциальные уравнения. Например такую:
Численно решить методом Эйлера дифференциальное уравнение с заданными начальными условиями на отрезке с шагом h=0,1 при указанных значениях параметров:
y’=1+x y2 ; y(0)=1, a=0, b=1.
[Ответить]

Отвечает: Oleg K.
К сожалению в рассылку не пропускаются ссылки на и-нет ресурсы,
поэтому выражусь "обтекаемо" - поищи статьи Максима Колыванова и
Чеботарева Игоря о Windows Script Host (WSH). Если по пути найдешь
что-то еще, то хуже не будет.
Думаю это не будет расценено, как реклама :).
Вот, ну а теперь, по вышеуказанной причине вынужден
заниматься практически плагиатом :((

Вкратце WSH - это сильно продвинутый аналог DOS-овских
коммандных *.bat файлов и предоставляет все возможности VBScript -
несколько обрезанного варианта Visual_Basic-а и JScript (по
выбору/желанию).

Файлы скриптов WSH (Windows Script Host) могут обрабатываться двумя
утилитами серверов сценариев: cscript.exe (консольный вариант) и
wscript.exe (GUI-вариант). (В Windows 98/ME/2000/XP - библиотеки,
отвечающие за обработку скриптов изначально присутствуют в системе).

Чтобы запустить написанный скрипт (обычный текстовый файл с
раширением .vbs (для VBScript) или .js (для JScript)), можно просто
дважды щелкнуть левой кнопкой мыши по нему в окне проводника.

Если по первому вопросу
При помощи WSH можно сделать, например, вот что:

( для примера создай файл "test.vbs" и запусти его )

===== BEGIN =======>>>
'Пример работы с реестром на VBScript
set WSHShell = WScript.CreateObject("WScript.Shell")
WSHShell.Popup "Создаем раздел"
WSHShell.RegWrite "HKCU\\MyRegKey\\", "Primer"
WSHShell.Popup "Создаем строковый параметр"
WSHShell.RegWrite "HKCU\\MyRegKey\\String", 1
WSHShell.Popup "Создаем параметр DWORD"
WSHShell.RegWrite "HKCU\\MyRegKey\\DWORD", 2, "REG_DWORD"
WSHShell.Popup "Создаем двоичный параметр"
WSHShell.RegWrite "HKCU\\MyRegKey\\Binary", 3, "REG_BINARY"
WSHShell.Popup "Удаляем все параметры"
WSHShell.RegDelete "HKCU\\MyRegKey\\String"
WSHShell.RegDelete "HKCU\\MyRegKey\\DWORD"
WSHShell.RegDelete "HKCU\\MyRegKey\\Binary"
WSHShell.Popup "Удаляем раздел"
WSHShell.RegDelete "HKCU\\MyRegKey\\"
<<<====== END ========

корневой раздел HKEY_CURRENT_USER в скрипте обозначается как HKCU.
(Здесь возможны сокращенные названия КОРНЕВЫХ разделов).
HKEY_LOCAL_MACHINE будет писаться как HKLM,
HKEY_CLASSES_ROOT - HKCR.
Остальные разделы не имеют короткого имени.


По второму вопросу.
Я понимаю этот вопрос так:
Нужно 1) запустить EXE-программу,
2) сделать паузу,
3) запустить вторую программу

для примера создай файл "test.js" и запусти его
(в отличие от vbscript здесь "set" меняются на "var" и строчки
завершаются точкой с запятой ";")

===== BEGIN =======>>>
//Пример запуска программы с диалоговым окном запроса
//на JScript
var vbOKCancel = 1;
var vbInformation = 64;
var vbCancel = 2;
var Message = "Вы действительно хотите запустить программу Notepad?";
var Title = "Подтвердите действие";
var WSHShell = WScript.CreateObject("WScript.Shell");
Welcome();

WSHShell.Run("notepad",5);
WScript.Sleep(5000);
WSHShell.Run("calc",5);

function Welcome() {
var intDoIt;

intDoIt = WSHShell.Popup(Message,
0,
Title,
vbOKCancel + vbInformation );
if (intDoIt == vbCancel) {
WScript.Quit();
}
}
<<<====== END ========

Ключевые строки
WSHShell.Run("notepad",5); // запустить блокнот
WScript.Sleep(5000); // пауза в выполнении скрипта на 5 сек
WSHShell.Run("calc",5); // запустить калькулятор

При вызове метода .Run передаются два параметра: "Имя_файла",
"состояние_окна_запускаемой_программы"
Здесь использованы короткие имена, так как обе программы лежат в
каталоге WINDOWS, который присутствует в переменной среды окружения
Path, в твоем же случае придется указать полное имя и с указанием
полного пути (например: "C:\polniy\put_k\programme\file.exe")
Второй параметр может принимать десять различных значений от 0 до 9
0 - запускать программу в скрытом окне. Т.е. если вы попытаетесь
запустить Блокнот с таким значением второй переменной, то окно
программы будет невидимым и кнопка на панели задач не будет
создана. Чтобы увидеть что Блокнот все-таки запустился, нажмите
Ctrl+Alt+Del и вы увидите там строку с текстом Notepad.
2 - запустить программу минимизированной.
3 - запустить программу максимизированной.
5 - запустить программу с текущими размером и позицией окна.
6 - запустить программу минимизированной. При этом активным будет
следующее окно в Z-последовательности.

Оценка за ответ: 5


Отвечает: Oldkrot
Imports Microsoft.Win32

Dim regKey As RegistryKey
for example
regKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", True)
dim value as string
for reading value
value =regKey.GetValue("defaultPassword")
for setting value
regKey.SetValue("defaultPassword", "12345678")
regKey.Close()


Regards oldkrot


Оценка за ответ: 5

175/Вопрос стратегического плана.
Есть государственное предприятие - бухгалтерия управления городского
образования.
Можно ли написать (и стоит ли?)с помощью VB6 и Access 2002 прграмму
для начисления заработной платы и удержания налогов, если в
управлении работают около 10000 человек. Способ начисления одинаковый
почти у всех, но почти у каждого есть свои индивидуальные свойства
по математике начисления зарплаты. Есть для этого проекта 15
бухгалтеров с компьютерами. Как лучше сделать (сетевой вариант, но
уровень пользователей желает знать лучшего) или локально каждому по
несколько учреждений на пк?
1с сложновата с интерфейсом и не все получилось у специалистов по 1с
данного профиля, которых приглашали. Они конечно же старались сделать
сетевую версию.
Спасибо. С уважением Некрасов Андрей.
[Ответить]

Отвечает: Андрей
Windows запускает программу хранителя экрана при двух возможных условиях:
1) при активизации хранителя экрана, и 2) когда необходимо изменить его
настройки. В обоих случаях Windows запускает одну и ту же программу. Для
запуска программы в одном из двух режимов предусмотрен параметр
командной строки - "/s" для активного режима и "/c" для режима
конфигурации. Для корректной работы с Панелью управления наш хранитель
экрана должен проверять командную строку на предмет наличия одного из
ключа.

Активный режим: Когда хранитель экрана стартует в активном режиме (/s), нам
необходимо создать и показать именно форму хранителя экрана.

Режим конфигурации: Когда хранитель экрана стартует в режиме
конфигурации (/c), нам необходимо создать и вывести на экран
конфигурационную форму.

Оценка за ответ: 5
 
Статья выпуска
Присылайте свои статьи на наш адрес: vb-question@list.ru
 
Юмор
Стоит старичок на балконе и умиляется:
- Какая же у нас молодежь хорошая пошла! Времена тяжелые... Стоят касатики, одну папироску на пятерых тянут, а все равно смеются!
***
Мужик просыпается утром с ОЧЕНЬ сильного похмелья. Сидит и думает: "Вчера что-то было НЕ ТАК..." Звонит другу: - Серега, я у тебя вчера был? - Был... - Водку пил? - Пил... - А у тебя лимон по столу не прыгал? - Да ты что? Лечись... Звонит другому. Та же история. Третьему. - Я у тебя вчера был? - Был... - Водку пил? - Пил... - У тебя лимон по столу не прыгал? - ТАК ЭТО ТЫ МОЮ КАНАРЕЙКУ В ЧАЙ ВЫДАВИЛ?!! (Паш*ОК)
 
Наши партнеры

Рассылки Subscribe.Ru
Visual Basic для новичков и профессионалов
Программирование на Delphi

Хотите стать нашим партнером? Пишите сюда.

 

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.vbforbeginprof
Архив рассылки
Отписаться
Вспомнить пароль

В избранное