Мониторинг ключей защиты HASP




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?php // Полная загрузка сервисных книжек, создан 2026-01-05 12:44:55

global $wpdb2;
global $failure;
global $file_hist;

/////  echo '<H2><b>Старт загрузки</b></H2><br>';

$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
/////   echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}

$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
/////   echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}

/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
/////   echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
/////    echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist);   ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7];    ////получаем размер файла
$m_mtime_file=$masiv_data_file[9];   ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file

/////   echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
/////   echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
/////   echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);

if ($results)
{   foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));

////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
/////   echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
/////   echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}

////загружаем данные
$table='vin_history';         // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация     // (путь от корня web-сервера)
$delim=';';          // Разделитель полей в CSV файле
$enclosed='"';      // Кавычки для содержимого полей
$escaped='\

86 Comments

  1. coder1cv8

    Конечно пока всё не совсем так как задумывалось, в частности, не могу найти причину самопроизвольного сворачивания окна 1С при формировании отчета…

    Reply ↓
  2. coder1cv8

    Отчет сделан на базе Aladdin Monitor-а, кто пользовался этой утилитой наверняка заметил очень ограниченный функционал, ни скопировать, ни отсортировать соединения там нельзя…

    Reply ↓
  3. akkvamarin

    чёто валиться, не могу сформировать 🙁

    Форма.ФормаОтчета(62)}: Индекс находится за границами массива

    НовСтр[н]=Массив[н];

    Reply ↓
  4. coder1cv8

    (3) Перезалил. Сейчас валится не будет, но это косяк получения соединений. Попробуй в параметрах поставить «Таймаут»: 2000-3000 мс

    Reply ↓
  5. akkvamarin

    (4) Ура! Заработало! 🙂

    Reply ↓
  6. coder1cv8

    (5) С параметром?… У меня просто без таймаутов отрабатывает, поэтому я его и нулевым по-умолчанию оставил…

    Reply ↓
  7. Safronov_S

    у меня не формируется. Ошибка: «Не может быть выполнено»

    Reply ↓
  8. coder1cv8

    (7) хм… странная какая-то ошибка… Это сама 1С говорит или винда? А платформа какая?

    Reply ↓
  9. PowerBoy

    Не смог добиться стабильной работы. Из 5 ключей дает информацию максимум по трем, причем каждый раз это разные ключи. Иногда выдает ошибку, что файл Aksmonitor.exe не найден. Изменение параметра не помогает.

    Reply ↓
  10. coder1cv8

    (9) Мне, к сожалению, больше негде потестировать… У меня работает стабильно. Можешь скриншот в личку скинуть, как у тебя дерево серверов/ключей выглядит, которое в Aksmonitor-е слева?…

    Reply ↓
  11. akkvamarin

    (6) нет, без него, в параметры не лазию. Вот иногда только выскакивает следующее:

    {Форма.ФормаОтчета(70)}: Ошибка при вызове метода контекста (УдалитьФайлы): Ошибка удаления файлов

    УдалитьФайлы(ВременныйКаталог);

    по причине:

    Ошибка удаления файлов

    Ругается на доступ к файлу ‘C:Documents and Settingsбла…бла…блаaksmon.exe’.

    А так потом через некоторое время или повторно запускаеш — работает

    Reply ↓
  12. coder1cv8

    (11) Попробуем исправить. По ошибке (9) так же работаю…

    Reply ↓
  13. AXoxol

    та же ошибка что и в (11)

    Reply ↓
  14. coder1cv8

    Исправил ошибки, файл перезалил. Проверяйте (9) и (11).

    Reply ↓
  15. akkvamarin

    Теперь ошибки описанной в 11 посте больше не было. Два плюса автору за оперативность !

    Reply ↓
  16. PowerBoy

    Заработало! И таймаут для 5 ключей надо ставить 5000. +

    Reply ↓
  17. coder1cv8

    (16) многовато… (

    Reply ↓
  18. coder1cv8

    Больше ошибок нет? Пора выпускать не бета релиз? )

    Reply ↓
  19. z-alexey

    {Форма.ФормаОтчета(67)}: Ошибка при вызове метода контекста (УдалитьФайлы): Ошибка удаления файлов

    УдалитьФайлы(ВременныйКаталог);

    по причине:

    Ошибка удаления файлов

    по причине:

    Ошибка доступа к файлу ‘d:Temp371ccc0d-164c-48a4-afb4-89be506bb27aaksmon.exe’

    Хотя вижу как Монитор стартует и находит два ключа. Таймаут ставил 2000, 3000, 5000.

    Два сетевых ключа по 20 каждый

    Reply ↓
  20. z-alexey

    О, а теперь работает 🙂

    Reply ↓
  21. Safronov_S

    у меня так и не работает

    Перед выводом окна макета выпадает окно предупреждения:

    Заголовок: AutoIt Error

    Тело: Line -1:

    Error: Unable to execute the external program.

    Reply ↓
  22. coder1cv8

    (19) Странно… Принудительно закрываю вроде )

    Добавил проверку на существование процесса и TASKKILL. Проверь сейчас, пожалуйста.

    Reply ↓
  23. coder1cv8

    (21) Виста, очевидно? )

    Reply ↓
  24. z-alexey

    (22) Нее, она нормально сама и тогда закрывалась. Просто в момент когда она открывается я же успеваю посмотреть, что она два сервера с ключами нашла :))

    Кстати, сейчас с первой попытки вывела без ошибок.

    Reply ↓
  25. Safronov_S

    (23) да нет , XP

    Reply ↓
  26. Safronov_S

    Если ставить Таймаут тогда система ругается, что не найден файл GetInfo.exe

    Reply ↓
  27. coder1cv8

    +(23) В Висте надо наверное отключать UAC…

    (24) Где ты успеваешь посмотреть? ) Окно aksmon-a запускается не с

    Reply ↓
  28. coder1cv8

    (26) Чудеса да и только! А путь на который ругается?… А! Может быть ограничены права на запись exe в темповый каталог?… )

    Reply ↓
  29. Safronov_S

    Путь такой : C:Documents and Settings»тут мою юзер»Local SettingsTemp

    Права есть, проверил.

    Reply ↓
  30. coder1cv8

    (29) Ну может антивирус режет или ещё чего?… Получается что exe-шники, нужные для работы отчета, по какой-то причине не записываются…

    Reply ↓
  31. Safronov_S

    (30) все файлики в темп кладутся, видимо система не может подсосать именно параметр таймаута. Ругается ведь именно только в случае указания таймаута. Так в имени и приписывает. «бла бла бла … проверьте правильность имени …GetInfo.exe 5000». Если даже запускать вручную файл GetInfo.exe то выскакивает та же ошибка, что и в случае (21)

    Reply ↓
  32. coder1cv8

    (31) Попробуй сейчас. Обновил файл.

    Reply ↓
  33. z-alexey

    (27) Нет, не скрытым запускается 🙂

    Вот даже видео заснял процесса: http://slil.ru/27361377

    Reply ↓
  34. coder1cv8

    (33) Вот жешь, зараза! ) Так быть не должно…

    А какая операционка у тебя?…

    Reply ↓
  35. PVG_73

    жаль, что через ЕХЕ Аладина…. он у меня вообще не запускаетси… что-то плохо ему на моей машине…

    А вообще сие — есть жесть…. теперь приходится задумываться прежде чем запустить какой-нить отчет в 1С…. 🙁

    Reply ↓
  36. coder1cv8

    (35) По-другому никак, к сожалению (

    А задуматься никогда не помешает! )

    Reply ↓
  37. PVG_73

    Задумываться то никогда не помешает… это точно… 🙂

    Жаль что 1С ужЁ может стать банальным рассадником вирусов…. 🙁

    Reply ↓
  38. coder1cv8

    (37) exe-шник в обработку и в семерке можно было запихнуть, правда не штатно…

    Reply ↓
  39. z-alexey

    (35) Операционка ХР сп3, русская 🙂

    Reply ↓
  40. Safronov_S

    (32) теперь уже другая ошибка.

    Заголовок окна: Error

    Тело: Ошибка запуска: путь до файликаaskmon.exe Построение отчета не возможно!

    Reply ↓
  41. coder1cv8

    (40) Вот! Замечательно. Почему-то у тебя не запускается aksmon, посмотри есть ли там файлик (не закрывая сообщение), попробуй запустить через Пуск > Выполнить

    Reply ↓
  42. coder1cv8

    +(41) И скачай последнюю версию. Я исправил кое-что…

    Reply ↓
  43. Safronov_S

    (42) ура запустилось 🙂

    всё замечательно работает.

    Только у меня возник такой вопрос. Обработка показывает ключи на доп.лицензии. А как можно отследить ключи, которые идут к конфигурации?

    Reply ↓
  44. coder1cv8

    (43) Ну наконец-то! ) Спасибо огромное за тестирование!!!

    Да, только сетевые ключи. Насчет локальных не знаю…

    Reply ↓
  45. mc_syma_v@mail.ru

    У меня все работает. Единственная проблема была с фаерволом. Так что у кого не работает — проверте настройки. Еще такой вопрос. Никак не вытащить информацию не только о клиенте, но и о пользователе? Было бы не лишним.

    Reply ↓
  46. coder1cv8

    О каком пользователе? Виндовом?… )

    Это просто более удобное представление информации, которую предоставляет Aladdin Monitor, что то ещё туда добавить я могу разве что из других источников…

    Reply ↓
  47. coder1cv8

    (46) к (45)

    Reply ↓
  48. mc_syma_v@mail.ru

    (46) Я понял принцип работы. Просто может есть какая нить версия aksmon, которая позволяет выцепить имя пользователя.

    (43) Прога видит только сетевые ключи, 2 локальных у меня не нашел.

    Reply ↓
  49. СергейКа

    У меня тоже запускается монитор не скрытно 🙂 WinXP SP3

    1. Кроме того GetInfo как-то таймаут некорректно обрабатывает. Сколько ни ставь, «висит» минут 10. А если не ставить вообще, то Out.txt пустой.

    2. Идея с сохранением в темп и временно не очень понравилась. Если askmon еще не отработал (без таймаута), то временная папка не удаляется, так как занята процессом. При запуске отчёта второй раз — создается новая папка, но запуститься процесс не может, так как первый еще работает. А если даже и завершился, то файл Out.txt еще в предыдущей папке.

    ИМХО лучше перед запуском проверять/создавать «C:Program FilesAladdinMonitor» и перезапускать GetInfo с очисткой файла-отчёта.

    3. Аладдиновский монитор кстати, прекрасно показывает мой локальный ключ (кроме сетевых). Но при условии что стоит лиценз-менеджер. Может его тоже подключать при каком-то условии ? 🙂

    4. Пользователя 1С не сложно получить из кластера серверов, так как ай-пи известен из монитора.

    5. А за идею + адназначна 🙂

    Reply ↓
  50. ArtemK

    Однозначно плюс. У меня все работает отлично, правда заставка запуска монитора аладдина тоже появляется.

    Reply ↓
  51. coder1cv8

    (50) Заставка должна отображаться.

    (49) Значит какая-то недароботка в движке AutoIt, на XP SP2 основное окно скрывается как и задумано )

    1. Вообще не понятно, у меня без таймаута сам скрипт мгновенно отрабатывает (3 сетевых ключа), распаковка больше времени занимает )

    2. Тоже не понятно… Сам скрипт GetInfo сначала принудительно закрывает окно aksmon-a, а потом еще дополнительно проверяет существование процесса по PID-у и высылает TASKKILL, при необходимости. И только после этого (!), передает управление 1С. Как при этом aksmon может остаться висеть, для меня загадка… )

    3. Не стоит возни, ИМХО 🙂

    4. Я все-таки не понимаю, про какого пользователя идет речь? Пользователя 1С? А из какой базы кластера его получать? А где взять права? А как вообще узнать где сервер 1С? А если база файловая?… И ещё много-много вопросов…

    5. Спасибо! 🙂

    ЗЫ: Я понимаю, что такой подход с «выдергиванием» инфы скриптом на AutoIt-e, потенциальный источник глюков, но разработчики из Aladdina, к сожалению, не предусмотрели никаких средств интеграции (типа COM-сервера 🙂 ). Да и к тому же, у кого-то этот отчет все же работает стабильно, например у меня! 🙂

    Reply ↓
  52. СергейКа

    (51). 1. :))) 10 сетевых по 100 пользователей и 4 по 50 и н-дцать одинарных

    2. Вот жешь, может закрывается потому что слишком долго обрабатывается?

    3. Может быть.

    4. Вопросов много, согласен. Но это в принципе можно решить. При необходимости и наличии времени. Согласен с тем что необязательно этого делать в данной версии.

    Reply ↓
  53. coder1cv8

    (52) А-а-а… У тебя вон оказывается какой тяжелый случай с ключами! ))) Тогда да, трудно рассчитывать что этот отчет будет нормально работать с таким количеством… )

    Reply ↓
  54. СергейКа

    В 1С вроде обещали подвезти по 500 польз. и заказать в аладдине по 1000, но пока увы. Отчёт как раз норм, а вот со скриптом тяжело :)))

    Reply ↓
  55. sergey_garin

    У меня висит и ничего не показывает, хотя окно алладина мелькало

    Reply ↓
  56. coder1cv8

    (55) Скинь (в личку) скриншот окна aksmon-а.

    Reply ↓
  57. z-alexey

    (52) ООот жесть у тебя.. больше 1200 юзеров 🙂

    Reply ↓
  58. coder1cv8

    (57) Да уж… Если решат откиздить программиста, фик отобьешься! ))))

    Reply ↓
  59. СергейКа

    (57) Ха. Реально юзеров около 1000, некоторые по нескольку сеансов открывают 🙂 И это только в центральном офисе, а так — более 5000 :)))

    (58) Дык и нас целый отдел, около 30-ти 😉

    Reply ↓
  60. z-alexey

    (59) Так один комп ест одну лицензию, независимо от от количества сеансов. Ну в редких случаех он может поломиться на другой сервак за ключиком.

    Интересно послушать историю про ваше внедрение. Чего учитываете, какие нагрузки, что за конфа. Ждем в статьях, мне бы было интересно почитать.

    Reply ↓
  61. СергейКа

    (60) … И независимо от того что базы могут быть открыты разные ? 🙂

    До статей еще не дорос 🙂

    Вообще секторов несколько, я отвечаю только за ЗУП, так что всех проблем всё равно не знаю 🙂

    Reply ↓
  62. coder1cv8

    (60)(61) Еще зависшие лицензии бывают, например при аварийном завершении работы… Я этот отчет и сделал что бы можно было легко посмотреть у каких клиентов по несколько лицензий занято…

    Reply ↓
  63. z-alexey

    (60) Да. Незавимисо от баз. У нас по 3 базы на компе открывают и все ок.

    Вот проблемы с зависшими лицензиями бывают — это да.

    Reply ↓
  64. munster

    (62) А как избавиться от зависших лицензий? есть пара компов которые постоянно берут по две лицензии, причем один из них в отчете появляется под старым именем (поле «клиент»), компьютер был поменян на новый, имя ему было присвоено другое, а ip указан преждний. Как это исправить?

    Reply ↓
  65. coder1cv8

    (64) К сожалению никак… Разве что перегрузкой менеджера лицензий?… Но тогда и все остальные пользователи вылетят. Обычно к зависанию лицензий приводит не корректное завершение работы клиентского приложения… Зависшая лицензия сама отвалится, но через таймаут который установлен внутри 1С (как я понимаю) и на который разработчик повлиять не в силах…

    Reply ↓
  66. MaxS

    программа каждый раз создаёт временную папку, пишет туда exe-шник и запускает его… а каждый раз фаервол ругается на новое приложение из уникальной папки которое хочет выйти в сеть…

    может быть можно сделать просто поиск а не установлен ли алладин монитор в системе если да, то его и запускать.

    Reply ↓
  67. Serj1C

    (66) Эта часть кода открыта, можно поправить самостоятельно за пару минут.

    Reply ↓
  68. Serj1C

    Вообще сделано очень просто и удобно, и даже через СКД )))

    Reply ↓
  69. Alex_1066

    выставили таймаут — «Сформировать»-запускается Hasp моонитор от Алладина-свернулась 1С-ожидаем… Итог -сформировалась только шапка отчёта…. 🙁 Я так понимаю, что на любой клиентской машине можно запускать?

    Reply ↓
  70. coder1cv8

    (69) Да запускать можно на любой… Просто сам монитор от Алладина никаких интерфейсов для программной работы не предоставляет, поэтому все сделано несколько не стандартными способами. У кого-то работает, у кого-то нет… Гарантировать я ничего не могу, к сожалению (

    Reply ↓
  71. adapter

    у меня тоже ключей много. 3 по 100. не так много, как у Сергейки, но тоже монитор аладина не работает, только виснет. Пробовал и на том компе где стоит один из ключей и на отдельном, просто в сети (так в аладиновском форуме спец советовал). Может ли кто еще идей подсказать?

    Reply ↓
  72. 8c1.ru

    Есть соединения с таймаутом 0 (зависшие лицензии на сервере), но при отборе «Таймаут Равно «0»» их не показывает 🙁

    Reply ↓
  73. Re:аниматор

    сконвертированная версия с 8.1 в 8.2 не работает вообще

    Reply ↓
  74. alekseineputin

    (73)(74) Нормально все работает. Запускаю с машинки, где стоит ЛМ

    Reply ↓
  75. art2

    спасибо полезная штука

    Reply ↓
  76. oiter

    Вещь классная, часто пользуюсь ей на работе. Только есть одно НО. У меня несколько серверов лицензий, все они прописаны в файл Nethasp.ini в свойство NH_SERVER_ADDR. Но монитор ключей почему то видит только один из серверов. Но зато показывает, какой сервер (БД) забрала лицензию. Не подскажете, как сделать, чтобы было видно все ключи?

    Reply ↓
  77. ivan07

    Идея интересная конечно, все работает, но пользуюсь стандартным монитором от алладина, мне хватает. спасибо

    Reply ↓
  78. PVG_73

    Спасибо, за обработку! Жаль только что у самого алладина — оччень куцый функционал….

    Reply ↓
  79. izz

    я пользовалась до этого стандартным монитром от алладина, но обработка оказалась удобной, так как не надо больше ставить Алладин Монитор на компьютер тому, кто сам хочем смотреть, сколько лицензий занято и свободно! Спасибо!

    Reply ↓
  80. fisherboy

    Добрый день.

    После запуска отчета с таймаутом 3000 формируется пустой отчет с шапкой.

    В файле out.txt есть только 1 строка — первая из Aladin monitor (хотя на данный момент используется 41 лицензия из 50).

    Строка имеет вид: server07.ru;192.168.2.104;client02;HASP4;50;41;

    И при этом в файле out.txt заполнено 6 полей. А судя по коду должно быть 7.

    ОС — Win 2003.

    Можно ли это как-то решить? Очень хочется, чтобы заработало.

    Заранее спасибо.

    Reply ↓
  81. sumixam

    под 8.2 будет работать обычное приложение будет работать, и как дела с программными лицензиями

    спасибо

    Reply ↓
  82. nadjav

    Отчет выходит пустой на 8.2.

    Reply ↓
  83. mdSerg

    Не работает, если есть HL

    Нашел решение: надо зайти в монитор и в настройках отключить HL

    После этого начинает работать.

    За обработку спасибо — помогает проанализировать кем съедаются лицензии.

    У меня обнаружилась проблема — некоторые компьютеры съедают лицензии с разных серверов лицензий. Т.е. если запущено на одном компе несколько сеансов, то может быть съедена не одна лицензия, а несколько, т.к. для разных сеансов используюся разные HASP сервера

    Reply ↓
  84. JuliettT

    а на файловой будет работать?

    Reply ↓
  85. tormozit

    Почему отчет только на клиенте работает? Если запустить GetInfoForHASP.exe из рабочего процесса (на сервере), то он бесконечно выполняется. Видимо способ вытаскивания данных завязан на окно, которое в этом случае как то по-другому работает.

    Reply ↓
  86. vpaoli

    для Windows х-64 не работает экзешник … м.б. выложите для х-64 ?

    Reply ↓

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *