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

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


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

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

 

Сегодня в выпуске:
>
Новости сайта
>
Новое на форуме
>
Вопросы и ответы
>
Курс обучения для начинающих
>
Компоненты, контролы, исходники
>
Статья выпуска
>
Наши партнеры
Бред автора

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

И опять на очереди очередной выпуск рассылки. Посмотрел в наш ящик vb-question@list.ru и обнаружил, что там аж 33 новых письма уже завалялось, которые помечены флажочком и требуют опубликования! Вот и решил я снова сделать выпуск нашей любимой рассылки. К тому же, время уже подпирает на очередной выпуск.

Сайт по прежнему находится в разработке, я бы так сказал, что он простаивает, так как я сейчас работаю и времени на разработку остается мало, но осталось сосвем чуть-чуть, поэтому, я надеюсь, что через недельку я его запущу. Ждите, осталось немного. Так вот, что еще хочу сказать по этому поводу. Ко мне приходят пиьсма с исходниками, которые должны быть "вылиты" на сервер. Я принимаю следующее решение: чтобы не размещать повторно файлы на новом сервере, а сказать новое имя сервера я вам не могу, я все выливаю на старый сервер в виде простых архивов, прописываю ссылки. На новом же ервере эти файлы появятся в разделе Исходники и будут ссылаться на старый сервер.

Правила рассылки
1. Вопросы, касающиеся другой сферы программирования, а также сферы ПО - НЕ ПРИНИМАЮТСЯ!
2. Письма с указанием ссылок на какой-либо ресурс или сайт будут отвергнуты, либо ссылкы будут заменены на <РЕКЛАМА> и не будут опубликованы в рассылке!
3. Используйте текстовый (не HTML) формат писем при написании вопроса или ответа.
4. ПИСЬМА С СОДЕРЖАНИЕМ ТИПА "ПИШИ СЮДА, Я ТЕБЕ ВЫШЛЮ ИСХОДНИК", ЛИБО "НАПИШИ МНЕ, Я ТЕБЕ ОБЪЯСНЮ" БОЛЬШЕ НЕ ПУБЛИКУЮТСЯ! ЕСЛИ ВЫ ХОТИТЕ ПОДЕЛИТЬСЯ ФАЙЛОМ, ПРИСЫЛАЙТЕ ЕГО АВТОРУ РАССЫЛКИ. ЭТО ВАМ НЕ ФОРУМ И НЕ СЛУЖБА СООБЩЕНИЙ МЕЖДУ ПОДПИСЧИКАМИ!
Новости сайта www.basic.webhost.ru

Продолжается работа над сайтом.

Вопросы и ответы

 

#
Имя (ник)
Счет
1
*Casper* (=)
86
2
Андрей (=)
42
3
Bullet [PCLO] (=)
30
4
HouseBugs (=)
28
5
Андрей (now@) (=)
24
6
Stormbringer (New!)
17
7
sash (-)
16
8
OverKill (=)
15
9
Игорь (--)
15
10
Гавринев Олег (-)
12

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

Всего участников: 60
Общее число баллов: 529
Максимальный счет: 86
Минимальный счет: 0


Новые вопросы

94/ Писал я себе прогу одну на Visiual Basicе 6.0 ,в которой используются немецкие символы,и сталкнулся с одной проблемой. Дело в том что мне надо в Labe1.Caption было например слово "Ändern ",но вместо буквы "Ä"("а" с двумя точками вверху) у меня прописывается обычная "а".Помогите!!!...Если можно то пришлите ответ на мыло. [Ответить]
95/ Добрый день! Как узнать програмно(есть ли стандартные функции или нестандартные): -уровень заряда батарее в ноутбуке; -температуру жесткого диска; -тепературу процессора; -скорости вентеляторов. Заранее благодарен! [Ответить]
96/ Как в элементе PictureBox, или в другом, вывести текст вертикально или под произвольным углом? [Ответить]
97/ Здравствуйте! Подскажите пожалуйста, как в VB Access программно можно запросить имя компьютера и сетевое имя компьютера, на котором размещена данная база? С уважением, Игорь. [Ответить]
98/ Здравствуйте. Пишу программу автоматического обзвона абонентов АТС по модему. Вопрос: как программно отследить момент снятия телефонной трубки и "проиграть" звуковой файл? Заранее спасибо [Ответить]
99/ Здравствуйте. Создается регистратор переговоров. Подскажите, пожалуйста, каким образом записать звук в файл, чтобы в дальнейшем можно было открыть его и прослушать? Заранее спасибо. [Ответить]
100/ Здравствуйте. Меня интересует протокол ZModem или подобный. Спасибо [Ответить]
101/ Здравствуйте! Мне посоветовали перейти с VB.NET на VB 6.0, а о этой версии Бейсика я мало чего знаю, так что извините за множество ламерских вопросов:
Как записать переменную в файл(ну и извлечь конечно)?
Как повернуть элемент Picture1 на x градусов?
Есть ли в VB 6.0 коллекции и структуры, и если есть как с ними работать?
По-моему я где-то читал, что с помощью оператора PLAY можно проиграть любую ноту. Так ли это?
Как скопировать, переместить, удалить, переименовать файл?
Как в VB 6.0 нарисовать таблицу и записать данные, типа такой

Имя Рост Возраст
Лёха 160 12
Аня 130 9

Как переменной x придать значение расположения курсора по оси x (это надо сделать при щечке мыши)?
Как сделать чтобы при нажатии стрелочки вниз на клавиатуре выполнялась команда: y = y - 50
Как закрыть форму? Как открыть форму? Как закрыть всю программу?
Была идея, ещё когда программировал на VB.NET создать программу которая соеденяла два компьютера, и когда оба компа соеденины с инетом можно было посредством этой программы обмениваться SMS. Подскажите если можете.
И последний: Когда в VB.NET написал хоть строчку кода в папке проекта создаётся exe файл, запустив который запускается программа, однако в VB 6.0 я такого не заметил. Заранее спасибо -- С уважением, Леха
[Ответить]
102/ Здравствуйте! Имеется три переменные типа String, называются A, B, C Как добавить каждую из них в элемент RichTextBox1(в смысле с помощью какого кода), при том, чтоб каждая из них писалась с новой строки, и чтобы переменная A была выделена красным цветом, B написана курсивом, а переменная C мигала? Как послать сообщение программе, чтобы она закрылась, к примеру диспетчеру задач? Заранее спасибо! -- С уважением, Леха [Ответить]
103/ Здравствуйте! У меня такая проблема. В базе данных Access форма использует в качестве данных присоединённую таблицу Excel. На самой таблице стоит защита от изменения под паролем. Когда я хочу внести данные или изменить их через форму, выдаётся сообщение что таблица не может быть изменена, что совершенно справедливо. ВОПРОС: можно ли на программном уровне временно отключить защиту Excel-евского файла, зная пароль, для внесения изменений, а затем установить защиту, например, запрограммировав кнопку на форме? ЕЩЁ ВОПРОС: при создании новой записи в форме (когда доступ разрешен) все нормально сохраняется. Но в таблице Excel эта запись располагается почему-то намного ниже всего остального списка и мне вручную приходится переносить эту строку под весь список записей. Почему такое происходит? Буду рад, если кто-нибудь поможет разобраться. С уважением, Игорь. [Ответить]
104/ Как в программе организовать рэндомный (случайным образом) выбор числа в пределах, например, от 1 до 10?? Заранее благодарен. [Ответить]
105/ Как получить день недели системной даты. Но(!) не числовое, а текстовое значение. Например "Понедельник" или "Вторник". Заранее благодарен. [Ответить]
106/ Возникла следующая проблема: Не могу поставить картинку на MSFlexGrid. Делаю так: Set FlexGridName.Picture = LoadPicture("С:\Windows\1stboot.bmp") Компилятор выделяет '.Picture', и пишет 'Invalid use of property'. Где ошибка? [Ответить]
107/ Как в Visual Basic можно создать свой элемент панели управления (*.cpl)? [Ответить]
108/ Привет всем. Есть фаил с записанными значениями (файл конфигурации (config.sys)) как из него вытянуть те параметры которые надо. Тоесть надо вытянуть не одну переменную, а несколько. [Ответить]
109/ Привет. Как сделать чтоб при нажатии на ячейку таблицы DBGrid значение которое находится в ячейке присваивалось переменной? Спасибо. [Ответить]
110/ В одной из предыдущих рассылок был задан вопрос: "Помогите пожалуйста. Нужно
написать на VB прогу которая отправляла бы на интернет страницу (php) данные. Т.е. программа отправки SMS должна передавать само сообщение, номер и оператор на определенную страницу. Заранее благодарен.".
Был дан только один ответ: "Просто передавайте так: www.site.ru/sms.php?operator=beeline&num=9039999999&text=Hello". Я думаю, что для человека, не знающего программирования, или только начинающего его учить, этот ответ не совсем понятный. Поэтому если можно, то объясните, как с помощью Visual Basic можно передавать данные на php.
[Ответить]
Вопросы, ответы на которые не были получены

40/ Здраствуйте ! У меня к вам будет один вопрос. Можно ли на ВБ (у меня установлена 6-я версия программы) сделать поиск подключенных компьютеров по локальной сети.Мне нужно узнать их ай-пи адрес и желательно имя компьютера. Я начинающий программист, если можно, обьясните более подробно. Заранее спасибо [Ответить]
54/ Как сделать турнирную таблицу (Как в футболе). Самое главное - это сортировка. Заранее спасибо! [Ответить]
57/ Здравствуйте. Уважаемы програмисты, я не программирую на VB. Недавно появилась задачка, которую я предполагаю как можно решить, но не знаю как реализовать. Исходные данные. Есть сетевой принтер с возможностью двухсторонней печати. Пользователи работают с MS Word. На печать посылаются задания из n листов. При этом, листы с 1 по n-2 должны быть напечатаны с одной стороны. Лист n-1 является последним листом документа, а лист n оборотной стороной листа n-1. Предпологаемое решение. По нажатию кнопки "Печать1" из переменной "Количество листов в документе" извлекается заначение n и если n<2 выводится на экран сообщение "Печать с оборотом не возможна" и производится выход из программы, если n>2 вызывается на исполнение функция печати, которой в параметрах передается: 1. Печатать листы с 1 по n-2; 2. Печатать без оборота. Вызывается на исполнение функция печати, которой в параметрах передается: 1. Печатать листы n-1, n; 2. Печатать с оборотом. При этом желательно сделать так, чтобы между вызовами функций печати в очередь печати не проскочило какое-нибудь задание. Естественно, все это оформить в виде макроса. Прошу Вас помочь мне. [Ответить]
62/ Здравствуйте уважаемуе программисты. Подскажите принцип работы с объектом phone. Вопрос жизни и смерти. [Ответить]
63/ Здравствуйте! Как сделать столбец для таблицы с помощью VB который будет показывать номера кварталов с min зарплатой(в таблице 4 квартала). Другой столбец - Динамика изменения средней зарплаты по кварталам (рост, падение, колебание, постоянно)\ нужно найти среднее знаение среди записей каждого отдела и чтобы написал динамику изменени, то что напискано в скобках, одно слово. [Ответить]
67/ Здравствуйте! У меня к Вам два вопроса по VBA. 1. Мне часто приходится выполнять расчеты в Excel по формулам. Каким образом можно организовать вычисление в цикле так, чтобы после каждого следующего обращения формулы к ячейке X ее содержимое изменялось бы с определенным шагом? 2. При поиске в таблице базы данных какого-либо значения я пользуюсь формулами "ВПР" или "ГПР". Как можно сделать, чтобы при нахождении приближенного значения функция возвращала наименьшее из наибольших значений в строке или столбце списка, а не наибольшее из наименьших, как заложено в формулах? Заранее благодарю. Александр. [Ответить]
71/ Например есть соединение с интернетом и локальной сетью - как можно средствами VB6 узнать кол-во принятых и отправленых байт? Меня интересует конкректный пример, но можно хоть что-нибудь - если это вообще возможно. Заранее благодарю. [Ответить]
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 [Ответить]
80/ Как прописать на кнопку запуск Microsoft Query? [Ответить]
88/ Здравствуйте. У меня такой вопрос: можно ли из VB послать команду так, чтобы включилась удалённая машина в сети, на которой включен WakeUp on LAN. Если да, то как? За ранее спасибо за оказанную помощь! [Ответить]
89/ Привет! Я хочу в excel сделать архив моих дисков... Мне нужно сделать кнопку, по нажатию которой будет появлятся диалоговое окно добавления нового диска... Как это можно сделать? В программинге я пока не очень шарю... Всем спасибо! [Ответить]
90/ Привет всем. Нужно с помоью программы отправлять данные на вебстраницу, а именно отправить номер телефона и SMS сообщение на страницу php в интернете. Помогите пожалуйста. [Ответить]
91/ Как записать данные из Excel-таблицы в DBF-файл? [Ответить]
Полученные ответы


49/Тут такая проблема... Я собрался изучить базы данных, а вот хелп не могу найти, в частности по MSH FlexGrid, если у вас есть хелп по контролам вы бы не смогли бы мне прислать или подсказать как с ним работать. Зарание благодарю!!!! [Ответить]

Отвечает: Филатов Евгений
В WINDOWS (у меня W2000 в каталоге WINNT\HELP)
имеется файл MSHFLX98.CHM (длина 130k)
в котором полностью описан MSHFlexGrid Control

Оценка за ответ: 4
52/Привет всем! подскажите как на VB произвести чтение и запись данных с LPT порта Заранее благодарен, Константин. [Ответить]

Отвечает: Pl@yer
RenegadeMS MS - неправ. С помощью приведенного им кода можно записывать и читать только ФАЙЛЫ. В частности с помощью приведенного им кода мы запиываем (создаем) ФАЙЛ LPT!

Для записи и чтения данных с LPT порта неоходимо подключить библиотеку: inpout32.dll (или любую аналогичную):

Option Explicit
Private Declare Function Inp Lib "inpout32.dll" _
Alias "Inp32" (ByVal PortAddress As Integer) As Integer 'для чтения
Private Declare Sub Out Lib "inpout32.dll" _
Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer)'для записи

А далее все просто:

Запись:

Private Sub Command1_Click()
Out &H378, 15 'отправляем на порт число 15
End Sub

Чтение:

Private Sub Command1_Click()
Out &H37A, 32' настраиваем порт на в режим приема
Text1.Text = Inp(&H378) ' считываем значение, и записываем его в текстовое поле
End Sub

Библиотека прикреплена. Скачать >>>

Оценка за ответ: 5
70/Здраствуйте, подскажите пожалуйста, как наложить на большую картинку меньшую по определенным координатам, при этом результат сохранить в графический файл (bmp). [Ответить]

Отвечает: Stormbringer
Последовательность такова:
1. Ставишь свойство контрола PictureboxName.AutoRedraw = True;
2. Ставишь свойство контрола PictureboxName.AutoSize = True;
3. Присваиваешь свойству Picture контрола каритнку б'ольшего размера;
4. Рисуешь методом PictureboxName.PaintPicture картинку меньшего размера(с
координатами которые тебе нужны);
5. Сохраняешь все это дело процедурой SavePicture;

Пример:
'Создайте новый порект EXE и поместите на форму Form1 Picturebox с именем
Picture1.
'поместите код внутри процедуры Form_Load

Dim p1 As IPictureDisp
Dim p2 As IPictureDisp
'Подкорректируйте пути к картинкам:
' p1 - б'ольшая по размеру картинка;
' p2 - меньшая.

Set p1 = LoadPicture("C:\windows\Рабочий стол\1.bmp")
Set p2 = LoadPicture("C:\windows\Рабочий стол\2.bmp")

Picture1.AutoSize = True
Picture1.AutoRedraw = True


Picture1.Picture = p1
Picture1.PaintPicture p2, 100, 100, p2.Width, p2.Height

'Смените путь в следующей строке на необходимый вам.
SavePicture Picture1.Image, "C:\windows\Рабочий стол\test.bmp"
'==========================

Оценка за ответ: 5
78/Предлагаю следующую проблему к обсуждению: как встроить диалоговое окно в метод класса в ActiveXDLL и получить с его помощью данные? Вот пример:
Public Function GetUserChoice$() ‘метод класса
MyForm.Show vbModal ‘диалоговое окно для получения данных от пользователя
‘Здесь возможна обработка данных
‘…
‘… GetUserChoice = куда сохраняли ввод
‘ см.обработчик OnClick ниже End Function Обработчик события OnClick для кнопки на диалоговой форме MyForm содержит такой код:
Private Sub Command1_Click() сюда сохраняем ввод = Text1.Text Unload Me End Sub Проблема,собственно, состоит в том,как сохранить введенные данные и вернуть их в метод.Все перепробовал (глобальные переменные,свойства вспомогательного класса итд.) –ничего не работает,форма как будто существует сама по себе,в глухой изоляции и в упор не видит ни переменных,ни классов в других модулях.Складывается такое впечатление,что в ActiveXDll в VB вообще нет поддержки визуальности. К слову, с этой проблемой я обращался за помощью к нескольким «профессиональным» программистам (или тем,которые заявляли себя таковыми) на VB,но ни один из них не ответил.Видимо,ответить было нечего ;).
[Ответить]

Отвечает: Stormbringer
Если я правильно понял, это что тебе нужно. Скачать пример >>>

Оценка за ответ: 4
81/Здравствуйте Друзья, не работает CommonDialog пишет license information for this component not foundю You do not have an appropriate license to use this functionainality in the design environment. Как исправить помогите [Ответить]

Отвечает: Филатов Евгений
Перевод из MSDN, полная информация в разделе
INFO: Troubleshooting Application Wizard Error Messages
--------------------------------------------------------------------------------
Данная информация применима к приложениям:
Microsoft Visual Basic Learning, Professional, and Enterprise Editions for Windows, versions 5.0, 6.0
--------------------------------------------------------------------------------

Общее
Когда Вы используете Application Wizard в Microsoft Visual Basic,
возможны следующие ошибки:

60: Object variable or with block variable not set

60: Method '~' of object '~' not found

CreateChildForm: License information for this component not found.
You do not have the appropriate license to use this functionality in the design environment.

Детальная информация:
Эта ошибка возникает, когда ActiveX компонент неудачно
зарегистрирован.
Для решения проблемы, важно определить, какой компонент вызывает
ошибку, и удостовериться, что он был корректно зарегистрирован.

Пошаговая процедура

Список компонентов, которые не всегда корректно регистрируются:
Object 50 : ComDlg32.ocx
Object 60 : MSComCtl.ocx
Object 165 : RichTx32.ocx
CreateChildForm : MSStdFmt.dll

1. Отмените регистрацию компонента, используя RegSvr32.exe.
Для этого выполните следующую команду:

RegSvr32 /u C:\Windows\System\COMDLG32.OCX

2. Заново зарегистрируйте компонент:

RegSvr32 C:\Windows\System\RICHTX32.OCX

3. Запустите утилиту присвоения лицензий, чтобы удостовериться, что
лицензия для Microsoft Visual Basic установилась должным образом

4. Запустите приложение, чтобы удостовериться в решении проблемы.


Приложение
Для более детальной информации, обращайтесь в Microsoft Knowledge Base:

FILE: VB6Cli.exe Fixes License Problems with Visual Basic 6.0
http://download.microsoft.com/download/vb60ent/Sample30/1/W9XNT4/EN-US/VB6CLI.EXE
FILE: Vbc.exe Fixes VB 5.0 Control Installation Problem
(Имя файла Vbc.exe было изменено на VB5cli.exe)
http://download.microsoft.com/download/vb50pro/UtilA1/1/WIN98/EN-US/VB5cli.exe

Оценка за ответ: 4
86/Подскажите как запустить программу на удалённом компе? [Ответить]

Отвечает: Pl@yer
Я нашел два решения:

1. Пишем программу сканирующую диапазон IP адресов:

1. Задаем диапазон. Можно задать диапазон в ручную, а можно создать на основе IP машины, на которой запущена программа
2. Загоняем его в цикл. В теле цикла пытаемся соединиться с IP через 135 (139) порт, с помощью winsock. И если соединение возможно, то добавляем IP в список ON-line машин.
3. Имя машины. Если нужно, узнаем имя машины (и доп. информацию) через NetBIOS.

Этот способ обладает рядом недостатков:
1. Низкая скорость сканирования.
2. Невозможно определить машину если на ней закрыт порт, или установлен firewall.

2. Этот способ мне понравился больше: используется стандартная команда ping.
Неплохо применен в программе System Protect, ее исходники прикреплены.
Думаю разобраться с ними не составит труда.
* Рекомендую увеличить время тайм-аут, для более корректной работы программы.

Best regards, Pl@yer

Скачать пример >>>

Оценка за ответ: 4
87/Помогите пожалуйста, как через ADO программно подключиться к базе данных FoxPro (dbf файл) примерчик бы не помешал [Ответить]

Отвечает: Morozov A.V.
В этом примере найдешь ответ на свой вопрос. Скачать пример >>>

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

Отвечает: Курта Н. Н.
Option Explicit

Private DBfox As DAO.Database
Private RSfox As DAO.Database

----------------------------------------------------------------------------
------



Private Sub Form_Load()
Dim strCatalog As String ------ ' Имя каталога где хранится файл
*.dbf ( на пример - C:\Мои документы )
Dim strFiles As String --------' Имя файла *.dbf ( на
пример - prays.dbf )
Set DBfox = OpenDatabase(strCatalog, True, False, "FoxPro 3.0;")
Set RSfox = DBfox.OpenRecordset("SELECT D FROM " & strFiles &
"'")
. . .
. . .

End Sub

Оценка за ответ: 4
92/Как сделать чтобы кнопка зыкрытия формы была недоступной в то время, как кнопка сворачивания формы отображалась. Я знаю, что это возможно сделать, но меня НЕ(!) интересуют программные коды на 1,5 страницы! Если кто-то знает что-то такое, что помещается в несколько строк сообщайте. Спасибо. [Ответить]

Отвечает: Stormbringer
Если в несколько строк нужно то тут наверно один вариант:
В событие Form_Unload вписать строку Cancel = True

PS: Это не самый лучший вариант т.к. пользователь может нажать на кнопку с крестиком, а форма не закроется!

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

Отвечает: Pl@yer
Парни, я вами поражаюсь...
Это элементарно!:

Option Explicit
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, _
ByVal wFlags As Long) As Long
Const MF_BYPOSITION = &H400&

Public Sub RemoveCloseMenu(frm As Form)
Dim hSysMenu As Long
hSysMenu = GetSystemMenu(frm.hwnd, 0)
Call RemoveMenu(hSysMenu, 6, MF_BYPOSITION)
Call RemoveMenu(hSysMenu, 5, MF_BYPOSITION)
End Sub

Private Sub Form_Load()
RemoveCloseMenu Me
End Sub

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

Отвечает: Bourn None
Private Declare Function GetSystemMenu Lib "user32"
(ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function DeleteMenu Lib "user32"
(ByVal hMenu As Long, ByVal nPosition As Long, ByVal
wFlags As Long) As Long
Private Declare Function DrawMenuBar Lib "user32"
(ByVal hwnd As Long) As Long
Const SC_CLOSE = &HF060
Const MF_BYCOMMAND = &H0
Public Sub DisableXbutton(ByVal frmHwnd As Long)
Dim hMenu As Long
hMenu = GetSystemMenu(frmHwnd, 0&)
If hMenu Then
Call DeleteMenu(hMenu, SC_CLOSE, MF_BYCOMMAND)
DrawMenuBar (frmHwnd)
End If
End Sub

Private Sub Form_Load()
DisableXbutton (Me.hwnd)
End Sub'Вариант 2

Private Declare Function GetSystemMenu Lib "user32"
(ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function RemoveMenu Lib "user32"
(ByVal hMenu As Long, ByVal nPosition As Long, ByVal
wFlags As Long) As Long
Const MF_BYPOSITION = &H400&
Public Sub DisableCloseButton(F As Form)
Dim hSysMenu As Long
hSysMenu = GetSystemMenu(F.hwnd, 0)
RemoveMenu hSysMenu, 6, MF_BYPOSITION
RemoveMenu hSysMenu, 5, MF_BYPOSITION
End Sub
Private Sub Command1_Click()
Call DisableCloseButton(Form1)
End Sub

Оценка за ответ: 5
93/Как определить запущена ли та или иная программа в Windows? [Ответить]

Отвечает: Bourn None
'код формы

'Функция, которая будет убивать окно. В качестве
аргумента требует хэндл окна.
'Причем, не обязательно полное название
Private Sub Command1_Click()
CloseProg "Текстовый документ.txt - Блокнот"
End Sub

'код модуля

Public Const PROCESS_TERMINATE = &H1
Public Const WM_QUERYENDSESSION = &H11
Public Const WM_ENDSESSION = &H16
Public Declare Function GetWindowThreadProcessId Lib
"user32" (ByVal hwnd As Long, lpdwProcessId As Long)
As Long
Public Declare Function OpenProcess Lib "kernel32"
(ByVal dwDesiredAccess As Long, ByVal bInheritHandle
As Long, ByVal dwProcessId As Long) As Long
Public Declare Function TerminateProcess Lib
"kernel32" (ByVal hProcess As Long, ByVal uExitCode As
Long) As Long
Public Declare Function GetWindowText Lib "user32"
Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal
lpString As String, ByVal cch As Long) As Long
Public Declare Function EnumWindows Lib "user32"
(ByVal lpEnumFunc As Long, ByVal lParam As Long) As
Long
Public Declare Function SendMessage Lib "user32" Alias
"SendMessageA" (ByVal hwnd As Long, ByVal wMsg As
Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function FindWindow Lib "user32" Alias
"FindWindowA" (ByVal lpClassName As String, ByVal
lpWindowName As String) As Long
Public Const WM_CLOSE = &H10
Dim strCaptions() As String ' Здесь будут лежать
заголовки всех найденных окон
Dim lngHandle() As Long ' А здесь все хэндлы этих окон
Public Function CloseProg(strCaption As String) As
Boolean
Dim iCount As Integer
Dim i As Integer
Dim Pos As Integer
Dim lngEnum As Long
ReDim strCaptions(0)
' Обнуляем массив от возможных прошлых результатов
ReDim lngHandle(0)
' то же чистим
lngEnum = EnumWindows(AddressOf Callback1_EnumWindows,
0)
' вот эта функция будет циклически вызвана столько
раз,
' сколько будет найдено окон
' т.е. после ее выполнения оба массива будут наполнены
For i = 0 To UBound(strCaptions) ' перебираем эти
массивы
Pos = InStr(1, strCaptions(i), strCaption,
vbTextCompare) ' ищем строку, которая должна
характеризовать
' искомое окно
If Pos > 0 Then
'SendMessage lngHandle(i), WM_CLOSE, 0, 0 ' Это
команда окну честно закрыться.
'SendMessage lngHandle(i), WM_ENDSESSION, 0, 0 ' Это
команда окну честно закрыться.
SendMessage lngHandle(i), WM_QUERYENDSESSION, 0, 0 '
Это команда окну честно закрыться.
' Заметьте будут закрыты все окна с таким заголовком
iCount = iCount + 1
End If
Next
If iCount >= 1 Then
CloseProg = True ' работа выпонена
Else
CloseProg = False 'такое окно не найдено
End If
End Function
Public Function Callback1_EnumWindows(ByVal hwnd As
Long, ByVal lpData As Long) As Long
Dim cnt As Long
Dim rttitle As String * 256
cnt = GetWindowText(hwnd, rttitle, 255) ' ищем
следующее окно
If cnt > 0 Then ' нашли, тогда добавляем элемент в
массивы
ReDim Preserve lngHandle(UBound(strCaptions) + 1)
ReDim Preserve strCaptions(UBound(strCaptions) + 1)
strCaptions(UBound(strCaptions)) = Left$(rttitle, cnt)
lngHandle(UBound(lngHandle)) = hwnd
End If
Callback1_EnumWindows = 1 ' продолжаем перебирать
End Function
Public Sub KillProcess(ByVal hwnd As Long)
Dim pID As Long
Dim hProc As Long
GetWindowThreadProcessId hwnd, pID
hProc = OpenProcess(PROCESS_TERMINATE, False, pID)
Call SendMessage(hwnd, WM_QUERYENDSESSION, 0, 1)
Call SendMessage(hwnd, WM_ENDSESSION, -1, 1)
TerminateProcess hProc, 0
CloseHandle hProc
End Sub

Оценка за ответ: 5
Обучение для новичков

На данный момент раздел приостановлен в связи с переездом на другой домен. Приносим свои извинения.
Задать вопрос>>>

Компоненты, контролы, исходники

M означает, что данный архив содержит только модуль.

Примеры и модули
Ссылка
Описание
Ссылка
Описание
about.zip Стандартное окно About в VB (4.2KB) OpenCD.zip Управление CD (M) (1KB)
anigif.zip Анимация в VB (5KB) progressbar.zip Progress Bar в трее (4KB)
appprioritet.zip Устанавливаем приоритет в приложении (1.8KB) randomform.zip Разные формы (M) (2KB)
biosinfo.zip Просматривает ифрормацию о БИОСе (5.5KB) RandomForms.zip Разные формы (1KB)
cd-rom.zip Работа с CD-ROM (1.6KB) Reestr.zip Работа с реестром (2.5KB)
commondialog.zip Диалог открытия файла без контрола (1.9KB) registry.zip Регистрация в реестре (9.5KB)
coolvbmenu.zip Клевое меню в VB (14KB) resource.zip Просмоторщик ресурсов проги (46.6KB)
disableendtasks.zip Запрет нажатия Ctrl+Alt+Del (1.8KB) RU_EN.zip Переключение языка программно (M) (1KB)
File_size.zip Определяет размер файла (M) (1KB) sharp.zip Пример часиков (2.1KB)
fso.zip Работа с FSO (File System Object) (101KB) ShutDown.zip Шатдаун компьютера (M) (1KB)
HDD_info.zip Информация о диске (M) (1KB) sort.zip Сортировка массива за 0.2 секунды! (M) (1KB)
hddserial.zip Серийный номер диска (24KB) Standart.zip Стандартные диалоги и окна (M) (1KB)
Hibernate.zip Выключение и перезагрузка ПК (M) (1KB) systrayicon.zip Иконка в трее (21KB)
lines2000.zip Пример игры Lines (74KB) transparent.zip Прозрачность окна (M) (1KB)
manifest.zip ХР стиль в аппликухе (2.5KB) Tray_icon2.zip Икнока в трее 2 (M) (1KB)
mdlMain.zip ХР стиль в приложении (M) (1KB) Tray_icon.zip Иконка в трее (M) (1KB)
winwordorfo.zip Проверка орфографии с помощью Word'а (1.9KB)    

Компоненты:

Ссылка
Описание
Ссылка
Описание
Кнопка с текстовым полем Двухцветный прогресс бар
Электронные часы Бегущая строка
Компонент редактирования даты Иконка в трее
Кнопка в стиле XP, Office, и др. TextBox вмещающий более 65КБ текста
Прогресс Бар в классическом стиле Вертикальный лейбл
Кнопка Плейер
Компонент для создания гиперссылок Программное создание иконки NEW!!!

Статья

Есть вопросы относительно статьи, задавайте!

Андрей прислал вот такую стаью. Спасибо за статью, Андрей!

Основное отличие EXE-файлов созданных Delphi и Visual Basic

Существует два важных различия между файлами EXE, созданными в Delphi, и файлами EXE, созданными в Visual Basic. Delphi создает чисто машинный код, непосредственно исполняемый компьютером, в то время как VB транслирует исходный код в промежуточную форму (р-код). Файл EXE, сгенерированный VB, в действительности является программой-интерпретатором р-кода с добавленным в конце р-кодом программы пользователя.

"Библиотека времени выполнения" (run-time library) стандартных функций для всех программ VB хранится в файле VBRUN300.DLL. Каждая программа VB, попавшая к конечному пользователю, должна включать этот файл, либо приходится расчитывать, что такой файл у пользователя уже есть. Дистрибутивный комплект программы должен также содержать файлы VBX для каждого управляющего средства VB, не включенного в VBRUN300.DLL.

Программы Delphi включают необходимую часть библиотеки времени выполнения Delphi, а также используемые компоненты. В результате EXE-файл Delphi обычно больше по объему, чем эквивалентный EXE-файл VB, но он не зависит ни от каких внешних файлов.

Дружественные сайты
http://www.delphi.int.ru - Программирование на DELPHI: Вопросы и Ответы читателей; Статьи по программированию на Delphi, других языках программирования, графике (OpenGL/DirectX); Компоненты, Пакеты, Plug-in'ы, Модули для Delphi; Исходники программ, игр; Документация и ссылки на документацию по программированию; Рассылка, в которой каждый программист найдёт что-то полезное!

http://infomania2004.webhost.ru. Этот сайт создан для того, чтобы вы могли получить интересующую вас информацию с минимальными затратами сил и времени. Если вы не нашли здесь нужной информации, оставьте заявку...">

Все о Динамо - www.DinamoMania.ru На этом сайте вы найдете все новости и интервью ВСЕХ видов спорта Динамо. Также на сайте есть таблицы всех видов спорта. Видео и Фото материалы. И все это на одном сайте - www.DinamoMania.ru Это первый и единственный сайт, который освещает все виды одного клуба.
Юмор

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

***

- Подсудимый, вы должны говорить правду, только правду и ничего кроме правды!
- Правда, правда, правда, правда, правда!

:))

Наши партнеры

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

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


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

В избранное