Блокировка работы пользователя во время выполнения программы

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Tathagata
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 26.07.2004 (Пн) 14:56

Блокировка работы пользователя во время выполнения программы

Сообщение Tathagata » 01.12.2004 (Ср) 12:28

Подскажите, господа.
Нужен, собственно, способ реализации сабжа.
При этом интересно решение как для vb, так и для vbscript.

Snussi
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 151
Зарегистрирован: 21.07.2004 (Ср) 18:08
Откуда: Москва, Россия

Сообщение Snussi » 01.12.2004 (Ср) 13:04

Делаем так
Код: Выделить всё
sub SuperWork
    frmUser.enabled=false ' Блокируем форму, в которой пользователь тыкает кнопки и все другое

    doevents ' На всякий случай, чтобы это применилось к форме.

   ' ....   Наши операции

   frmUser.enabled=true ' Обратно разблокируем

end sub


В VBScript - а зачем (по моему, это для ASP язык)

Кажись так :)

Tathagata
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 26.07.2004 (Пн) 14:56

Сообщение Tathagata » 01.12.2004 (Ср) 18:15

Snussi писал(а):Делаем так
Код: Выделить всё
sub SuperWork
    frmUser.enabled=false ' Блокируем форму, в которой пользователь тыкает кнопки и все другое
    doevents ' На всякий случай, чтобы это применилось к форме.



Не совсем то. Хотелось бы что-то вроде радикального

rundll32 user,enableoemlayer
rundll32 user,disableoemlayer

При входе пользователя в систему запускается сценарий который выполняет ряд действий. Так вот, хотелось бы во время выполнения сценария не дать возможноть пользователю запускать приложения и работать в них.

В VBScript - а зачем (по моему, это для ASP язык)
Кажись так :)


Ха...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 05.12.2004 (Вс) 18:33

Это можно реализовать через хук типа WH_JOURNALPLAYBACK и проигрывая "пустую" запись. Я так делал, но готового кода под руками нет.
Изображение

Tathagata
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 26.07.2004 (Пн) 14:56

Сообщение Tathagata » 07.12.2004 (Вт) 13:46

А можно ли хуки заставить работать в Vbscript?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 07.12.2004 (Вт) 13:59

Можно написать ActiveX DLL, в котором будет реализован хук, и вызывать эту DLL из кода VBScript. А в чистом виде в VBS недоступны API-функции.
Lasciate ogni speranza, voi ch'entrate.

Tathagata
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 26.07.2004 (Пн) 14:56

Сообщение Tathagata » 08.12.2004 (Ср) 10:05

Тогда проще использовать dynwrap.dll
чем писать самому.

SAS
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 101
Зарегистрирован: 21.06.2005 (Вт) 0:30
Откуда: Петропавловск-Камчатский

Сообщение SAS » 02.08.2005 (Вт) 8:11

Tathagata писал(а):Тогда проще использовать dynwrap.dll
чем писать самому.

Может поможете мне использовать этот dynwrap.dll?
http://bbs.vbstreets.ru/viewtopic.php?p=140470#140470

JohnCR
Обычный пользователь
Обычный пользователь
 
Сообщения: 75
Зарегистрирован: 14.06.2005 (Вт) 19:03

Сообщение JohnCR » 02.08.2005 (Вт) 11:23

Можно попробовать сделать так:
Код: Выделить всё
'У формы можно поставить BorderStyle = 0
'и Startup Position = 2
'А фоном картинку какую-нить красяфскую...
Private Declare Function BlockInput Lib "User32" (ByVal fBlock As Long) As Long
Private Declare Sub SetWindowPos Lib "User32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long)
Private Const HWND_TOPMOST = -1
Private Const SWP_NOSIZE = &H1
Private Const SWP_NOMOVE = &H2
Private Const SWP_SHOWWINDOW = &H40
Private Sub Form_Load()
Dim Lab As VB.Label
    App.TaskVisible = False
    Set Lab = Controls.Add("VB.Label", "Lab1", Me)
    'сделаем окно постоянно активным
    SetWindowPos Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
    Lab.Move 0, 0
    Lab.Font.Size = 36
    Lab.Caption = "Please wait..."
    Lab.AutoSize = True
    Lab.Visible = True
    Me.Width = 5000
    Me.Height = 1500
    BlockInput True 'блокируем клавиатуру и мышку
    'выполняем то, что нужно
    '...
    '
    BlockInput False 'включаем клавиатуру и мышку
    'End
End Sub

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 02.08.2005 (Вт) 13:01

BlockInput
Работает до первого нажатия ALT+CTRL+DELETE. Т.е. пользователь жмет один раз 3 клавиши и продолжает хозяйнячать...
А я все практикую лечение травами...

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 02.08.2005 (Вт) 13:12

Я знаю как заблокировать клаву, но код на Делфи, а переводить лень. Могу скинуть.

Ну а мышь заблокировать вообще легко (этот способ ломотский конечно, но работает) - по таймеру (interval=1) перемещай курсор в нижний правый угол экрана... :lol:
А я все практикую лечение травами...

JohnCR
Обычный пользователь
Обычный пользователь
 
Сообщения: 75
Зарегистрирован: 14.06.2005 (Вт) 19:03

Сообщение JohnCR » 02.08.2005 (Вт) 13:14

В 9х Ctrl+Alt+Del можно отключить, а в НТ это никак не обойти, разве что развернуть форму на весь экран, чтобы ничего не было видно ).

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 02.08.2005 (Вт) 13:16

Но можно свою прогу из Диспетчера убрать (даже в XP)...
А я все практикую лечение травами...

JohnCR
Обычный пользователь
Обычный пользователь
 
Сообщения: 75
Зарегистрирован: 14.06.2005 (Вт) 19:03

Сообщение JohnCR » 02.08.2005 (Вт) 13:20

Если окно диспетчера задач будет закрыто твоей программой, это будет проблематично сделать. )

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 02.08.2005 (Вт) 13:31

Если окно диспетчера задач будет закрыто твоей программой, это будет проблематично сделать. )

Попробуй в ХР нажать три клавиши. Что ты видишь? Ты говоришь о перекрытии своей формой окна системного Диспетчера или Безопасность Windows? Пользователь все равно сможет вызвать одно из вышеперечисленных окон, и если свою прогу не скрыть из списка процессов (или не заблокировать Диспетчер, но ее можно будет найти какой нибудь другой утилитой), то пользователь сможет помешать работе проги (закроет ее например). Вопрос стоит в другом (как я понял): нужно заблокировать все способы ввода информации (клава, мышь) и заблокировать Диспетчер...
Последний раз редактировалось Twister 02.08.2005 (Вт) 13:33, всего редактировалось 1 раз.
А я все практикую лечение травами...

JohnCR
Обычный пользователь
Обычный пользователь
 
Сообщения: 75
Зарегистрирован: 14.06.2005 (Вт) 19:03

Сообщение JohnCR » 02.08.2005 (Вт) 13:34

Конечно, я имею ввиду перекрытие своей программой окна диспетчера (taskmgr.exe). Не увидев его, не сможешь ничего завершить...

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 02.08.2005 (Вт) 13:34

А если у юзера стоит не диспетчер, а, скажем, ProcessExplorer от Sysinternals (довольно распространенное явление)?
Нет меня больше

JohnCR
Обычный пользователь
Обычный пользователь
 
Сообщения: 75
Зарегистрирован: 14.06.2005 (Вт) 19:03

Сообщение JohnCR » 02.08.2005 (Вт) 13:36

A.A.Z.
Какая разница? Счас пример накатаю... )) Пять сек.. ))
Последний раз редактировалось JohnCR 02.08.2005 (Вт) 13:38, всего редактировалось 1 раз.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 02.08.2005 (Вт) 13:37

А если у юзера стоит не диспетчер, а, скажем, ProcessExplorer от Sysinternals (довольно распространенное явление)?


Посмотри этот примерчик, никакой ProcessExplorer не найдет прогу...
А я все практикую лечение травами...

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 02.08.2005 (Вт) 13:39

Это я видел :) Речь-то у вас ведь вроде шла о том, что не давать юзеру его _открыть_ :)
Нет меня больше

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 02.08.2005 (Вт) 13:40

Речь-то у вас ведь вроде шла о том, что не давать юзеру его _открыть_

Не давать открыть или не показать процесс в списке, какая разница - главное результат... :wink:
А я все практикую лечение травами...

JohnCR
Обычный пользователь
Обычный пользователь
 
Сообщения: 75
Зарегистрирован: 14.06.2005 (Вт) 19:03

Сообщение JohnCR » 02.08.2005 (Вт) 13:46

Вот, завершайте: )
Вложения
block.rar
Ставни.
(3.72 Кб) Скачиваний: 55

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 02.08.2005 (Вт) 13:48

Жаль не могу ЩАС посмотреть - басик не стоит, что там?
А я все практикую лечение травами...

JohnCR
Обычный пользователь
Обычный пользователь
 
Сообщения: 75
Зарегистрирован: 14.06.2005 (Вт) 19:03

Сообщение JohnCR » 02.08.2005 (Вт) 13:50

там ехе есть )

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 02.08.2005 (Вт) 13:52

аааа...
:oops: ща заберу...
А я все практикую лечение травами...

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 02.08.2005 (Вт) 14:10

2 JohnCR
Знаешь - просто, но со вкусом!!! Я хочу сказать что мне пришлось комп перегрызть чтоб выключить эту пакость... :twisted:

Я как раз сейчас занимаюсь разработкой своего Диспетчера, надо в нем предусмотреть защиту от подобных фишек...
А я все практикую лечение травами...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 69

    TopList