Управление окнами прикладного ПО из javascript
Доброго времени суток, уважаемые программисты.
На работе для автоматизации рабочих процессов начал изучать программирование, а именно javascript, т.к. программа поддерживает скрипты на этом языке программирования. Ниже вырезка из скрипта как пример. Сохраненный файл с расширением *htm мы [сотрудники компании] открываем в программе DatamineStudio3 (ПО моделирование для геологов, далее по тексту DM). И уже по ходу выполнения кода вызываются команды в программе DM. Например: строка 36 кода - исполняет команду "cancel-comand", которая отменяет все выполняемые команды, процессы. строка 37 кода - вызывает команду "end-link", как называемое связывание линий. В этих командах ничего сложного для нас нет, т.к. они выполняются без каких либо параметров. сторка 39 кода - вызывает команду "wireframe-union", для исполнения которой необходимо заполнить всплывающее окно (скриншот после кода). В этом и вопрос, как заполнить выделенные поля ввода исходных данных? Подскажите, пожалуйста. Пробовал уже сразу после команды следующей строкой прописывать исходные данные, в скобках ParseCommand пытался, между скобками и кавычками.. в общем перепробовал все варианты, которые пришли в голову, авось, получится. Но тут сложнее все. <HEAD> <META Name="DatamineScript" Content="Version3" /> <TITLE>Command Automatically recorded html script.</TITLE> <SCRIPT TYPE="text/javascript"> // ---------------------------------------------------------------------- // Standard initialisation for Datamine Studio 3 // var oDmApp= null; var oScript = null; function AutoConnect() { try { oScript = new ActiveXObject("DatamineStudio.ScriptHelper"); oScript.initialize(window); oDmApp = oScript.getApplication(); if (oDmApp == null || oDmApp.ActiveProject == null) //Attempt to Use the Active Datamine Session { alert("There are no active Studio3 projects open.\n Please open a Studio 3 project before continuing."); window.close(); // Closes the script window return false; }else return true; } catch(e) { alert("Failed\nReason: " + e.description); if ( oDmApp) oDmApp.Quit(); // release the session to close it down } return false; } function btnExecute_onclick() { try { ; oDmApp.ExecuteCommand("cancel-command"); oDmApp.ParseCommand("end-link"); oDmApp.ExecuteCommand("cancel-command"); oDmApp.ParseCommand("wireframe-union"); } catch(e) { alert("Failed\nReason: " + e.description); } } </SCRIPT> </HEAD> ![]() |
Цитата:
Отсюда не понятно как он управляется и какой он предоставляет интерфейс к обмену данными... |
Спасибо, ksa, что откликнулись.
Цитата:
Я так понимаю, что речь идет не о самих исходных данных, а о всплывающем окне, называемым элементом (если где-то что-то путаю, буду рад и премного благодарен, если поправишь). Как узнать что это за элемент, как управляется и какой интерфейс предоставляет к обмену данными? И еще, дабы исключить возможность ненужных телодвижений, возможно ли такое, что элементом невозможно управлять и обмениваться данными? P.S. Кстати, я уже и пытался даже эмитировать нажатия клавиш (буквы, Tab, Enter) но ни к чему это не привело, что мне показалось странным. |
serjloskut,
Вся проблема в том, что диалоговое окно вызывается не непосредственно из JS, а через метод oDmApp.ParseCommand(), который является методом приложения ActiveXObject("DatamineStudio.ScriptHelper"). Так что для автоматизации заполнения требуемых полей надо копать DatamineStudio.ScriptHelper Вообще в принципе этот метод позволяет передавать вместе с командой некие параметры, например, oDmApp.ParseCommand("sortx&IN=dhcollar&OUT=SortedCollars*KEY1=BHID@BINS=5@ORDER=1"); Но какие параметры вместе с какой-то командой могут быть переданы и как они будут использованы - ??? |
Цитата:
Цитата:
Если это какая-то стандартная приблуда - читают в документации на нее... Цитата:
Я сам таких элементов не делал. Но хоть бы и делал - х/з как аналогичную приблуду сделает другой человек. :) |
Цитата:
![]() С командой же, которая в стартпосте, окно другого формата и нужных данных нет... |
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 11:30. |