<?php // Полная загрузка сервисных книжек, создан 2024-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='\
Вообщем, режим «АнтиБосс» 😉
Прикольно! Но бесполезно… )
А можешь сделать ВК что-бы она выбранное окно принтскринила?… )
(2) Ну почему же бесполезно? Я на позапрошлом месте работы использовал аналог для сокрытия оперы, а то когда подходили к компу — много чего левого можно было в заголовках окон увидеть ;)))
Ну запринтскринить -то можно, если оно открыто, а если закрыто другим приложением, тогда врядли….
(3) В смысле принтскринить в файл, пофиг, с активизацией окна!…
Типа так:
ВК.ПринтскринВФайл(ПИДПроцессаОкна, ПутьКФайлу)
Но это я так, мечтаю… Кроме плюса предложить нечего )
А со всякими существующими длл-ками, типа V7ICQ.dll у меня лично, проблемы…
(4) Да в целом можно…. Так же по заголовку, активировать его, определить координаты и запринскринить выбранный диапазон.
(0) Ай молодец, сколько интересных идей…
Душелов жжот!
+1
.. а закладочки в 7-ке тоже будут?
.. чат — дорабатывается?
(7) С чатом пока взял перерыв… То, на практике его использовал, а чисто теоретически дорабатывать — не интересно…
Скрин 7.7 сейчас сделаю и выложу.
(7) Добавил скрин из 7-ки
(4) Чего, Нетленку уже отменили?
(10) Это что?
Добавил функцию получения скриншота. Пока в таком виде…
(12) Спасибо. Но, лично мне, по PID-у нужно… )
(10) Будем смотреть! )
(13) Добавил:
— Получение списка открытых окон — возвращает в виде строки: <title>Заголовок окна</title><pid>Идентификатор процесса</pid><path>Путь к exe-файлу процесса</path>
— ЗахватитьОкноПоPID(PID);
— СкриншотПоPID(PID, ПутьКФайлу);
(14) Класс! Спасибо огромное!!!
(15) Единственное, с чем я не стал заморачиваться — когда окон развернутое на весь экран, я просто делаю полный скриншот, не вычисляю размер окна.
)))) вот это прикол под конец раб дня…..
Антибосс))
клева…
тока скачал. сегодня присоединить уже не успею. завтра побалуюсь.
но идейка зачет
сорри за дубль…два раза даванул. модеры — убейте дубль и этот мессаг плиз
Когда располагаю на другом в закладке — фокус не устанавливается. Хотя окно «живое» — то есть отображаются все действия. А мышкой тыкнуть не моги. Еще помучаюсь, может у меня косяк
(20) на другом слое, конечно. в 7.7
(20-21) Ок, сейчас при себе исходников нет, дома посмотрю. Проблему воспроизвел.
Добрался наконец-то до нужной странички. Душелову однозначно +
(23) Это не та 😉
(20) что 7-ка, что 8-ка таким образом перехватывают окна, так что победить эту проблему не могу. На других платформах этой проблемы нет.
Очень удобная компонента. Каким методом можно автоматически перейти на вновь захваченное окно?
(26) Т.е. активировать нужную закладку?
(27) ага, и мне тож это нужно очень
Необходимо автоматически активировать закладку с захваченным окном… и скрыть закладку меню, что бы не вводить пользователя в заблуждение.
Добавлено:
Показать полностью
Спасибо… Буду пробовать.
Спасибо
Добрый день.
Дополнительные методы сильно упростили задачу разработки.
Однако, встала проблема программного закрытия приложения… Возможно ли интегрировать метод закрытия захваченного приложения по PID?
Спасибо в стакан не нальешь 😉
(33) Сейчас напишу метод закрытия окна с восстановлением или без.
Написать-то написал… Вот только обновить разработку не могу… 🙁
Добавлено:
Показать полностью
Скачать пока тут:http://dushelov.ru/1c/WinHost.zip
А можно на каком-нить менее ресурсоемком фраймверке сделать?
А то не очень хочется на серваке фраймверки городить?
Или хоть подсказку какую для имплементации?
(37) > можно на каком-нить менее ресурсоемком фраймверке сделать?
На каком?
(37)>> можно на каком-нить менее ресурсоемком фраймверке сделать?
(38)>На каком?
WTL/ATL например?
Хоть они и не фраймверки 🙂
Для получения демо-версии или покупки обращайтесь по контактам, указанным в профиле.
Снова в бесплатном доступе 🙂
Как определить программно что приложение захвачено компонентой???
(0)»Хотите играть в пасьянс в 1С, смотреть кино или просматривать секретные документы ;)»
Вась, а что, пасьянс внутри 1С пасьянистее становится? ;))))
Как проггер понимаю, как юзер — на … оно надо?
(43) Храните список захваченых приложений.
(44) 🙂 иногда надо скрывать лишние окна 😉
Стал быть примерно так?:
procedure TMiracleClass.CaptureAimp;
var wnd:hwnd;
begin
wnd:=FindWindow(‘TAIMP2Main’,nil);
if isWindow(wnd) then begin
SetParent(wnd,h1C);
end;
end;
Могу приватно подарить коды WM_COMMAND для управления Aimp прям из 1С 😉
Для особых извращенцев :)))))))))
Abadonna
http://www.thebrain.com/ на форме списка справочника и показать графические связи элементов, а потом изменить данные в 1С, если изменили связи в этой приблуде, так что коды WM_COMMAND для управления Aimp — это для меня 😉
Я такой извращенец, а точнее руководство!!! Необходимо запустить эту прогу
dushelov
У меня нет списка захваченных, я запускаю приложение и пытаюсь его захватить, но захват отрабатывает до открытия этой проги, поэтому надо организовать цикл проверки захвата, а ни один метод по захвату не возвращает никакого значения
А что он должен возвращать?
решил все циклом с получением списка запущенных и нахождением в списке нужного, спасибо
(48)>А что он должен возвращать?
По уму — хэндл ;)))))
(50) Скорее ПИД, хэндл для 1С-ы не нужен.
(51) Зато его наличие гарантирует, что захват произошел.
А на хрена 1С-е PID? Мочить при выходе?
(52) У меня методы есть, которые по пиду работают 😉
(53) Хэндл ВСЕГДА PID даст, а вот по PIDу хэндл — сложнее ;)))
Abadonna
(46) подари коды WM_COMMAND для управления Aimp прям из 1С
(0) Вопрос возник…как это все работает не разбирался…хочется сделать следующую штуку — надоело работать с консолью кода без подсказок. Возникла мысль сделать захват конфигуратора, затем перехват кода, текста и передача в консоль. Поможет ли мне эта ActiveX?
У меня зависает при использовании нескольких вкладок. Если на второй вкладке добавить этот элемент управления, сделать захват. И переключиться на первую вкладку — все вылетает 🙁
А можно-ли этой компонентой ловить окна внутри самой 1С?
Например, стандартные формочки (список значений, ввод значения и т.д.)
Вопрос. Как сделать открытие приложения внутри самой 1С? Запомнить ПИДы запущенных приложений до запуска нужного и после запуска найти новое открытое?
Я воспользовался твоей компонентой захвата окон — захватываю по имени файла. Работает отлично. Но не могу найти свойство закрытия вкладки програмно. Буду очень признателен за помощь. Спасибо.
мальчоник если чо эта фигня реализовывается и без вк
(61) Сотрясение воздуха не приветствуется, а конструктив — да.
А кто-нибудь может поделиться последней версией компоненты?
Мало с какими окнами работает
Добрый день. У кого-нибудь есть последняя версия компоненты? Заранее премного благодарен.
Почта — pohomoff@mail.ru