Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - Visual Basic 2008

Ответить
Настройки темы
VBA - Visual Basic 2008

Аватара для Uzvern

Старожил


Сообщения: 161
Благодарности: 4


Конфигурация

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: Uzvern
Дата: 24-04-2008
Описание: Забыл дописать название темы. Прошу простить.
Подскажите как сделать так : допустим, если нажать на форме правой кнопкой мыши, то вылетет MsgBox(123), а если нажать левой, то MsgBox(098).

Спасибо за внимание.

>>Блин, не дописал в названии темы : Действие при нажатии правой кнопки

Отправлено: 17:47, 24-04-2008

 

Аватара для Uzvern

Старожил


Сообщения: 161
Благодарности: 4

Профиль | Сайт | Отправить PM | Цитировать


Вообщем, ещё одна трабла : Необходимо написать прогу, которая бы удаляла файлы по маске (*а.txt) , либо в имени которых есть только цифры (*цифры*.txt) или только буквы (*любые буквы*.txt)

Просто решил немного поэсперементировать с создниями файла, создал прогу
Код: Выделить весь код
Public Class Form1

    Dim i = 1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Do Until i = 0
            i = i + 1
            FileOpen(1, i & ".txt", OpenMode.Append)
            PrintLine(1, "123")
            FileClose(1)
        Loop
    End Sub
End Class
после того, как она работала 30 секунд, я её остановил, создалось несколько тысяч файлов. Вот теперь хочу сделать чтобы вторая программа удаляла все эти файлы


Можно как-то выдирать значения из переменной?
Например у меня перемнная

Код: Выделить весь код
Dim i("Привет", "Hello"), z
если z =0, тогда выдирается первое значение, если z=1, выдирается второе значение. Это малый пример. мне необходимо сделать чтобы все это происходило автоматически, а не прописывать каждое значение в ручную, как например
Код: Выделить весь код
If z = 0 Then i = "Привет"

Можно ли как-то в GoTo сделать не одно действие, а несколько?

Последний раз редактировалось Uzvern, 11-05-2008 в 13:25.


Отправлено: 18:59, 10-05-2008 | #61



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Uzvern

Старожил


Сообщения: 161
Благодарности: 4

Профиль | Сайт | Отправить PM | Цитировать


Вложения
Тип файла: rar WindowsApplication1.rar
(13.3 Kb, 6 просмотров)

Цитата Admiral:
Код: Выделить весь код
Dim readValue As Object
 readValue = My.Computer.Registry.GetValue _
 ("HKEY_CURRENT_USER\Software\MyApp", "Name", Nothing)
 MsgBox("The value is " & CStr(readValue))
»
Таким образом мы вытягиваем значение из реестра. А как-то можно их добавлять или удалять? Срочно необходимо.




Вот ещё. Вообщем выклаюываю пример, помогите разобраться и дописать.

Что необходимо :
1. Когда ничего не делаешь с главным окном, то иконка в трее и контекстное меню работают нормально. Если чуть потеребить окно, то после нажатия на иконку в трее правой кнопкой, появляются какие-то дополнительные штуки в пуске. Дак вот и и необходимо как-то убрать.

2. Когда вызываем контекстное меню, то его невозможно закрыть, только если выбрать какой-то компонент, или выбрать другое окно. Любое нажатие вне контекстного меню игнорируются. Это тоже надо как-то исправить.

Последний раз редактировалось Uzvern, 11-05-2008 в 18:33.


Отправлено: 18:00, 11-05-2008 | #62


Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


Можно указав GoTo на первый нужный оператор, а заним без условий написав второй нужный оператор.

Там же чуть выше указано
Цитата Admiral:
всё организовано через объект
My.Computer.Registry
... сохранимся в ...
My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\VB and VBA Program Settings\MyApp", "Version", "1")

По удалению My.Computer.Registry.LocalMachine. предлагает на выбор три способа по соответствующему назначению DeleteSubKey, DeleteSubKeyTree, DeleteValue »
К сожалению или к счастью работать с тре не приходилось как я уже говорил выше по теме, по этому практически (кодом) подсказать не смогу.

Отправлено: 18:47, 11-05-2008 | #63


Аватара для Uzvern

Старожил


Сообщения: 161
Благодарности: 4

Профиль | Сайт | Отправить PM | Цитировать


Цитата Admiral:
DeleteSubKey, DeleteSubKeyTree, »
Какая между ними разница?

Отправлено: 21:07, 11-05-2008 | #64


Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


DeleteSubKey - удаляет параметра, DeleteSubKeyTree - удаляет раздел.

Отправлено: 21:41, 11-05-2008 | #65


Аватара для Uzvern

Старожил


Сообщения: 161
Благодарности: 4

Профиль | Сайт | Отправить PM | Цитировать


Хм...как я понял, можно каким-то способом получить хэш. Как это можно организовать?

+ ещё : как можно сделать, чтобы когда открыта программа и реестр, то выбраная ветка/значение записывалось в программу?!

Как отменить закрытие формы?

как сделать чтобы она не закрывалась непонимаю.

Код: Выделить весь код
Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
        Dim i
        i = MsgBox("Выйти из программы?", MsgBoxStyle.YesNo Or MsgBoxStyle.Question, "Выйти?")
        Select Case i
            Case MsgBoxResult.No

        End Select
    End Sub
Как я понял, нужно копать где-то здесь : CancelButton, но это не точно

Последний раз редактировалось Uzvern, 17-05-2008 в 18:38.


Отправлено: 17:13, 17-05-2008 | #66


Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


Да можно, плюс от .NET
Код: Выделить весь код
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        MsgBox(Me.GetHashCode)
    End Sub
выдаст хеш запускаемого файла согласно MD5 алгоритма в виде массива 16 байтов.

Если нужен полноценный, 128 битный вывод согласно MD5 тогда его нужно написать, вот пример Calculating an MD5 Hash in VB.net
Что бы пример работал необходимо
либо включить в диапазон имён System.Security.Cryptography (про саму службу Cryptographic Services) Project - > Properties -> References -> Imported namespaces и указать собственно System.Security.Cryptography

либо добавить к проекту новый модуль Solution Explorer ->правой кнопкой мыши Add -> Module...

туда скопировать пример, добавив в начале следующую строчку кода
Imports System.Security.Cryptography
Использование в этом случаи будет таким
Код: Выделить весь код
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        MsgBox(getFileMd5(System.Windows.Forms.Application.ExecutablePath))
    End Sub
Про другие алгоритмы из этого пространства имён можно прочитать здесь
.NET Framework Class Library System.Security.Cryptography Namespace
Ещё по теме MD5 Class, MD5CryptoServiceProvider Class, HashAlgorithm.ComputeHash Method.

Не проще ли считать нужные строки из реестра самостоятельно? А то в предложенном варианте получается некий перехватчик с другого приложения, в данном случаи с Regedit.exe
Если идея перехватчика вдохновляет то тут .NET языки не лучший выбор, С++/Delphi лучше с этим справятся, так как нужно будет писать ещё драйвер хука.

Блокировка, такого никогда не писал, не было необходимости. По сути не уважения к пользователю, так как не всем такое понравится в виду того что оно ведёт себя как повисшие, если нет диалога. Самое простое что приходит на ум это повторный запуск приложения
Код: Выделить весь код
    Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
        Shell(System.Windows.Forms.Application.ExecutablePath)
    End Sub
Это по сути защита от дурака, не в обиду ни кому, так как перед Task Managerом, она всё же закроется. Но можно сразу же запускать чем-то другим, например через батник.
Боюсь такое не подойдёт, ведь результат роботы будет потерян. Об этом стоит подумать.
Не совсем, CancelButton лишь определяет что было не нажато в случаи если пользователь нажимал ESC, чаше всего в этом случаи на него вешают закрытия того диалога, на который предполагалось нажать Enter.
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:20, 17-05-2008 | #67


Аватара для Uzvern

Старожил


Сообщения: 161
Благодарности: 4

Профиль | Сайт | Отправить PM | Цитировать


Цитата Admiral:
Не проще ли считать нужные строки из реестра самостоятельно? »
А можно как-то считать все ветки и ключи реестра в программу? Например в TreeView?

Отправлено: 21:59, 17-05-2008 | #68


Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


Составив цикл и комбинировав операторы чтения из реестра. Но если ветки массивные приложение будет подтормаживать.

Отправлено: 00:27, 18-05-2008 | #69


Аватара для Uzvern

Старожил


Сообщения: 161
Благодарности: 4

Профиль | Сайт | Отправить PM | Цитировать


Как отпределить : файл или папка, т.е. например Dir("C:\Program Files\") - выводит "Это папка", если Dir("C:\boot.ini") - выводит "Это файл".
Примечание : Пути могут быть любыми.

Отправлено: 20:11, 18-05-2008 | #70



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - Visual Basic 2008

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBA - MS Visual Basic 2008 Expres Edition файлы проекта Anton Naumov Программирование и базы данных 7 14-05-2010 14:09
VBA - Visual basic 2008 Anton Naumov Программирование и базы данных 1 02-01-2010 22:35
visual basic 6 иоанн Хочу все знать 1 27-04-2009 18:51
visual basic 6 guma Программирование и базы данных 1 26-04-2007 20:41
Visual basic carlos Программирование и базы данных 1 04-08-2003 02:03




 
Переход