→ Для вступления в общество новичков и профессионалов программирования, пожалуйста нажмите здесь ...

Форум программистов: C++, Basic, Delphi, Pascal, JavaScript
Логин: Пароль:
Запомнить?  
@Mail.ru



Начать новую тему Ответить на тему  [ 1 сообщение ] 
ЕСТЬ ВОПРОС 
Автор Сообщение
Начинающий

Регистрация: 29.03.2009
Сообщения: 1

Репутация: 0 [ ? ]
Сообщение ЕСТЬ ВОПРОС
Суть вопроса такова: у меня на работе стоит сервак СИСАДМИН всегда отсутствует и он, не хороший человек, забирает ссбой клаву и мауз. Я попытался набить код на VB (Выглядит это так):
МОДУЛЬ(признаюсь содрал с инета):
Option Explicit
Public Const GWL_WNDPROC = (-4)
Private Const WM_DEVICECHANGE = &H219
Private Const DBT_DEVICEARRIVAL = &H8000&
Private Const DBT_DEVICEQUERYREMOVE = &H8001&
Private Const DBT_DEVICEQUERYREMOVEFAILED = &H8002&
Private Const DBT_DEVICEREMOVEPENDING = &H8003&
Private Const DBT_DEVICEREMOVECOMPLETE = &H8004&
Private Const DBT_DEVICETYPESPECIFIC = &H8005&
Private Const DBT_CUSTOMEVENT = &H8006&

Public Type DEV_BROADCAST_HDR
dbch_size As Long
dbch_devicetype As Long
dbch_reserved As Long
End Type

Public Type DEV_BROADCAST_USERDEFINED
dbud_dbh As DEV_BROADCAST_HDR
dbud_szName As Long
End Type

Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Sub CopyMem Lib "KERNEL32" Alias "RtlMoveMemory" (Destination As Any, ByVal Source As Long, ByVal Length As Long)

Public OldWndProc As Long

Public Function WindowProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long


If Msg = WM_DEVICECHANGE Then

Select Case wParam


Case DBT_DEVICEARRIVAL
Call Form1.DeviceArrival(GetDrive(lParam))

Case DBT_DEVICEREMOVECOMPLETE
Call Form1.DeviceRemoveComplete(GetDrive(lParam))
End Select

WindowProc = 0
Exit Function
End If
WindowProc = CallWindowProc(OldWndProc, hwnd, Msg, wParam, lParam)
End Function

Public Function GetDrive(ByVal flParam As Long) As String
Dim ssscr As DEV_BROADCAST_USERDEFINED
Dim nn As Long
Dim nnst As Long

CopyMem ssscr, flParam, Len(ssscr)
nn = ssscr.dbud_szName
Do While nn > 0
nn = nn \ 2
nnst = nnst + 1
Loop
GetDrive = Chr(64 + nnst)
End Function
(КОД НА ФОРМУ)
Private Sub Form_Load()
OldWndProc = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf WindowProc)
End Sub

Private Sub Form_Unload(Cancel As Integer)
SetWindowLong hwnd, GWL_WNDPROC, OldWndProc
End Sub

Sub DeviceArrival(ByVal fDrive As String)
text_out "Появилось устройство " & fDrive
End Sub

Sub DeviceRemoveComplete(ByVal fDrive As String)
text_out "Устройство исчезло " & fDrive
End Sub
Private Sub text_out(tTxt As String)
Text1.SelStart = Len(Text1.Text)
Text1.SelText = tTxt & vbCrLf
DoEvents
End Sub

И теперь сама суть вопроса когда определился носитель надо чтоб с него скопироваль в базу данных программы "C:\Prog_Files\ИНГЕО\DBF\" файлы с носителя.
Я опять пишу код
Dim copyDBF As Object
Set copyDBF = CreateObject("Scripting.FileSystemObject")
copyDBF.CopyFolder ("fDrive":\DBF1", "C:\Prog_Files\ИНГЕО\DBF\"
И вставляю его в функцию

Sub DeviceArrival(ByVal fDrive As String)
Dim copyDBF As Object
Set copyDBF = CreateObject("Scripting.FileSystemObject")
copyDBF.CopyFolder ("fDrive":\DBF1", "C:\Prog_Files\ИНГЕО\DBF\"
text_out "Появилось устройство " & fDrive
End Sub

И ничего не получается Пытался в модуле прописать когда идет обнаружение устройства, прога вообще или виснет или OFF. Короче много всяких способов пытался. Может я что не так делаю помогите.
Остановился на том чтоб еще прописать таймер и производить попытку секунд через 10 когда авторан устройства пройдет. О результатах сообщю позднее если получится.
Может кто подскажет в чем загвостка.
(Кому нужен исходник спрашивайте)


30.03.2009 17:05
Профиль
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 


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

Зарегистрированные пользователи: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
cron
© 2013 «Форум программистов Украины»