Управление окнами прикладного ПО из 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, время: 02:32. |