-
Не придумал как умнее спросить. Суть - Есть главная программа, в которой работает оператор, моя (в смысле, что есть исходники) Есть программа заказчика, в которую юзер переключается временами и в которой юзер вводит поля, далее щелкает проверить/изменить, программа выдаёт что-то.
Проблема - заказчик говорит, что такие-то данные не проверялись/заполнялись Оператор говорит, что заполнял и их программа выдала что-то там, о чем он и записал в Главной программе. По логам видно, что действительно, писал, переключался, где-то там нажимал кнопки, вернулся, писал в Главной дальше.
Пробовал разобрать чужое приложение на окна и тянуть текст - не получается, там по канве пишется или еще как, у программы практически нет окон получается.
Вариант навскидку - Переключение из Главной программы стартует процесс скриншоттинга, складываем в лог запись имени файла, сам файл ложим на хранилище или БД Возникает ситуация, смотрим по логу когда это было, поднимаем файл (блоб из БД) - показываем заказчику вот скрин c ответом вашей программы.
Проблема с подходом - ПО заказчика многовкладочное, требуется делать несколько скринов, точнее 2. На вкладке данных и на вкладке ответа/результата. При этом сколько юзер будет забивать данные по времени - неизвестно. От 2-3 сек до 10, в зависимости от квалификации кнопкодавления. Страницу результата смотрит .. ну сколько.. ну, пол.сек. Делать скрины со скоростью 0,5 сек - за 10 сек выходит 20 скринов. Операторов до 100 человек.Получается .. огромные объемы. Заказчик еще опомнится может через пару - тройку-четверо суток, хранить надо, получается , неделю.
Как бы поймать то время, что вот один скрин, а вот другой. Со вторым еще понятно - он последний после возврата в Главную программу. Хотя тоже не факт.. Юзер может предварительно опять выбрать окно ввода данных..
Вариант, перекрыть кнопки.. сам оператор пусть нажимает принтскрин. Вот данные, вот ответ. Принтскрин перехватываем, пишем сразу в файл. Но оператор может забыть нажать. И так минут 40 проработать.
в общем, пока не понимаю как сделать. Административное решение проблемы рассматривается. Но именно руководство попросило подумать над техническим вариантом, с минимальной переучкой оператора.
-
А если создать окно посреди экрана, красное, мигающее, StayOnTop, без фокуса, "Сделай скриншот!" и как кнопка что бы выглядело
И показывать его как только юзер ушел из Главной программы (переключился) (или активно окно программы заказчика)
ну, наверное, как забудет тут.. не должен забыть нажать, по идее
-
дурная затея.
убьешь ты кучу времени на скриншоты, а дальше:
заказчик говорит : ничего не делалось! оператор говорит : всё там делалось! ты : вот мои скриншотике!
заказчик : засунь их куда-нибудь обратно, ибо я вижу что ничего не делалось!
-
.... и покажет тебе свои скриншотики на которых действительно "ничего не делалось"
-
> там по канве пишется или еще как, у программы практически нет окон получается. так ява окна делает, может и не она одна, но сталкивался только с ней, что на форме никаких компонент, а вроде чисто рисунок. попробуй "разобрать" на исходники... https://habrahabr.ru/post/176825/не знаю чем поможет, но может хоть на мысль наведет, что и где перекрыть, если исходники будут.
-
Согласен с [2]. Но кому сейчас легко?)
Но если уж делать, я бы привязался к действиям пользователя в той проге: клики, нажатия кнопок.
Например: вкладки сверху - можно примерно понять когда переключится. С помощью анализа цветов можно понять какая вкладка.
Можно делать скриншот при нажатии любой кнопки пока открыта первая вкладка, а в итоге взять последний.
Было бы более ясно, если бы можно было бы увидеть программу.
-
а если скриншот не сразу сохранять, а сравнивать с хранящимся в памяти предыдущим (тупо попиксельно), и только если количество изменившихся пикселей больше заданного порога (типа открыли другую вкладку/окно) - сохранять _предыдущий_
-
> ВладОшин © (05.09.16 17:26)
> складываем в лог запись имени файла, сам файл ложим на хранилище > или БД > Возникает ситуация, смотрим по логу когда это было, поднимаем > файл (блоб из БД) - показываем заказчику вот скрин c ответом > вашей программы.
зачем в базу или хранилище? складывать локально у юзера (по желанию можно зашифровать вшитым же ключом, просто для вида). не думаю, что кто-то там решит мухлевать/править/взламывать. хранить в зависимости от накопившегося объема, вычислить эмпирическим путем. в зависимости от интенсивности работы там будет максимум несколько сот МБ в неделю, а если еще в 8 бит жать, то и в месяц. пробовать надо. естественно жать надо в png, особенно если известно, что на раб. столах нет котиков.
-
спасибо всем участникам. Все идеи прочитал, осмыслил Но... Отбой получен ) Договорились что пишем (в плохом качестве) видео всей работы, договорились на 2 дня хранение. В чб качестве, не напрягает 3 видео файла хранить. Позже - умерла так умерла.
> sniknik ©
Не, там QT Из тех окон что есть, обзываются с префиксом Qt он, типа, кросс платформа, как и ява, т.е. сам все контрлы рисует тоже.
iop © не в том дело. Заказчик, по идее может поднять логи, убедится в этом сам - его программа же, может лог какой прикрутить для таких случаев. Но там, похоже они заказали программу на фрилансе, потом заказали у нас людей. Идеальный бизнес - у тебя нет сотрудников кроме директора и главбуха ) Им на такое некогда смотреть, им дай результат или покажи, что его нет.
-
если все стороны заинтересованы то тогда это действительно другое дело.
но в этом случае тоже не надо тратить время на скриншотинг. оператор сам пишет видео или сам делает скриншоты и все им верят.
а выше я писал про случай когда исполнитель желает доказать заказчику, что он не верблюд. скриншоты здесь не помогут.
заказчик скажет: ну окей, я вижу, скриншотики красивые, вы молодец. Но у меня на моем конце все равно нет каких-то данных, поэтому потратьте еще своего времени на поиски чего-то там еще.
|