Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 1
Регистрация: 11.10.2010
Сообщений: 363
1

Отслеживание состояния msinet.ocx

28.05.2007, 22:29. Показов 2713. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
прочел статью В.Сизова "Как применять FTP в документах Microsoft Office"

По мотивам написал такую процедуру.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
Public Const lcl_path As String = "c:hr"
 
Public Const ftp_path As String = "in"
 
Public my_names(1 To 5) As String
 
 
 
 
 
Sub clear_old_load_new()
 
Dim my_names, file_array As Variant
 
 
 
my_names = Array("com", "edu", "emp", "fam", "wor")
 
Set fs = CreateObject("Scripting.FileSystemObject")
 
'очищаем старые файлы из локальной директории
 
If Not fs.FolderExists(lcl_path) Then
 
    fs.CreateFolder (lcl_path)
 
Else
 
    If fs.FileExists(lcl_path & my_names(0) & ".csv") Then
 
        Kill lcl_path & "*.csv" '?
 
    End If
 
End If
 
'загружаем новые с ftp
 
With FormFTP.Inet1
 
    .RemoteHost = "192.168.1.113"
 
    .RemotePort = 21
 
    .UserName = "test"
 
    .Password = "test"
 
    .URL = "ftp://test:test@192.168.1.113"
 
 
 
    For Each nam In my_names
 
        If .StillExecuting Then
 
            Application.Wait (Now + TimeValue("0:00:02"))
 
        End If
 
        .Execute , "GET " & ftp_path & nam & ".csv " & lcl_path & nam & ".csv"
 
    Next
 
    Application.Wait (Now + TimeValue("0:00:01"))
 
    .Execute , "CLOSE"
 
    .Execute , "QUIT"
 
End With
 
Module1.Anketa
 
End Sub
Однако не совсем понял использование события Inet1_StateChanged. В отладчике (построчное исполнение F8) все проходит гладко, но как только процедура запускается полностью (F5) в непредсказуемом порядке появляются 2 типа ошибок:

1 code has been interrupted, как будто я сам прервал исполнение.

2 run-time error 35764 still executing last request

Если продолжить выполнение процедуры после генерации ошибки, то само копирование с ftp проходит. Приложение работает не стабильно. Очевидно, что в момент повторного вызова инструкции GET предыдущая еще не отработала. Проверка свойства

If .StillExecuting Then Application.Wait (Now + TimeValue("0:00:02")) не верна по смыслу и не эффективна (то работает то нет).

Нужно отслеживать состояние объекта Inet1, используя событие StateChanged. Все самостоятельные попытки сделать это, пока ни к чему не привели.



Использую: win xp sp2, ms office 2003



С уважением,
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.05.2007, 22:29
Ответы с готовыми решениями:

Проблемы с MSINET.OCX: 'The Control not be created because it is not properly licensed'
Зарегестрировал MSINET.OCX с помощью regsvr32 msinet.ocx, затем действия следующие: - открываю...

Проблема с msinet.ocx в VBA: The control could not be created because it is not properly licensed
Добрый день! Возникла следующая проблема Скачал msinet.ocx сделел ему regsvr32 после чего...

Отслеживание состояния браузера
Подскажите, пожалуйта, каким образом в Servlet-ах можно отследить завершение работы браузера...

Отслеживание состояния страницы
Здравствуйте! Хочу обратится к вам с проблемой! Пишу WebServise, c аудитом... Стартовая странница...

1
0 / 0 / 1
Регистрация: 11.10.2010
Сообщений: 363
07.06.2007, 17:09  [ТС] 2
Добиться стабильной работы msinet.ocx так и не смог. Пробовал с помощью ftp.exe и через API. Последний вариант оказался наиболее простым и предсказуемым в работе.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
Private Declare Function FtpGetFile _
 
   Lib "wininet.dll" Alias "FtpGetFileA" ( _
 
   ByVal hFtpSession As Long, _
 
   ByVal lpszRemoteFile As String, _
 
   ByVal lpszNewFile As String, _
 
   ByVal fFailIfExists As Boolean, _
 
   ByVal dwFlagsAndAttributes As Long, _
 
   ByVal dwFlags As Long, _
 
   ByVal dwContext As Long) As Boolean
 
 
 
Private Declare Function FtpPutFile _
 
   Lib "wininet.dll" Alias "FtpPutFileA" ( _
 
   ByVal hFtpSession As Long, _
 
   ByVal lpszLocalFile As String, _
 
   ByVal lpszRemoteFile As String, _
 
   ByVal dwFlags As Long, _
 
   ByVal dwContext As Long) As Boolean
 
 
 
Private Declare Function InternetOpen _
 
   Lib "wininet.dll" Alias "InternetOpenA" ( _
 
   ByVal sAgent As String, _
 
   ByVal nAccessType As Long, _
 
   ByVal sProxyName As String, _
 
   ByVal sProxyBypass As String, _
 
   ByVal nFlags As Long) As Long
 
 
 
Private Declare Function InternetConnect _
 
   Lib "wininet.dll" Alias "InternetConnectA" ( _
 
   ByVal hInternetSession As Long, _
 
   ByVal sServerName As String, _
 
   ByVal nServerPort As Integer, _
 
   ByVal sUserName As String, _
 
   ByVal sPassword As String, _
 
   ByVal nService As Long, _
 
   ByVal dwFlags As Long, _
 
   ByVal dwContext As Long) As Long
 
   
 
Private Declare Function InternetCloseHandle _
 
   Lib "wininet.dll" (ByVal hInet As Long) As Integer
 
   
 
Private Const INTERNET_SERVICE_FTP = 1
 
 
 
Sub engine()
 
 
 
rez = ftp_upload("get")
 
 
 
Module1.Anketa
 
 
 
rez = ftp_upload("put")
 
 
 
End Sub
 
 
 
Function ftp_upload(we_make As String) As Boolean
 
my_names = Array("com", "edu", "emp", "fam", "wor")
 
If we_make = "get" Then
 
    For Each nam In my_names
 
        hINetSession = InternetOpen("MyFTPClient", 1, vbNullString, vbNullString, 0)
 
        
 
        hSession = InternetConnect(hINetSession, "172.31.27.120", _
 
        "21", "user_hr", "passhr", INTERNET_SERVICE_FTP, 0, 0)
 
        
 
        If FtpGetFile(hSession, "/export/home/user_hr/HR/" & nam & ".csv", "c:HR" & nam & ".csv", False, 0, 2, 0) = False Then
 
            msgbox "Call to FtpGetFile Failed!"
 
        End If
 
        Call InternetCloseHandle(hSession)
 
        Call InternetCloseHandle(hINetSession)
 
    Next
 
End If
 
 
 
If we_make = "put" Then
 
    For Each nam In my_names
 
        hINetSession = InternetOpen("MyFTPClient", 1, vbNullString, vbNullString, 0)
 
 
 
        hSession = InternetConnect(hINetSession, "172.31.27.120", _
 
        "21", "user_hr", "passhr", INTERNET_SERVICE_FTP, 0, 0)
 
 
 
        If FtpPutFile(hSession, "c:HR" & nam & ".csv", "/export/home/user_hr/HR/" & nam & ".csv", 1, 0) = False Then
 
           msgbox "The call to FtpPutFile failed."
 
        End If
 
 
 
        Call InternetCloseHandle(hSession)
 
        Call InternetCloseHandle(hINetSession)
 
    Next
 
End If
 
 
 
End Function
Вопрос закрыт!

С уважением,
0
07.06.2007, 17:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.06.2007, 17:09
Помогаю со студенческими работами здесь

Отслеживание состояния компонента
Доброго времени суток, уважаемые. Вероятно, вопрос покажется Вам глупым, но если бы я знал больше...

Отслеживание состояния WebBrowser
Добрый день всем. Воюю с контролом System.Windows.Forms.WebBrowser. После загрузки страницы...

Отслеживание состояния приложения
Всем привет! Подскажите пожалуйста, как вы отслеживаете когда "приложение запускается" ->...

Отслеживание состояния <select>
Как при изменении состояния &lt;select&gt; переслать на другую страницу? (для каждого option`a отдельно)

Отслеживание состояния запущенного процесса
Здравствуйте. запускаю кнопкой выполнение программы: protected void Button3_Click(object...

Отслеживание изменения состояния службы
7. Служба отслеживает изменения состояния (приостановка, запуск, остановка) заданной службы и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru