Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Disable CD AutoRun vb Добавлено: 01.04.04 21:20  

Автор вопроса:  Sur | Web-сайт: sur.hotbox.ru/ | ICQ: 1249088 

Поделитесь примером: нужно временно отключить автозапуск CD (win98-XP), пока работает моя программа.

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #1 Добавлено: 02.04.04 11:44

Вообще отключить/включить можно программно или через реестр.

Первый вариан есть на С++, я его еще не переводил.

Второй - через работу с реестром, элементарно реализуется на VB.

Это

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer

NoDriveAutoRun и NoDriveTypeAutoRun. К примеру, выставив NoDriveAutoRun в десятицчное 6 (двоичный код 0110), отключишь автозапуск дисков B и C. Т.о. При запуске программы отключай, при выгрузке - включай снова.

Можешь, конечно, заморочиться и с сообщениями, но так проще.

Ответить

Номер ответа: 2
Автор ответа:
 Sur



ICQ: 1249088 

Вопросов: 10
Ответов: 304
 Web-сайт: sur.hotbox.ru/
 Профиль | | #2
Добавлено: 02.04.04 18:50

Манипуляции с реестром не пройдут без перезагрузки.

>Можешь, конечно, заморочиться и с сообщениями

Как раз с сообщениями и хочется замарочиться.

На С и Дельфи это делается элементарно. Перехват сообщения QueryCancelAutoPlay и возврат ответа да/нет

Вот на VB как ответ послать?

Ответить

Номер ответа: 3
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #3
Добавлено: 02.04.04 20:27

Если знаешь как это реализовать на С, дельфи, так что не ужели нельзя того же проделать на VB ??? не верю...

Ответить

Номер ответа: 4
Автор ответа:
 Sur



ICQ: 1249088 

Вопросов: 10
Ответов: 304
 Web-сайт: sur.hotbox.ru/
 Профиль | | #4
Добавлено: 02.04.04 22:01

Да я ж не профи программист. Но инетом пользоваться умею:

http://www.fawcette.com/vsm/2002_05/magazine/columns/qa/listing2.aspx

Private Declare Function RegisterWindowMessage _

Lib "user32" Alias "RegisterWindowMessageA" _

(ByVal lpString As String) As Long

Private Const RegMsg As String = _

"QueryCancelAutoPlay"

Private m_RegMsg As Long

Private Sub Check1_Click()

With Check1 'Style = 1 - Graphical

If .Value = vbChecked Then

.Caption = "Release to Allow AutoPlay"

Else

.Caption = "Depress to Suppress AutoPlay"

End If

End With

End Sub

Private Sub Form_Load()

Check1.Value = vbChecked

' Determine custom message value, and

' hook message stream of this form.

m_RegMsg = RegisterWindowMessage(RegMsg)

Call HookWindow(Me.hWnd, Me)

End Sub

Private Sub Form_Unload(Cancel As Integer)

Call UnhookWindow(Me.hWnd)

End Sub

Friend Function WindowProc(hWnd As Long, _

msg As Long, wp As Long, lp As Long) As Long

Dim Result As Long

Select Case msg

Case m_RegMsg ' QueryCancelAutoPlay

' TRUE: cancel AutoRun

' *must* be 1, not -1!

' FALSE: allow AutoRun

Result = Check1.Value

Case Else

' Pass along to default window procedure.

Result = InvokeWindowProc( _

hWnd, msg, wp, lp)

End Select

' Return desired result code to Windows.

WindowProc = Result

End Function

Работает!

Ответить

Номер ответа: 5
Автор ответа:
 Pantalone



Вопросов: 32
Ответов: 104
 Профиль | | #5 Добавлено: 03.09.06 18:37
Вот блин, окно должно быть обязательно в фокусе чтобы отрубить запуск компакта.
Что делать?

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам