powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Версия MSWINSCK
12 сообщений из 12, страница 1 из 1
Версия MSWINSCK
    #32729464
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня Win2000 SP4
Собрался вот побаловатся с Winsock под AccessXP ADP
сервер должен посылать сообщение при смене версии
а приложения должны его ловить и обновлятся
(сейчас табличка сканится по таймеру)
Ну еще всякие прикладные штучки типа подсветить кнопку "Обновить"
на ленточной форме если появились новые записи
нашел у себя на машине MSWINSCK.OCX
зарегестрил смотрю
Microsoft Winsock Control 6.0 (SP5)
6.0.89.88 September 14, 2000
Че то дата больно старая
Может стоит поновее поискать(дайте ссылку)
Или и этот сгодится?
...
Рейтинг: 0 / 0
Версия MSWINSCK
    #32729508
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пофантазирую:

из приложения создать дополнительный адо - конект
к базе скажем контрольверсий

при событии смены версий рубить со сторны сервера все конекшены к этой базе это и будет зелеными свистками клиентам что пора смотреть обновления

как тебе?
...
Рейтинг: 0 / 0
Версия MSWINSCK
    #32729519
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похож на правильного, это от 5-го сервиспака к визуальной студии. подозреваю, что сгодится.

а здесь пример использования от MS (acc97)
...
Рейтинг: 0 / 0
Версия MSWINSCK
    #32729567
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
обновление версии одно из часных применений
поскольку оно просто то хочу опробывать технологию сначала на нем

В перспективе стоит например такая задача
На одном компе приложение реагирующее на входящий звонок
по номеру звонящего определяет к какому из интерфейсов он относится
и активирует/загружает соотв проект/приложение
сейчас ,когда все в одной сессии,
это делается через заголовок Win окна
но в будущем понадобится управлять приложением
в терминальной сесии на др. компе
это я собираюсь сделать через Winsock
Да и вообще просто интересно :)
...
Рейтинг: 0 / 0
Версия MSWINSCK
    #32729599
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может сгодится на что этот кусок кода (WTS API)
Код: plaintext
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.
Option Compare Database
Option Explicit

Public Type WTS_SESSION_INFO
  SessionId As Long
  pWinStationName As Long
  STATE As Long
End Type

Public Type WTS_PROCESS_INFO
  SessionId As Long
  ProcessId As Long
  pProcessName As Long
  pUserSid As Long
End Type

Public Type WTS_CLIENT_ADDRESS
  AddressFamily As Long
  Address( 1  To  20 ) As Byte
End Type

Public Type WTS_CLIENT_DISPLAY
  HorizontalResolution As Long
  VerticalResolution As Long
  ColorDepth As Long
End Type



  Const WTSInitialProgram =  0 
  Const WTSApplicationName =  1 
  Const WTSWorkingDirectory =  2 
  Const WTSOEMId =  3 
  Const WTSSessionId =  4 
  Const WTSUserName =  5 
  Const WTSWinStationName =  6 
  Const WTSDomainName =  7 
  Const WTSConnectState =  8 
  Const WTSClientBuildNumber =  9 
  Const WTSClientName =  10 
  Const WTSClientDirectory =  11 
  Const WTSClientProductId =  12 
  Const WTSClientHardwareId =  13 
  Const WTSClientAddress =  14 
  Const WTSClientDisplay =  15 
  Const WTSClientProtocolType =  16 
  
  

  Const WTSActive =  0 
  Const WTSConnected =  1 
  Const WTSConnectQuery =  2 
  Const WTSShadow =  3 
  Const WTSDisconnected =  4 
  Const WTSIdle =  5 
  Const WTSListen =  6 
  Const WTSReset =  7 
  Const WTSDown =  8 
  Const WTSInit =  9 
  
  Const WTSUserConfigInitialProgram =  0 
  Const WTSUserConfigWorkingDirectory =  1 
  Const WTSUserConfigfInheritInitialProgram =  2 
  Const WTSUserConfigfAllowLogonTerminalServer =  3 
  Const WTSUserConfigTimeoutSettingsConnections =  4 
  Const WTSUserConfigTimeoutSettingsDisconnections =  5 
  Const WTSUserConfigTimeoutSettingsIdle =  6 
  Const WTSUserConfigfDeviceClientDrives =  7 
  Const WTSUserConfigfDeviceClientPrinters =  8 
  Const WTSUserConfigfDeviceClientDefaultPrinter =  9 
  Const WTSUserConfigBrokenTimeoutSettings =  10 
  Const WTSUserConfigReconnectSettings =  11 
  Const WTSUserConfigModemCallbackSettings =  12 
  Const WTSUserConfigModemCallbackPhoneNumber =  13 
  Const WTSUserConfigShadowingSettings =  14 
  Const WTSUserConfigTerminalServerProfilePath =  15 
  Const WTSUserConfigTerminalServerHomeDir =  16 
  Const WTSUserConfigTerminalServerHomeDirDrive =  17 
  Const WTSUserConfigfTerminalServerRemoteHomeDir =  18 
  
Declare Function WTSOpenServer Lib "wtsapi32" Alias "WTSOpenServerA" (ByVal pServerName As Any) As Long
Declare Sub WTSCloseServer Lib "wtsapi32" (ByVal hServer As Long)

Declare Function WTSLogoffSession Lib "wtsapi32" (ByVal hServer As Long, ByVal SessionId As Long, ByVal bWait As Long) As Long
Declare Function WTSDisconnectSession Lib "wtsapi32" (ByVal hServer As Long, ByVal SessionId As Long, ByVal bWait As Long) As Long
Declare Function WTSShutdownSystem Lib "wtsapi32" (ByVal hServer As Long, ByVal ShutdownFlag As Long) As Long
Declare Function WTSTerminateProcess Lib "wtsapi32" (ByVal hServer As Long, ByVal ProcessId As Long, ByVal ExitCode As Long) As Long
Declare Sub WTSFreeMemory Lib "wtsapi32" (ByVal pMemory As Long)

  
Declare Function WTSSendMessage Lib "wtsapi32" Alias "WTSSendMessageA" (ByVal hServer As Long, ByVal SessionId As Long, ByVal pTitle As String, _
    ByVal TitleLength As Long, ByVal pmessage As String, ByVal MessageLength As Long, ByVal Style As Long, ByVal Timeout As Long, _
    ByRef pResponce As Long, ByVal bWait As Long) As Long
Declare Function WTSEnumerateSessions Lib "wtsapi32" Alias "WTSEnumerateSessionsA" (ByVal hServer As Long, ByVal Reserved As Long, ByVal Version As Long, _
    ByRef ppSessionInfo As Long, ByRef pCount As Long) As Long
Declare Function WTSEnumerateProcesses Lib "wtsapi32" Alias "WTSEnumerateProcessesA" (ByVal hServer As Long, ByVal Reserved As Long, ByVal Version As Long, _
    ByRef ppProcessInfo As Long, ByRef pCount As Long) As Long
Declare Function WTSQuerySessionInformation Lib "wtsapi32" Alias "WTSQuerySessionInformationA" (ByVal hServer As Long, _
    ByVal SessionId As Long, ByVal WTSInfoClass As Long, ByRef ppBuffer As Long, ByRef pBytesReturned As Long) As Long
    
Declare Function WTSQueryUserConfig Lib "wtsapi32" Alias "WTSQueryUserConfigA" (ByVal pServerName As String, _
  ByVal pUserName As String, ByVal WTSConfigClass As Long, ByRef ppBuffer As Long, ByRef pBytesReturned As Long) As Long
Declare Function WTSSetUserConfig Lib "wtsapi32" Alias "WTSSetUserConfigA" (ByVal pServerName As String, _
  ByVal pUserName As String, ByVal WTSConfigClass As Long, ByVal ppBuffer As Any, ByVal pBytesReturned As Long) As Long
  
Declare Function WTSWaitSystemEvent Lib "wtsapi32" (ByVal hServer As Long, ByVal EventMask As Long, ByRef pEventFlags As Long) As Long
    
Declare Function ProcessIdToSessionId Lib "kernel32" (ByVal dwProcessId As Long, ByRef pSessionId As Long) As Long

Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long
Private Declare Function GetSystemMetrics Lib "user32" (ByVal v As Long) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpFileName As String) As Long
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hModule As Long) As Long
Private Declare Sub RtlMoveMemory Lib "kernel32" (hpvDest As Any, ByVal hpvSource&, ByVal cbCopy&)

Private Function LongByAddr(ptr As Long)
    Dim B As Long
    If ptr <>  0  Then
            RtlMoveMemory B, ptr,  4 
            LongByAddr = B
    Else
            LongByAddr =  0 
    End If
End Function

Private Function StringByAddr(ptr As Long, Optional maxl =  65535 )
    Dim B As Byte
    Dim s As String
    Dim p As Long
    Dim C As Long
    p = ptr
    s = ""
    C = maxl
    If ptr =  0  Then
        StringByAddr = ""
        Exit Function
    End If
    
    Do
        RtlMoveMemory B, p,  1 
        p = p +  1 
        C = C -  1 
        If B =  0  Or C <  0  Then
            StringByAddr = s
            Exit Function
        Else
            s = s & Chr(B)
        End If
    Loop
End Function

...
Рейтинг: 0 / 0
Версия MSWINSCK
    #32729710
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>может сгодится на что этот кусок кода
Че то я без коментариив разобратся не могу
А пример использования можно?
...
Рейтинг: 0 / 0
Версия MSWINSCK
    #32729739
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Примеры косые, скорей на опыты похожи, просто применения не нашло :)
на MSDN можно найти описание API
Код: plaintext
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.
Sub test3()
    Dim rc As Long, hs As Long
    Dim rc2 As Long
    Dim A As Long, B As Long
    Dim a1 As Long, b1 As Long
    Dim i As Integer
    Dim ds As WTS_SESSION_INFO
    
    
    hs = WTSOpenServer("10.135.199.197")
    A =  0 : B =  0 
    rc = WTSEnumerateSessions(hs,  0 ,  1 , B, A)
    For i =  1  To A
        RtlMoveMemory ds, B + LenB(ds) * (i -  1 ), LenB(ds)
        a1 =  0 : b1 =  0 
        rc = WTSQuerySessionInformation(hs, ds.SessionId, WTSClientName, b1, a1)
        Debug.Print ds.SessionId, ds.STATE, StringByAddr(ds.pWinStationName), StringByAddr(b1)
    Next i
    WTSFreeMemory B
End Sub


Sub test2()
    Dim A As Long, B As Long
    Dim rc
    rc = WTSWaitSystemEvent( 0 ,  1 , B)
    Debug.Print rc, B



End Sub

Sub test1()
    
    Dim rc, hs
    Dim rc2 As Long
    Dim A As Long, B As Long
    Dim i
    B =  0 
    A =  0 
    
    rc = WTSQueryUserConfig("XP1", "administrator", WTSUserConfigfAllowLogonTerminalServer, B, A)
    Debug.Print rc, A, LongByAddr(B)
    
    Exit Sub
    
    
    
    
    
    
    
    rc = WTSEnumerateSessions( 0 ,  0 ,  1 , B, A)
     'Debug.Print rc, b, a 
    Dim ds As WTS_SESSION_INFO
    For i =  1  To A
        RtlMoveMemory ds, B + LenB(ds) * (i -  1 ), LenB(ds)
        Debug.Print ds.SessionId, ds.STATE, StringByAddr(ds.pWinStationName)
    Next i
    WTSFreeMemory B
    
    For i =  0  To - 1 
        A =  0 : B =  0 
        rc = WTSQuerySessionInformation( 0 ,  0 , i, B, A)
        Debug.Print rc, "len=", A, i, B, StringByAddr(B, A)
        WTSFreeMemory B
    Next i
        
     'a = GetCurrentProcessId() 
     'rc = ProcessIdToSessionId(a, b) 
      
     'Debug.Print rc, b 
    
     'rc = WTSLogoffSession(0, 1, 0) 
     'a = LoadLibrary("wtsapi32") 
     'b = FreeLibrary(a) 
    ' 
    ' 
     'Debug.Print "LL", a, b 
   
    
    Exit Sub
    
    
    A =  0 
     hs = WTSOpenServer(A)
    Debug.Print hs
    WTSCloseServer (hs)
    
    rc = WTSSendMessage( 0 ,  0 , "KKK",  2 , "йцук",  3 ,  0 ,  0 , rc2,  0 )
    Debug.Print rc
End Sub
...
Рейтинг: 0 / 0
Версия MSWINSCK
    #32729775
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что касается именно OCX винсок - я пробовал его использовать в аксессе и VB

В VB работает нормально а в аксессе виснет вместе с аксессом - какие то проблемы с многопоточностью ....
...
Рейтинг: 0 / 0
Версия MSWINSCK
    #32729813
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с активиксом все просто
подключил к серваку, послал данные и жди события прибытие данных

когда то фигней страдал
этот код ходит через прокси по инету
если интересно смотри:

Код: plaintext
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.
Option Explicit
Private Sub start_pause_Click()
Refer = "Referer: http://kozin1.narod.ru/index.html"
TIMEOUT =  10 
WORK_STATE =  1 
Call Timer1_Timer


End Sub

Private Sub Timer1_Timer()

If TOTAL_RESPONSES = LAST_TIMER_TOTAL_RESPONSES Then
Call Restart_Script
Else
 LAST_TIMER_TOTAL_RESPONSES = TOTAL_RESPONSES
End If

End Sub
Public Sub Restart_Script()
Dim t

Me.script_count.Caption = CDbl(Me.script_count.Caption) +  1 
Me.Winsock0.Close
Me.Winsock0.Connect "MAINGATE", "80"
Me.status.Caption = " Connecting to firewall ..."

w_4_connect:
t = Timer
If Winsock0.State <>  7  Then
If Timer > t + TIMEOUT Then
Me.status.Caption = "Connection to maingate timeout"
Exit Sub
End If
DoEvents
GoTo w_4_connect
End If
Me.status.Caption = "Opening Script "
 'Winsock0.SendData "GET " & Me.Url_val & " HTTP/1.0" & vbCrLf & vbCrLf 
Winsock0.SendData "GET " & Me.Url_val.Text & " HTTP/1.0" & vbCrLf
Winsock0.SendData "User-Agent: Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+98)" & vbCrLf
Winsock0.SendData "Host: www21.brinkster.com" & vbCrLf
Winsock0.SendData "Cookie: BrinksterServer=3; ASPSESSIONIDAQRCDACB=FCKCLOOAJLODJMPFEKBDBNJH; ASPSESSIONIDAQRABABB=LOFCFLLAAEAEHCKOMLBFKPFB; ASPSESSIONIDSSBCCRAD=PAAFKDPAHIJBCDKCMJJOIPKD; point=%7B4451BBD4%2D1777%2D43F1%2D8E96%2D377317996D75%7D" & vbCrLf
Winsock0.SendData Refer & vbCrLf & vbCrLf
 'GET http://www26.brinkster.com/akozin/pr_ua_controlled.asp HTTP/1.0 
 'Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/msword, application/vnd.ms-excel, application/x-shockwave-flash, */* 
 'Accept -Language: ru 
 'Cookie: BrinksterServer=3; ASPSESSIONIDAQRCDACB=FCKCLOOAJLODJMPFEKBDBNJH; ASPSESSIONIDAQRABABB=LOFCFLLAAEAEHCKOMLBFKPFB; ASPSESSIONIDSSBCCRAD=PAAFKDPAHIJBCDKCMJJOIPKD; point=%7B4451BBD4%2D1777%2D43F1%2D8E96%2D377317996D75%7D 
 'Host: www26.brinkster.com 
 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows 98) 
 'Host: www26.brinkster.com 
 'Proxy -Connection: Keep -Alive 
End Sub

Private Sub Winsock0_DataArrival(ByVal bytesTotal As Long)
DoEvents
If bytesTotal =  0  Then Exit Sub
Dim data As String               'Переменная для хранения данных полученных от удаленного хоста 
On Error Resume Next
If Me.status.Caption <> "Receiving data" Then Me.status.Caption = "Receiving data"

Winsock0.GetData data
TOTAL_RESPONSES = TOTAL_RESPONSES +  1 
If data <> "" Then
Debug.Print data
End If
If data Like "*OK*" Then
Me.ok_count.Caption = CDbl(Me.ok_count.Caption) +  1 
If data Like "*cl0*" Then
Me.cl_count.Caption = CDbl(Me.cl_count.Caption) +  1 
End If
End If
If data Like "*Error*" Then
Me.error_count.Caption = CDbl(Me.error_count.Caption) +  1 
End If


If data Like "*MAX Tolal time*" Then
Call Restart_Script
End If


End Sub
...
Рейтинг: 0 / 0
Версия MSWINSCK
    #32729947
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 АлексейК : автору топика требуется асинхронная загрузка файлов, ИМХО
...
Рейтинг: 0 / 0
Версия MSWINSCK
    #32729985
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> в аксессе виснет вместе с аксессом
Ето на вроде как порешали в чем дело
/topic/117681&hl=Winsock
...
Рейтинг: 0 / 0
Версия MSWINSCK
    #32729988
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
винсок работает асинхронно по отношению к приложению
если надо качать несколько файлов одновременно то нужно несколько контролов
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Версия MSWINSCK
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]