Имя: Пароль:
IT
 
Компонента SendToLocalHost. Определение IP адреса терминальной рабочей станции.
0 vudo
 
08.05.10
08:47
Написал компоненту для определения IP адреса терминальной рабочей станции и отправки строки на определенный IP адрес и определенный порт.
Проверено. Работает уже полтора года.
Пользуйтесь.
Все вопросы можете задавать в этой теме.
Ссылка http://sites.google.com/site/sendtolocalhost/
1 Ковычки
 
08.05.10
20:43
малодец, пеши исчо
2 vudo
 
10.05.10
09:43
Кто-то пробовал?
3 Гость из Мариуполя
 
гуру
10.05.10
11:34
(2) не, брат, как-то не до того. 9-го Мая вряд ли кто-то что-то пробовать будет (окромя шашлычков) :)
тема, может, и хорошая, вот выложил ты ее в праздники/выходные не вовремя. ИМХО.
4 turtler
 
10.05.10
15:25
да, компонента дельная, но под виндовс

в описании везде фигурируют тонкие клиенты...

а что если её под линукс переписать?
это как раз в концепцию линукс-тонкихтерминалов-серверов укладывается

или я не прав?
5 vudo
 
10.05.10
22:41
(4) Если я не ошибаюсь в Линуксе нет большой проблемы с определением IP адреса тонкого клиента также как и нет проблемы с отправкой данных на определенный порт (система открытая) из этих соображений и смысла писать под Линукс нет.
Если же речь идет о Windows-приложениях работающих в Линуксе, например под Wine да еще и терминале, то надо подумать... На первый взгляд - невозможно.
Если кому-то это нужно отпишитесь - обсудим, может что и получится.
6 Холст
 
10.05.10
22:46
дискриминация платформы 7.7 )
если работает, приведите пример для 7.7
7 vudo
 
10.05.10
22:53
Честно, на семерке не пробовал, даже не подумал... Сори... Сейчас проверю отпишусь...
8 Холст
 
10.05.10
23:01
(7) заранее спасибо
9 IamAlexy
 
10.05.10
23:02
а зачем она ?
10 Злопчинский
 
10.05.10
23:04
(9) типа дл яобратной связи с рабочей станцией в терминальном режиме...
11 vudo
 
10.05.10
23:06
//Для 7.7 вот так и работает (проверил):    
ComObject = СоздатьОбъект("SendToLocalHost.SendToLocalHost");
// дальше как и для 8-мки

Полностью проверить для 7.7 сейчас нет возможности, но IP адрес возвращает.
Если есть возможность проверьте и подтвердите.
12 vudo
 
10.05.10
23:12
(9) по ссылке в (1) подробно описал для чего применялась. Может еще для чего получится - буду только рад ;-).
И еще (6) это полноценный Com-объект зарегистрированный в системе, поэтому вызывать можно не только из 1С (и 77 и 8), проверял вызов через VB-script - тоже работает.
13 Skom
 
11.05.10
05:46
как ее зарегать???
14 Skom
 
11.05.10
05:46
что то у меня регасм ругается
15 dk
 
11.05.10
05:58
щас придет абрахамс и всю компоненту зменит 1-й строкой WMI запроса, хотя ...
16 Skom
 
11.05.10
06:00
(15)
кстати да
ну по крайней мере как доменное имя компа определить он показывал...ну с какого коннект был
17 Skom
 
11.05.10
06:03
objNet = СоздатьОбъект("WScript.NetWork");
ИмяКлиентскогоСервера     = objNet.ComputerName;
ИмяПользователяWindows     = objNet.UserName;

вот как то так
18 Кириллка
 
11.05.10
06:38
(0)а если у ТС-сервера несколько IP-адресов?
19 vudo
 
11.05.10
07:52
(17) По-моему вернет имя сервера а не тонкого клиента.
(15) Может я искал и плохо, но ничего не нашел из-за чего и весь сыр-бор. По этому кто знает другие способы для 1С отпишитесь.
(18) Должно возвращать IP-адрес тонкого клиента, а не сервера. Если у тонкого клиента несколько IP - вернет тот через который подключались к серверу.
20 vudo
 
11.05.10
07:53
(13) Что не получается? Как ругается?
21 dk
 
11.05.10
08:11
Set shell = WScript.CreateObject("WScript.Shell")
msgbox shell.ExpandEnvironmentStrings("%CLIENTNAME%")
22 vde69
 
11.05.10
08:21
вот такой простой бат файл

@echo *
@echo *
@echo Server:
@set COMPUTERNAME
@echo *
@echo Client:
@set CLIENTNAME
@echo *
@echo *
@Pause
23 Skom
 
11.05.10
08:25
а я + к(17) не дописал...как раз то что в (21)
24 dk
 
11.05.10
08:35
(0) Remoute Desktop поправь на страничке
25 smaharbA
 
11.05.10
09:02
(15) не одна конечно строка, и не вми, но уже давненько существует
26 vudo
 
11.05.10
09:30
Я не говорил что не возможно - сказал что не знаю (не знание к грехам не относится? ;-)). Выкручивался как мог - вот и получилось. И по-моему, не грубое решение...
(21)dk - а это точно и для терминального режима сработает (сейчас попробовать не могу, а уж очень интересно...)
(25) - там еще можно на IP + порт строку посылать...
27 dk
 
11.05.10
09:33
(26) работает, проверял
28 smaharbA
 
11.05.10
09:34
(27) не всегда в (21) вернет верный результат, имя клиента не связано с именем компа, хотя обычно и тождественно
29 vudo
 
11.05.10
09:47
(27)(28) Ну что-ж век живи-век учись... Если бы знал не заморачивался... Там еще надо по имени компьютера IP-адрес определить и будет полный аналог метода GetIPLocalHost() компоненты. Но у меня в запасе есть еще отправка строки из 1С на порт;-).
30 vudo
 
15.05.10
08:22
Готов подводить итоги.
Интерес к решаемой компонентой проблеме есть!
С дня когда была выложена компонента получилась такая статистика переходов:



Источники                      Посещения       % посещений
infostart.ru (referral)        211        60,63 %
(direct) ((none))          76          21,84 %
forum.mista.ru (referral)    47          13,51 %
sites.google.com (referral)    10          2,87 %
google.ru (referral)        4          1,15 %

ВСЕГО 348 посещений



Сейчас идет уже 3-4 посещения в день, думаю больше не поднимется.
Отрицательных отзывов не было.
Спасибо всем за проявленный интерес. Надеюсь кому-то помогло. Пользуйтесь на здоровье!
31 Torquader
 
15.05.10
17:52
Кстати, для настоящих "тонких" клиентов (типа NComputing) - это вообще проблема, так как сама система не всегда знает, с какой станции зашли.
Но там, правда, на самого клиента ничего передавать и не надо.
А если стандартный RDesktop "гоняется", то там можно или переменные среды смотреть или запросить у самого сервера, только проблема бывает, если сервер через Proxy подключен, так как знания IP-адреса недостаточно, чтобы клиенту отослать ответ.
P.S. а знать IP-адрес полезно, если все принтеры сетевые, и привязывать печать на определённом принтере к адресу клиента (но из-за "сверхтонких" пришлось эту задачу решать через привязку к имени пользователя, так как "сверхтонкие" не умеют работать через Terminal Server IP, а работают через свой драйвер.
32 vudo
 
15.05.10
18:57
(31) Повторюсь: решение на сайте - работоспособное проверенное на протяжении уже более 1.5 лет.(принцип - сделали и забыли) Делайте как сделали мы проблем, с очень большой вероятностью не будет! (как сделали тоже там)...
Насчет прокси - если четко сформулируешь задачу (главное тех. условия), то можно попробовать сделать. Боюсь только что прийдется писать ПО и для клиента (без сокетов вряд ли получится).
33 Torquader
 
16.05.10
01:09
(32) У меня сейчас немного другая задача - выяснили пользователи, что можно подключаться к своему забытому сеансу с другого компьютера.
Теперь они хотят возможность посылать другому ссылку на сеанс, то есть в процессе обработки документов (а там не только 1С, но и много чего другого) просто передавать "рабочий стол" по цепочке.
Вот и думаю, стоит ли реализовывать сию бредовую идею.
34 vudo
 
16.05.10
01:32
(33) "Передавать" значит знакомить с паролем, собственно больше и реализовывать нечего. Сказал другому имя пользователя и пароль, тот зашел - вот и "передал".
Только я заметил, что бывает плохо локальные ресурсы при "переподключении" на разные компьютеры, раз от разу принтеры печатать переставали, то нормально то не работает...
Но главное нарушаются основные принципы администрирования:"Один человек - один пользователь" и "Пользователи знают только свой пароль".
35 Torquader
 
16.05.10
10:28
(34) С локальными ресурсами у меня проблем нет (как и самих ресурсов) в политике безопасности запрещено всё.
А принтеры монтируются как сетевые, проблема только в том, что на другом рабочем месте уже другой принтер, но это уже решено.
Пароли пользователи вообще не знают, так как им сеансы "выделяет" демон, который и отслеживает пароли сеансов, а пользователю нужно знать пароль, чтобы "договориться" с демоном.
Человек - лицо физическое, и проверять его право нужно только при входе в систему, а рабочие столы - виртуальные, то есть один и тот же человек может выполнять различные функции - соответственно, различные рабочие места, а когда "пересесть" можно нажатием одной кнопки - это удобно.
А другим способом реализовать динамическое отслеживание прав очень сложно, так как доступ к документам должен быть у реального пользователя только в тот момент, когда он выполняет какую-то определённую роль.
36 vudo
 
16.05.10
11:54
(35) Ну и наворотили;-) Молодца!
А что значит "пересесть" можно нажатием одной кнопки - поделись технически это как?
37 Torquader
 
17.05.10
00:05
(36) Технически сейчас это так - нажимаем клавишу, например, Пуск+Ё и вылетает список доступных сеансов. Или Пуск+Цифра - сеанс по номеру.
Текущий сеанс "срубается", если активен (то есть выполняется отключение), и подключается новый, который нужен.
Гемор в том, что кнопки надо ловить и на локальной машине и на сервере (так как "отобрать" клавиши у Remote Desktop Client оказалось очень сложно).
А вообще - глюкодром ещё тот - теперь есть "бредовая идея", что сервер будет не один, но это мне уже друг поможет - чтобы Windows сервера живи в виртуальной среде, а на серверах был Linux (чтобы процессы с одного на другой мигрировали).
P.S. половина "костылей" для "сращивания" писалась на Borland Си (причём без плюсов, так как быстрее работает) и второй раз наладить будет очень сложно.
38 Юджин58
 
22.05.10
12:23
(0) Большое СПАСИБО автору! В 1с77 все работают в терминале на server2003. Надо было запретить работу некоторых пользователей c внешнего IP. Оказалось узнать IP подключения в терминал большая проблема. Компонента SendToLocalHost заработала.
39 mojed
 
22.05.10
13:13
(0)
а FreeRadmin от Вас когда ожидать ?
40 vudo
 
23.05.10
20:06
(38)Спасибо за столь высокую оценку моих скромных усилий ;-) Правда приятно.
(39)FreeRadmin только после компилятора 1С ;-))) Компонент позволяющий использовать .NET в 1С
41 Ковычки
 
23.05.10
20:45
(38) если не знать что проблема, то все просто
42 Ковычки
 
23.05.10
20:49
весь код

Перем СтрКомп,МассивДекодера[5],ФСО,Скрипт;
Перем МассивСдвига[4];

Функция  Индикатор(к,Кол)
   Ч=100*к/Кол;
   Состояние(Формат(Ч,"Ч(0)4.1")+"% "+СтрЗаменить(Формат("","С"+Ч)," ","|"));
КонецФункции    // Индикатор

//****** ДеКодер85 (Начало)
Функция ДеКодер85(Пар)
   Перем Кол,Количество,Кортеж,к;
   Кортеж=0;Количество=0;
   Кол=СтрДлина(Пар);
   Для к=1 По Кол Цикл
       с=КодСимв(Сред(Пар,к,1));
       Если с=122 Тогда //КодСимв("z")
           Скрипт.ExecuteStatement("S=S & String(4,chr(0))");
       ИначеЕсли Кол=к Тогда
           Если Количество>0 Тогда
               Кортеж=Кортеж+МассивДекодера[Количество];
               Для Сч=1 По Количество Цикл
                   Скрипт.ExecuteStatement("S=S & chr("+(Цел(Кортеж/МассивСдвига[Сч]) % 256)+")");//ПобитныйСдвигВПраво(Кортеж,(4-к)*8)
               КонецЦикла;
           КонецЕсли;
           Прервать;
       Иначе
           Количество=Количество+1;
           Кортеж=Кортеж+(с-33)*МассивДекодера[Количество];
           Если Количество=5 Тогда
               Для Сч=1 По 4 Цикл
                   Скрипт.ExecuteStatement("S=S & chr("+(Цел(Кортеж/МассивСдвига[Сч]) % 256)+")");//ПобитныйСдвигВПраво(Кортеж,(4-к)*8)
               КонецЦикла;
               Количество=0;
               Кортеж=0;
           КонецЕсли;
       КонецЕсли;
       Индикатор(к,Кол);
   КонецЦикла;
КонецФункции    // ДеКодер85

Функция ДеКодирование(Знач СтрАски="",Файл)
   СтрАски=СтрЗаменить(СтрАски,"" "","");
   МассивДекодера[1]=52200625;
   МассивДекодера[2]=614125;
   МассивДекодера[3]=7225;
   МассивДекодера[4]=85;
   МассивДекодера[5]=1;
   МассивСдвига[1]=16777216;
   МассивСдвига[2]=65536;
   МассивСдвига[3]=256;
   МассивСдвига[4]=1;
   ФСО=СоздатьОбъект("Scripting.FileSystemObject");
   Кортеж=0;с=0;Количество=0;
   Если (Лев(СтрАски,2)="<~") и (Прав(СтрАски,2)="~>") Тогда
       Скрипт=СоздатьОбъект("MSScriptControl.ScriptControl");
       Скрипт.language="vbscript";
       ФайлОбъект=ФСО.CreateTextFile(Файл,-1,0);
       Скрипт.AddObject("File",ФайлОбъект);
       СтрАски=Сред(СтрАски,3,СтрДлина(СтрАски)-4);//
       Скрипт.ExecuteStatement("S=""""");
       ДеКодер85(СтрАски);
       Скрипт.ExecuteStatement("File.Write(S)");
       ФайлОбъект.Close();
   Иначе
       Сообщить("Файл не Аски85");
   КонецЕсли;
КонецФункции    // ДеКодирование
//****** ДеКодер85 (Конец)

Функция Регистрировать(Знач Компонента="",Сообщ=0)
   Перем Стр;
   Стр=Компонента+"
   //|"+ФС.WindowsКаталог()+"\TSSInfo.exe
   //|"+КаталогПрограммы()+"\TSSInfo.exe
   //|"+КаталогИБ()+"\TSSInfo.exe
   |"+КаталогВременныхФайлов()+"\TSSInfo.exe
   //|"+КаталогПрограммы()+"ExtDLL\TSSInfo.exe
   //|"+КаталогИБ()+"ExtDLL\TSSInfo.exe
   //|"+КаталогПользователя()+"ExtDLL\TSSInfo.exe
   |";
   Для к=1 По СтрКоличествоСтрок(Стр) Цикл
       Если ФС.СуществуетФайл(СтрПолучитьСтроку(Стр,к))=1 Тогда
           Компонента=СтрПолучитьСтроку(Стр,к);
           к=0;
           Прервать;
       КонецЕсли;
   КонецЦикла;
   Если к>0 Тогда
       Сообщить("Не найдена TSSInfo.exe");
       Возврат 0;
   КонецЕсли;
   Компонента="""file://"+СтрЗаменить(Компонента,"\","/")+"""";
   Стр="REGEDIT4
   |
   |[HKEY_CURRENT_USER\Software\Classes\CLSID\{C7A24C46-32B3-43D5-9D51-3A8C075D01A0}]
   |@=""TSSInfo.TSSInfo""
   |
   |[HKEY_CURRENT_USER\Software\Classes\CLSID\{C7A24C46-32B3-43D5-9D51-3A8C075D01A0}\Implemented Categories]
   |
   |[HKEY_CURRENT_USER\Software\Classes\CLSID\{C7A24C46-32B3-43D5-9D51-3A8C075D01A0}\Implemented Categories\{62C8FE65-4EBB-45e7-B440-6E39B2CDBF29}]
   |
   |[HKEY_CURRENT_USER\Software\Classes\CLSID\{C7A24C46-32B3-43D5-9D51-3A8C075D01A0}\InprocServer32]
   |@=""mscoree.dll""
   |""ThreadingModel""=""Both""
   |""Class""=""TSSInfo.TSSInfo""
   |""Assembly""=""tssinfo, Version~~1.0.0.0, Culture~~neutral, PublicKeyToken~~null""
   |""CodeBase""="""+Компонента+"""
   |
   |[HKEY_CURRENT_USER\Software\Classes\CLSID\{C7A24C46-32B3-43D5-9D51-3A8C075D01A0}\InprocServer32\1.0.0.0]
   |""Class""=""TSSInfo.TSSInfo""
   |""Assembly""=""tssinfo, Version~~1.0.0.0, Culture~~neutral, PublicKeyToken~~null""
   |""CodeBase""="""+Компонента+"""
   |
   |[HKEY_CURRENT_USER\Software\Classes\CLSID\{C7A24C46-32B3-43D5-9D51-3A8C075D01A0}\ProgId]
   |@=""TSSInfo.TSSInfo""
   |
   |[HKEY_CURRENT_USER\Software\Classes\TSSInfo.TSSInfo]
   |@=""TSSInfo.TSSInfo""
   |
   |[HKEY_CURRENT_USER\Software\Classes\TSSInfo.TSSInfo\CLSID]
   |@=""{C7A24C46-32B3-43D5-9D51-3A8C075D01A0}""
   |
   |";
   ФайлРег=КаталогВременныхФайлов()+"TSSInfo.exe.reg";
   Текст=СоздатьОбъект("Текст");
   Текст.ДобавитьСтроку(СтрЗаменить(Стр,"~~","="));
   Текст.Записать(ФайлРег);
   Возв=0;
   Попытка
       Шел=СоздатьОбъект("WScript.Shell");
       СпКлючей=СоздатьОбъект("СписокЗначений");
       Ветка="";
       Для к=1 По СтрКоличествоСтрок(Стр) Цикл
           СтрВр=Текст.ПолучитьСтроку(к);
           СтрВр=СтрЗаменить(СтрПолучитьСтроку(Стр,к),"\\","\");
           Если Найти(СтрВр,"HKEY_CURRENT_USER")>0 Тогда
               Ветка=СтрВр+"\";
               Ветка=СтрЗаменить(Ветка,"[","");
               Ветка=СтрЗаменить(Ветка,"]","");
           ИначеЕсли (Найти(СтрВр,"=")>0) и (Найти(Ветка,"HKEY_CURRENT_USER")>0) Тогда
               СтрВр=СтрЗаменить(СтрВр,"=","" "");
               СтрВр=СтрЗаменить(СтрВр,"@","");
               СтрВр=СтрЗаменить(СтрВр,"""","");
               СтрВр=СтрЗаменить(СтрВр,"~~","=");
               СпКлючей.ДобавитьЗначение(СтрПолучитьСтроку(СтрВр,2),СтрЗаменить(Ветка,"HKEY_CURRENT_USER","HKCU")+СтрПолучитьСтроку(СтрВр,1));
           КонецЕсли;
       КонецЦикла;
       Для к=1 По СпКлючей.РазмерСписка() Цикл
           Ключ="";
           Значение=СпКлючей.ПолучитьЗначение(к,Ключ);
           //Сообщить(Ключ+"="+Значение);
           Шел.RegWrite(Ключ,Значение);
       КонецЦикла;
       Возв=1;
   Исключение
   КонецПопытки;
   Если Возв=0 Тогда
       Попытка
           Шел.Run("cmd /c start """" /wait regedit /s """+ФайлРег+"""",0,-1);
       Исключение
           КомандаСистемы("cmd /c start """" /min /wait regedit /s """+ФайлРег+"""");
       КонецПопытки;
   КонецЕсли;
   Попытка
       Враппер=СоздатьОбъект("TSSInfo.TSSInfo");
       Если Сообщ=1 Тогда
           Сообщить("Удачно зарегистрирован объект TSSInfo.exe: "+Компонента,"i");
           Сообщить("Файл регистрации: "+ФайлРег,"i");
       КонецЕсли;
       Возв=1;
   Исключение
       Сообщить(ОписаниеОшибки(),"!");
       Возв=0;
   КонецПопытки;
   Возврат Возв;
КонецФункции    // Регистрировать(Файл)
//*******************************************
Процедура Выполнить(Знач Программа="",Сообщ=1)
   Перем Стр;
   Стр=Программа+"
   //|"+ФС.WindowsКаталог()+"\TSSInfo.exe
   //|"+КаталогПрограммы()+"\TSSInfo.exe
   //|"+КаталогИБ()+"\TSSInfo.exe
   |"+КаталогВременныхФайлов()+"\TSSInfo.exe
   //|"+КаталогПрограммы()+"ExtDLL\TSSInfo.exe
   //|"+КаталогИБ()+"ExtDLL\TSSInfo.exe
   //|"+КаталогПользователя()+"ExtDLL\TSSInfo.exe
   |";
   Для к=1 По СтрКоличествоСтрок(Стр) Цикл
       Если ЗначениеВФайл(СтрПолучитьСтроку(Стр,к),,0)=1 Тогда
           Программа=СтрПолучитьСтроку(Стр,к);
           Прервать;
       КонецЕсли;
   КонецЦикла;
   ДеКодирование(СтрКомп,Программа);
   Если ФС.СуществуетФайл(Программа)=1 Тогда
       Регистрировать(Программа,Сообщ);
   КонецЕсли;
КонецПроцедуры

Процедура ПриОткрытии()
   Программа="";
   Состояние("Инициализация функций компоненты TSSInfo.TSSInfo");
   Если Регистрировать(Программа)=0 Тогда
       Выполнить(Программа,0);
       Регистрировать(Программа);
   КонецЕсли;
КонецПроцедуры    // ПриОткрытии

Процедура Сформировать()
   ТССИнфо=СоздатьОбъект("TSSInfo.TSSInfo");
   Сообщить("Ваш адрес - "+ТССИнфо.GetClientInfo());
КонецПроцедуры    // Сформировать()

СтрКомп="<~9j3VY!rr<$""98E%s8N'!\,ZL/z5QCcazzzzzzzzJ,fQL%Ni7l!43'W+h.PHbop&""BlbD9Ec
|5T2@;R,s@;]t$F<G%(+EDUB+DG^96r-`(D/Wrr/e&6s,QIfEz:dk?a9E>4q9,mXtzzhuF5f$N
|UG3!#,D5!!WE'z*\m]q!$D7A!'gMa!!#7a!$D7A!!3-#""98E%z""98E%z!.Y%L!!3-#z!rr<(!
|!!Q1!""],1!!!Q1!""],1z&-)\1zz`%_5l<r`4#!'gMaGQRpGzzzz!+5d,$ig8-zzzzzzzzzzzz
|!$D7A#QOi)zz#Ts*I8,rVizz/p(ZLF8u:@,SC(W!$D7A!#,D5!!3-#zzz+92CL/ol#R@fQK/G
|QRpG!'gMa!!E9%!#>P7zzz5QCdL/okN>DdrbI$ig8-!+5d,!!3-#!#bh;zzz5QCdNzzzz!&=N
|Sz8,rVi!WW3#GTd%e9Fq1(!<<*""!<<*(FWg_bzzzzzzzzzzz'/0Fe&c_n3!<<*3Es)IC""ptQQ
|$ig83-ij;J$7Z#U*Wd_m!!!?UDK5aX!,r!X""TSN0EZ4uYE$tnj!""(+T!!!?U'/0Fe$31&+!WW
|34E[(PaE!e)q""tBTQ'/0Ri]`8$4!rr<5()7o$&dT*P-jK_P""sEsHz!!*!#/3jdQ&eP$W""onW)
|&J0m*!!!(=#64`2-jTeQ$7.88-I;qs!!4PT!!!?S$31&5Gm46K!c\DE!!3K>#UfuZ!!XDP&cd
|7`!!!-8%i,fg.j,E7&Isp2&ISgl$NL/6Edn&hE$tnj!""'AI&IoW.'+PTa&J'n91>!0HEdn&hE
|#'i1!!!?ArW=\a&IT0Y-k-.V$5_DE%KHJ9'+5B['*JmM.KBGK6;pKC!<<-#z$ig8-FtkU(/i5
|@>1&q:S!!!0&C]FG8qum'#,CTUmBEeG:1^3p[,?&])Bl7R)zS.#AtKE(uP,?7YB+:S;N&-)\1
|,=ba*6i[2e0F\!^*!60@,=63b@K6B.z!<<*#=$NDq#m(),!;Z^P!!3-#!<<*""+92BA#QOi))?
|9a;%KHJ/&c_n3!WW3#*WQ0?'`\46'*&""4""98E%!rr<$!rr<$!rr<$!rr<$""98E%""98E%""TSN&
|!<<*""!WW3#""98E%!!""AN!<<*""!!!3'PQ6[C""p!ccN;s._o`:$P""ooMBN;s._7K\VM$35PX=9A
|a-QNN3I""ou+7N;s._liYK7""on`.N;s._-NoD/$33<o=9Am1<s00:$34E9'*&4:Hj%[r""osM`b
|l\.MU'/^C""ou%6bl\:Q`<6hS""p!6Xbl\.MoE<D@""onl3bl\.M'a;ha""op^g.0TnU<!A6]""orB
|A.0TnUK*<\-""ot4u.0TnU\HODc""p!'T.0TnUlNJ^@""ono5.0T\O!!!$""z!<<-#!!*'"".0)4*""
|TSQ'!<Aen!!#.^2#mUV!<<0$!<<*""2#oK6""TSQ'""9>.r!!#Igz""TSu3$3:,,:B1@p%0-P3%fc
|q;!!$I.!!!H.#QPA8!W`9$IK0?J&HE+;%ffX\aT*Ue<e/Qt,lgtrh#J`$;1R@$2us3`rrG([""
|qV4F5QM'#%g""us""qVRP5QM&n*We;%<e)Lu6ig>=3!)JK<e*gE6ig>=?NNUr<e+ib6ig>=FTOr
|3<e,`&6ig>=P6+,Q<e-kF6ig>=Yl[;o<e/0k6ig>=e,i#=<e0?76ig>=q>s%c<e(Y^6ig>=*s
|4n3<e)k+6ig+,z(''g('*&%5z!!#J!V#VA5!WW3#z7L-*s)#s^<E$,,\!!!3?_Z1h[!W[Hfz(
|'*Y#!s&H'PTTr+!!$U=V#VA5!rr<$!!%NL(*NMT#lt,.zJ,g?-9E>k/#QOi)!!%NL(*I8k+TW
|#PzJ,g?-MZG.*%KHJ/!!%NL(*KCR/ccI_X<7KC!!$U5Y5fF?'*&""4z7Lu<q)#t<Mz!!#InY5f
|F?'*&""4!<Abm!!!$""q>^Kq!<<o:!!!'#*ru?A!rsbN!!!-%1B@IU""TUXc!!!$""(BFL9!WX;C!
|!!*$.00DK""9:4Y!!!0&495E^!<@9D!$D:BPlUjb!<B2%!!!'#ZN1%+!s#k4!!!-%_>sc>'EA7
|9$ih^V:'6ja0`])k+TOM&_Z1h[#lqjC+TN)SWWO+=5leV$U&bQ#`<34C8HAAbZ2kO;'a2&J=T
|C/Z^]@jD9*E68B`MuQb5l;WEs0qmB`N>[fE$6t_Z9H4JH3Rf-N]D1_Z4'GR/k,)G64H<_Z1h[
|W;sg9ncH?%_Z0]>_#V@Qp]8J:_Z0]>d/_&ap]9%J_Z9H4i;gaqp]9UZ_Z9H4nGpH,p]:0j_Z9
|H4!<L(<p]1j)""99hM%KHb7E<$IK$imj=#QPD93roTe-icd=#QQCU9`YM""0E=uO#QQ[]<riR,2
|um1a#QQse@0$W65QEkH#QR6mAcW/;8-!E+#QRNuDug4E:]PV=#QRg(H3""9O=9*gO#QS*0KE2>
|Y?iZ#a#QSB8NWBCcBE44s+93>\9`ZjHo)K1$/c_pP""p6IXlMq=q/c`K`""p6IXb5_qQ/cao3$j
|/*^K)dJ)/ca?#$j/*^gAhWa6N@c""9`\r.MZ@;iK)gN(/HUP)P5p%5K)g5ur;iPkRfH.`UB#W@
|2?KNPMZ@;i^]B>nD?:4Hp]:p*qZ7</rW4)?/-2:BW<(iV!rr?%""98K'""TSW)!!'\4*<6'>]`9
|&Q!!'\4*<6-@!WW<&!WWE)""TST(%0-V5""98i1)?9m?$igD1""998=)up*A(]Xa?6NMW:QiYG46
|NI\t9E>.o6NIc!9E>.o6NIi#BE8/76NIo%MZEn[6NIu'U]CSu""FpIP!<<*""zz!!"")F!!!$""!!
|%fgz!!!$""$31&+!!!6(!!%fgz!!!?+'*&""4!!!0&""98W+""98Z,""98]-""98E%!'EtoA9D^""4of
|G@@rHC(Bjq':Bk)1%F)PZ4/ll\-F^])Q@<6-m!)ulq8T&-Y9jqaR!)ulq8T&-Y!(g-g;b:k=D
|ZF-D;c?8*Ao@ZN<)[-k9M%ZJ<*qpZ6rHHP;ZKlu;dVmc8OZBR?V!I\6ruZP7:/>K6rHHP;ZKl
|u;dW*k7SdAY9L2TU!)n/aFCf:h:L\'M@rq]F@;0TZ6#pUZ!,#kb?U8.>F`[URATU:UBk;1(8T
|&-Y!'t(4F`[U9@ruX0!(1R2F)so`!(h'MATDBk@qA5B!(D'BDKKqkA,oSSE+K#FDGk%YBleB:
|@<?4%D?*W9=&`*qF_,T=;e:#kBl@l\DJ!g-D..O#Df,Pg;e9umAT@cLATMp,Df/-W!(h'?DaS
|>LF)q>#E'e\ZAn>u_E'nPdDKGl&FE:l0BeqLE=&`*qF_,T=;e:#kBl@l\DJ!g-D..O#Df/VV=
|&`*fEb/fVASl@+GlVeXASl@+GlW&1F('$%1GURnChs)cDImos@:Wnh!+TsJGB7\4CGR^uA8H&
|^;e9iW5uLMZ6tLF]8PfCcEaq[;!,tY@@mOX9EWApLGsPtOE_L%^!(g!X9Me#O8M4OiC]I0q=C
|4?^5u:NL;I;^X6rHHP;dW3e:.J8S!*3NEF_+NtE+K#86pspA;c?.O9hA#]!+>jnA7T^lF)q=J
|!(CdJD#e`fCis;r?N=/,;b:k@FD50"":i^JeEa`eb=&`*aE,]W-@psInDf/<YD.N]K<)Zk:Ebf
|B,B1-HSARfh#Ed7Xd<)ZR]9hAjq=&`*sATMp,Df/-W!*<,u<HD_l:18!N!*<,u=(uPNFCB9*D
|f/<YD.N]K<)Z2'D..-r:18!N!*<,u6Z6j[ARfg\FCB9&!*<,u6YpIJDKJ3fBl%<TF_tT!EWB0
|?;aYA8ASuTb@;TQU=&`*cCh[HuF@9h`ARfh#Ed7Xd<)Z/#Bk;1(:i^JbF^oMbA,o\1;aYA8AS
|uT\@<,n&@<,pNA,o\1;aYA8ASuTUA7T^lF)q=_<)Z/#Bk;1(6tp^]CghSh=&`*cCh[HuFAR!r
|FDkZ-CfG\!AH5)9DKB`4AH5ePBlmo[Bl7J^9ke*XDf]i/F=pU.F*1o-6=FqL@kL,eD/a3*ATC
|^\Ecu/,ATIiMFCB&t@<,mQDe+!,AO1E[EbT!*FCbGN<'aJsEb/Zi6$.3hBju4,AH6@SFC.L[C
|hujTD.N]GFE2)5B)k;;DI[*s!(UUB<-`Fo!)n/aFCf;A;KZl!Bl.E68T&W]Ec5nqATDs.@qB]
|]9jr'`BOP]W:ip_WDc:auF^oN9Eb,5KF`);8D.Q[lE+MRKDIdQp!(UUB<-`Fo7WNEa87?CHCh
|3T4@ruF.@<?F.!(1d<@<?'PDKBo.DI[5X;fm%oDJ)poE+K#=Ec5edDKKH&AT@cLFE2)5B6+&?
|Df'H%Eb.sVFD,T'!(h',FE.@TASqKAAS-#a7s/NV6$.3hBju4,AH5)6@<6K]DKKH1Amo1\6$.
|3hBju4,AH5)6@<6K]DKKH1Amo1\<-`Fo!(:OBE(OS+FEDP;@Wcd(!(1[A6Yp1PF$XniEbT!*F
|CbG>Df&B`B5)F/ATC7_DI[d&Df.j_FE2))F`_0p9jr'`BOP^CF$XniEbT!*FCbGPDJ`g""@:s.
|^<-`Fo!(1[A<bZVh@VfUAFEDP;@Wcd(!)n/aFCf;A;IsHVARfgrDf,P@F)to0@Vg<jATDj+Df
|.j_FE2))F`_0p6VLEGDf'H0Bjkn$6$.3hBju4,AH5#;F(K2tCjABjCijf?AO1E[EbT!*FCbG<
|F)to0@Vg<hEa`KiD..I#6$.3hBju4,AH5#;F(K2tCjABdE-ZJ<B4uBQFEDP;@Wcd(!'t[IASk
|mmGu/O""A9DC(6$.3hBju4,AH5#;F(K2tCjABdD/`p$GsQOoEbT!*FCbG<F)to0@Vg<XATM@%B
|lJ0.Df.j_FE2))F`_0p6$%*YD.7=,<,$GjAO1E[EbT!*FCbGoF)u&5Ao@ZkF)u&5AoB;5G\$j
|T!#\Z7AH6?CB`N2SF9#kPEWBYNA,nXj+92BH/c[L(/cYlU6NBm^9`QaF5m0%J5QihF2$?/I+9
|5@@;ZK_r8H<W.AcQ`L+94P-0EaTC3!;MM0EaNA+94P-0E`Ku+ojD%4p3qM4p3kK+oi_c<rcq7
|D?+2IDZFt]ErZ4C/cYkO;Z(?743rCCV413CD#qSe!!p&[>ZM_!i/%`D5@8mPeI"">@!!**@%Kd
|gR%Ke*Z%KdgR!<NH884*A9!'pT?!&O[C!&O[6!%e1,!&=O@!&FU,!&O[3!+Z'e!%e12!(6fE!
|&4I*!&FU@!&ssG!&+C3!&XaE!&+C-!'pT=!(]QZ1&s965la:Q1B9]@2#o3.6i]UT2#orC/H@U
|-1]V%d2ukN15l`hD7K>CJ/H@^02?5Z90`XZC6NAe?6NAh@70#%B6i]bH!&ag:!&FUD!&XaF!&
|ag/!(?lC!'($I!%e1-!&ssf!+Q!\!'pTF!&O[6!%e1:!&O[3!($ZO!&4IC!($ZC!($ZB!(?kk
|!!**5#n$_:$4$nL+:oA$#R^V9$4$nL+:nhj#Qt,.!>kt?!=BAJ!?qgM"":>JC&/Yrc!X8o5""on
|W'!sTbL!sT>[""98E%!!E<&!!!-'!!!!%!rr<$""9\])!!EH*!!!-,!!!!%#QOi)"":5&.!!EW/!
|!!-0!!!!%$ig8-"":Y>2!!Ec3!!!-4!!!!%&-)\1""98H'%Km"";&eG6I!tGeN%Kcq:%KmmS&d\a
|B!ZW$i#mLA1&d].!""TSQC&d\[@!=fA?!!<K:%M:](!!*?8""TST6%L<pW&J5ic%L<OS&KD8t%M
|9Zj%M9N`*<d#l""<[^G%OhDY,XXLV1,M?T2D$^?68L2M1Lr?p3CG_Z/Mf[P6SLGV6ng>]0E;(V
|+9;KT70inoz!!""GK!$k#h3'fqg5rC5^6o@:_1c/`&/O;<b3%['I2_dch0LIQ`0gl!A""<[^G#R
|CG2!<<*""!!!9*!!3-#!!!!'+9MWS%M!O\!$joj5r(8a1c?pA1.!cK1c&Z""/NH3V0eG1I3(#AY
|2+0,Q5qjQR1,qQf1I3lM6prn!/Mo:p3%[ET7Q;tY2E*?[6SLk^7571U75d+]75[Ll/O_ET6nL
|5T@UguU3A`WG5r:Aa5qthq2*s,g!!!0F!<Ed8!ZhCE*WuNc&-O*V!<NE*!!*'""$ip>5<)Z^eD
|J!eezlnJJ?zz%Pe""a!$D7Azzzzz!&=NSzzzz!!$@nDfS9kAPHTID?+Np@rHC!AM.M0C]FG8!!
|*$F!$FN,zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
|zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!$""&-)\1(]XPdz
|zz!!!$""!<<*""0E;*'zzz!!!$""z8,rVi=?lid*!60@zz*!8""t!!$%"";ZL/)<WGPg;?0Vq8H;Nd
|:&nW$8H;Kc7K?3az]`dg'!!!$""!!!$""z!!!$""z56(Z`z""98E%!<<*""zzz6i[2e!<?.#@/t<J7
|K@-&C]J#H8H<W.AcQ`Lz,QIrI!!#suEWBMJD?+_XC]IlDF9$""TDZFYTz!!'5+Hia9J!<?$uF9
|$=]B`N#NB)kC$B`MrLAH5:%D?+8KDZBb;=98I&!<=eR0E<d,0E<d,1]Utb0E;(Q-iaMQ!<>Ie
|DZFVSD#e,ID?+bYErZ1?;ufhs;ZKAhD?+8KDZBb;0E;@Y!<>IeDZFVSDua;HD?+q^:&n]&D#e
|,Iz;ufhs;ZKAhD?+8KDZBb;2uj3a!<>RhB`MrLAH5*uAH6cO@fUNLB`N)PF9$""TDZFYTz;ufh
|s;ZKAhD?+8KDZBb;0E;@Y!<>RhB`MrLAH5a2AH6`NEr]nSDZFYTz0`Wg+0E<^*0E<^*0E;(Q2
|uj?e!<>[kD?+bYAH6`ND?+)FC]I31@/t-EAH2]1F9$@^Er]nSD?+8KDZDBiAH6rTAH2]11]Rd
|]!<>dnAH6?C@/t*D6ND$)Dub.`EWBeRB)lTFF8u:@;ufhs;ZKAhD?+8KDZBb;2uj3a!<>dnAH
|6?C@/t*D;ugq=@/sg<AH6QI@/t<JCB/DUz;ufhs;ZKAhD?+8KDZBb;5QD2m!<>mqEWBeRB)lW
|GD?+)FC]Hp)B`MrLAH6TJ@/t-EAH2]1F9$@^Er]nSD?+8KDZDBiAH6rTAH2]10E;@Y!<>prEW
|C""XA,p`P@fUTN:&n]&D#e,Iz;ufhs;ZKAhD?+8KDZBb;1]Rd]!<>prEWC""XA,p`P@fUTN<WH\
|2EWC.\B`N&OD?'Y:0`Wg+0E<^*0E<^*0E;(Q2uj3a!<>CcEr^7]AH6QI@K:3EGlSre<WH\2EW
|C.\B`N&OD?'Y:0`Wg+0E<^*0E<^*0E;(Qzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!&+BQ
|$ig8-+>Noszzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
|zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz~>
|";
43 Ковычки
 
23.05.10
20:49
разбирайтесь сами
44 Ковычки
 
23.05.10
20:53
к слову в (35) и (37) абсолютное заблуждение - в лучшем случае
45 vudo
 
23.05.10
21:10
(42)(43) весь код

Перем МойIP;
ComObject = Новый COMОбъект("SendToLocalHost.SendToLocalHost");
МойIP = ComObject.GetIPLocalHost();

и разбираться нечего... ;-)
46 Torquader
 
23.05.10
21:15
К сожалению, на тонком клиенте Xtenda это не работает, так как сервер не может понять, кто и откуда к нему подключился - приходится "допрашивать" сервер тонких клиентов, а он даёт не IP, а имя рабочей станции, так как IP ему не важен.
(44) А как ещё можно совместить работу с тонкими клиентами и несколько интерфейсов.
Тем более, что работают с системой "полные бараны", которые только что и умеют - это мышкой по иконкам тыкать.
47 Ковычки
 
23.05.10
21:17
(45) а если внимательно ?
48 Torquader
 
23.05.10
21:21
Кстати, интересный вопрос, а что происходит, когда мы сеанс "передаём" на другого клиента - получается новый IP или старый ?
49 vudo
 
23.05.10
21:22
(47)ТССИнфо=СоздатьОбъект("TSSInfo.TSSInfo");
Сообщить("Ваш адрес - "+ТССИнфо.GetClientInfo());
Об этом? Так по эффективности тоже...
А дальше у меня отправка строки на порт и IP.
50 vudo
 
23.05.10
21:29
(48) IP на момент вызова GetIPLocalHost()- ибо работает с API функцией WTSQuerySessionInformation. Так что для (42)(38) есть еще много разных путей... Но написан в результате SendToLocalHost и мне он нравится. Кто не хочет может не пользоватся.;-)
51 Torquader
 
23.05.10
22:09
(50) Тогда понятно, почему "сверхтонкие" такие "неудачные" - они отказались WTSApi поддерживать (точнее там есть возможность включить поддержку, но после этого можно только бежать к серверу и давить RESET).
52 sezhik
 
23.05.10
22:48
(48) Я смотрел в описании есть работа с ТО. А как данные от него забиратся? Например от ФР?
53 vudo
 
23.05.10
23:47
(52) В 8-ке есть типовая обработка подключения торгового оборудования - сервер ТО, так вот задача в том чтобы подключать, только то ТО, которое подключено к рабочему месту пользователя, если он подключается в терминале.
И только для этого (просто хитрость!).
Дальше все работает как обычно.
Это не поддержка ТО - а только возможность корректного подключения в терминальном подключении.
А для этого надо подкорректировать типовой сервер ТО и само собой сами обработки подключения, но немного.(кому надо могу подсказать - несколько строк, хотя догадаться не сложно)...
54 sezhik
 
23.05.10
23:55
(53) да но для этого данные должны обмениватся по TCP. Или я ошибаюсь.
55 vudo
 
23.05.10
23:59
(51)Я все никак не могу понять что у тебя за проблема? Что не работает и что ложится и что значит "сверхтонкие". Сформулируй в каких условиях у тебя не работает?
Я не могу понять почему у тебя не работает. API функции это функции сервера, а не клиента соответственно и компонента регистрируется на сервере, а не на клиенте.
И обращение к ней идет на сервере, просто выдает параметры текущего клиентского подключения.
У меня на бездисковых рабочих станциях под управлением Linux IP-адреса возвращает. Что не так, повторюсь, не могу понять?..
56 vudo
 
24.05.10
00:07
(54) Решается задача только подключения оборудования. И все!
При чем только решаем(в зависимости от IP), какое оборудование подключать, а какое не надо. Дальше работает типовые обработки и типовые функции.
Просто добавляем функционал для возможности подключения в ТЕРМИНАЛЬНОМ РЕЖИМЕ! Для обычного подключения она не нужна.
Если скажешь что у тебя с фискальным регистратором не получается - может что подскажу. Славо богу уже ОГО-ГООООО сколько;-) - правда украинские, ну да ладно...
57 sezhik
 
24.05.10
00:12
(56) У меня другая проблема вот в этой ветке описана. v8: У кого есть реально рабочий пример работы с Winsock? Либо других компонент для TCP.
Нужно подключить ЭККА(украинский кстати0 через GPRS модем, непосредственно через TCP. А я не могу компоненту подобрать чтоб работала и данные нормально передавала и принимала. У меня там много служебных байт в посылке.
58 vudo
 
24.05.10
00:32
У меня есть мои исходники (тренировался технологии) Prpoxy-сервера, при чем асинхронного написанного на C# c использованием сокетов, могу поделится...Реально рабочий да еще и ассинхронный ;-).Может что вытянешь. Куда кинуть? На ICQ напиши если надо.
Но может проще:
Какой аппарат?
Как подключать Of-line, фискальный регистратор или режим подкачки?
59 sezhik
 
24.05.10
00:39
(58)  sezhik@gmail.com
Аппарат Экселлио 55B Но не в аппарате проблемма. Аппарат ведет обмен с GPRS модемом по своему протоколу и последний сохраняет у себя электроный журнал. Вот его и надо вытянуть. Запрос не сложный, но транспорт подкачивает :).
60 sezhik
 
24.05.10
00:41
Минус еще в том что сам модем не имеет статического IP. А сам устанавливает соед с сервером. И вот при установке этого соед. надо его опросить и вытянуть если есть информацию.
61 vudo
 
24.05.10
00:48
(60) Ты же слушаешь порт, и как подключился модем тянешь данные, при подключении получаешь IP. Что не так? В (57) много чего... Суть?
62 sezhik
 
24.05.10
00:54
(61) Да все правильно, только вот ВК уже несколько дней не могу заставить работать как надо. Каждая с каким то прибабахами. Через Winsock невозможно отловить данные о подключении, одни данные обрезают или добавляют служебные, через другие послать данные через переменную не получается. Вот такая суть.
63 vudo
 
24.05.10
00:59
А производители ЭККА свое ПО не выдают? Может глупый вопрос... Мы просто проблемы с ИКС красиво-дешево-сердито так решаем ;-) пишем только подвязку данных к 1С через готовые локальные СУБД, а данные по модемам их ПО собирает...
64 vudo
 
24.05.10
01:02
(62) Я не понял - модем журнал ведет? Ни чего не перепутал?
65 sezhik
 
24.05.10
01:07
(63) Есть но она платная и еще сырая. И платить за нее не хочется. Если ничего не получится выбора не останется.
(64) Да это спецаильно разработаный модем с прошивкой, он может и сквозным работать, но с памятью лучше ибо после Z электронный журнал кассы обнуляется.
66 vudo
 
24.05.10
01:21
(65)Пипе... Какких извращений мозк человеческий не придумает;-(((
Платная компонента = ВремяУжеПтраченное*(v8: Требуется, программист Киев 1С v.8 + 70% = "И платить за нее не хочется."
С Датексами проходили - сели с их программистом (интернет + телефон)после оплаты (за счет клиента),звонка руководству, и за 3 дня + 70% и все вопросы решили.
Я так подозреваю - это единственно правильный путь(модем ведь "специально" разработанный).
67 sezhik
 
24.05.10
01:32
(66) не совсем понял что значит +70%
68 vudo
 
24.05.10
01:40
(67)Перед этим 3 недели на написания обработки подключения 1С-типовой.3 дня с программистом на исправление ошибок ВК. И после запуска еще проекта еще 2,5 дня в общей сложности ошибки догоняли что повылазило(правда был режим подкачки). За то потом 2 года никто не трогает...
Хотя, за что деньги брать? - Но работы и так много.
69 sezhik
 
24.05.10
01:43
(68) Программистом кто был Афанасьев?
70 vudo
 
24.05.10
01:43
(58)Могу выслать(не жалко), просто уверен - что бесполезно! ICQ в профайле.
71 vudo
 
24.05.10
01:45
(69)Семенюк. И респект ему полный!
72 sezhik
 
24.05.10
01:49
(70) выслать что именно?
73 vudo
 
24.05.10
01:52
(72)Примеры работы с сокетами(исходники) на C# см(58).
74 sezhik
 
24.05.10
02:01
(73) не мне к сожаленью не помогут. :) или к счастью!
75 vudo
 
24.05.10
02:04
К счастью!
Обратитесь к производителю - самый дешевый путь. Удачи!
76 smaharbA
 
24.05.10
05:53
(49) о том, что все украдено до вас ))
77 vudo
 
24.05.10
06:21
(76)Быть чемпионом - не мой стиль. По этому на первенство не претендую ))))
78 Юджин58
 
28.05.10
13:07
(0) Жалко компонента возвращает локальный, а не внешний IP компа. Если терминальная рабочая станция стоит в другой локалке с похожими IP (192.168.0.x), сразу и не поймёшь, что подключение к серверу терминалов из вне.
79 vudo
 
29.05.10
17:47
(78) Задача изначально была отправить данные на порт клиентской машины. По-этому и возвращается тот адрес клиентской машины, который "видится" со стороны сервера...
80 smaharbA
 
29.05.10
18:08
(79) имея mswinsck.ocx можно слать из адинес
81 Torquader
 
29.05.10
20:03
(80) Если писать клиента, то используя WinSock это просто.
Если сервер, то он получает ID подключения в событии и приходится писать прослойку, чтобы это событие отлавливать.
Но, в любом случае - Visual Basic и Windows Scripting Host решают любые проблемы - на них даже можно некоторое подобие Active X сервера написать.

(55) Была задача - определять с какого рабочего места подключился клиент, чтобы использовать ближайший к нему принтер (так как принтер реально подключен к другой машине). Но выяснилось, что "сверхтонкие" клиенты не позволяют стандартными средствами определить с какого места произошло подключение, так как по всем данным системы пользователь работает локально (так как сервер "сверхтонких" свой).
В общем, в сверхтонкого прописали имя пользователя для подключения и через это имя всё и определяется, а на досуге буду читать описание их "интерфейсов".
Проблема оказалась в другом - в 1С всё работает, а вот для Open Office принтер настроить не получилось (все подключения устанавливает программа-стартер, которая запускает 1С - на Си никаких проблем нет - можно вызывать WinApi).
Придётся выносить часть стартера в сценарий подключения пользователя (но тогда при обрыве связи им придётся выходить, а сейчас только 1С перезапускают).
82 vudo
 
29.05.10
23:53
(80)Что же никак покоя не даю! :-(  Путей решения правда масса - сейчас даже не спорю.
На момент написания решил что так проще, уже было в (26)(29)(76)! И сейчас этим решением вполне доволен(принтеры, торговое оборудование и т.д.) - по этому и другим рекомендую(0)!
А то что это решение не так очевидно, подтверждается просмотрами сайта (только 69,73% новые посещения, остальные возвращаются).