Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.08.2019, 13:51
Аватар для serjloskut
Новичок на форуме
Отправить личное сообщение для serjloskut Посмотреть профиль Найти все сообщения от serjloskut
 
Регистрация: 21.08.2019
Сообщений: 4

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

Ответить с цитированием
  #2 (permalink)  
Старый 21.08.2019, 13:57
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 12,469

Сообщение от serjloskut
как заполнить выделенные поля ввода исходных данных?
По картинке и твоему тексту программы не понятно что это за элемент...
Отсюда не понятно как он управляется и какой он предоставляет интерфейс к обмену данными...
Ответить с цитированием
  #3 (permalink)  
Старый 21.08.2019, 14:09
Аватар для serjloskut
Новичок на форуме
Отправить личное сообщение для serjloskut Посмотреть профиль Найти все сообщения от serjloskut
 
Регистрация: 21.08.2019
Сообщений: 4

Спасибо, ksa, что откликнулись.
Сообщение от ksa Посмотреть сообщение
По картинке и твоему тексту программы не понятно что это за элемент...
Отсюда не понятно как он управляется и какой он предоставляет интерфейс к обмену данными...
Знал, что появится такой вопрос, т.к. у меня он тоже возник, после прочтения кучи статей о COM, DOM и т.п. Я бы с радостью предоставил тебе необходимую информацию, если бы знал, как ее узнать.
Я так понимаю, что речь идет не о самих исходных данных, а о всплывающем окне, называемым элементом (если где-то что-то путаю, буду рад и премного благодарен, если поправишь). Как узнать что это за элемент, как управляется и какой интерфейс предоставляет к обмену данными? И еще, дабы исключить возможность ненужных телодвижений, возможно ли такое, что элементом невозможно управлять и обмениваться данными?
P.S. Кстати, я уже и пытался даже эмитировать нажатия клавиш (буквы, Tab, Enter) но ни к чему это не привело, что мне показалось странным.

Последний раз редактировалось serjloskut, 21.08.2019 в 14:14.
Ответить с цитированием
  #4 (permalink)  
Старый 21.08.2019, 14:24
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,893

serjloskut,
Вся проблема в том, что диалоговое окно вызывается не непосредственно из JS, а через метод oDmApp.ParseCommand(), который является методом приложения ActiveXObject("DatamineStudio.ScriptHelper").

Так что для автоматизации заполнения требуемых полей надо копать DatamineStudio.ScriptHelper

Вообще в принципе этот метод позволяет передавать вместе с командой некие параметры, например,
oDmApp.ParseCommand("sortx&IN=dhcollar&OUT=SortedCollars*KEY1=BHID@BINS=5@ORDER=1");

Но какие параметры вместе с какой-то командой могут быть переданы и как они будут использованы - ???

Последний раз редактировалось Dilettante_Pro, 21.08.2019 в 14:36.
Ответить с цитированием
  #5 (permalink)  
Старый 21.08.2019, 14:42
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 12,469

Сообщение от serjloskut
Я так понимаю, что речь идет не о самих исходных данных, а о всплывающем окне, называемым элементом
Именно так.
Сообщение от serjloskut
Как узнать что это за элемент, как управляется и какой интерфейс предоставляет к обмену данными?
Обычно спрашивают у авторов...
Если это какая-то стандартная приблуда - читают в документации на нее...
Сообщение от serjloskut
возможно ли такое, что элементом невозможно управлять и обмениваться данными?
Так смотря как это все сделано...

Я сам таких элементов не делал. Но хоть бы и делал - х/з как аналогичную приблуду сделает другой человек.
Ответить с цитированием
  #6 (permalink)  
Старый 21.08.2019, 14:49
Аватар для serjloskut
Новичок на форуме
Отправить личное сообщение для serjloskut Посмотреть профиль Найти все сообщения от serjloskut
 
Регистрация: 21.08.2019
Сообщений: 4

Сообщение от Dilettante_Pro Посмотреть сообщение
serjloskut,
Вообще в принципе этот метод позволяет передавать вместе с командой некие параметры, например,
oDmApp.ParseCommand("sortx&IN=dhcollar&OUT=SortedCollars*KEY1=BHID@BINS=5@ORDER=1");

Но какие параметры вместе с какой-то командой могут быть переданы и как они будут использованы - ???
Да такую команду (sortx) знаю и с ней проблем нет, т.к. все параметры имеют определенное (видимое моему неопытному глазу) имя (не знаю, честно, терминологию. В примере это IN, OUT, KEY1 и т.д.) и сами параметры (dhcollar, SortedCollars и т.д.). При вызове этой команды не из скрипта, появляется окно со всеми нужными данными в разных вкладках (на скриншоте одна из вкладок):

С командой же, которая в стартпосте, окно другого формата и нужных данных нет...
Ответить с цитированием
  #7 (permalink)  
Старый 21.08.2019, 14:56
Аватар для serjloskut
Новичок на форуме
Отправить личное сообщение для serjloskut Посмотреть профиль Найти все сообщения от serjloskut
 
Регистрация: 21.08.2019
Сообщений: 4

Сообщение от Dilettante_Pro
Так что для автоматизации заполнения требуемых полей надо копать DatamineStudio.ScriptHelper
Сейчас через OLEVIEW попробую покопаться.
Сообщение от ksa
Обычно спрашивают у авторов...
Если это какая-то стандартная приблуда - читают в документации на нее...
Уже писали официальные письма от компании, но ответа так и не получили. В справке к программе об этом тоже ничего нет.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление размеров в стилях через JavaScript MC-XOBAHCK Общие вопросы Javascript 16 01.09.2017 15:16
Управление Canvas из Javascript под браузер mmmaks2004 Javascript под браузер 0 30.01.2016 22:44
web управление на основе javascript MaksLuk Элементы интерфейса 31 29.03.2015 21:27
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 18:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 19:34