Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.03.13;
Скачать: CL | DM;

Вниз

Работа с Windows-окнами из страницы, открывшейся в IE   Найти похожие ветки 

 
И. Павел ©   (2010-11-29 15:48) [0]

Здравствуйте.

У нас на предприятии есть САП-портал. Сейчас мне нужно сделать в нем iView (страницу, другими словами), которая будет содержать иконки - ссылки. При нажатии на такую иконку, должно запуститься определенное приложение на машине клиента. Но кроме этого требуется также ввести логин и пароль за пользователя, так, чтобы пользователь сразу попал в главное окно приложения уже зарегистрированным.

Для своих программ я просто создам записи в реестре (чтобы можно было определить их местонахождение) и добавлю возможность авторизации через командную строку. Учитывая то, что JavaScript, вроде бы, может работать с реестром, этого должно хватить, чтобы нормально вызывать мои программы.

Но с чужими программами такого не выйдет: их нужно открыть, подождать и найти появившееся окно авторизации, ввести в окна пароля и логина нужные величины (SetText в WinAPI) а потом нажать на кнопку "Ввод".

Конечно, можно сделать exe файл, который будет запускаться с помощью JavaScript и выполнять все нужные действия, но тогда этот файл должен бeдет лежать на компьютере пользователя, а мне хотелось бы, чтобы вся программа располагалась на сервере, и работала просто как часть портала.

Подскажите, пожалуйста, можно ли работать с Windows окнами спомощью JavaScript, и, если можно, то как?
Может быть, есть какие-нибудь другие варианты запуска чужих программ, при этом не прибегая к помощи локальной программы, написанной на Delphi и лежащей на компьютере клиента?


PS: у всех сотрудников стоит IE, т.е. различия JavaScript для разных браузеров в моей задаче не важны.

Заранее спасибо.


 
clickmaker ©   (2010-11-29 15:56) [1]

> JavaScript, вроде бы, может работать с реестром

да ну? и давно?


 
И. Павел ©   (2010-11-29 16:03) [2]

> да ну? и давно?

Черех ActiveX, кажется может:
http://forum.codenet.ru/archive/index.php/t-3055.html


 
clickmaker ©   (2010-11-29 16:06) [3]

а, ну через активикс все можно
главное - его установить )


 
И. Павел ©   (2010-11-29 16:08) [4]

> а, ну через активикс все можно

А можно через него работать с WinAPI?
Было бы здорово, но все, что удается найти в поиске - это как через JavaScript работать с окнами браузера :)


 
ZukZuk   (2010-11-29 16:08) [5]

>Подскажите, пожалуйста, можно ли работать с Windows окнами спомощью JavaScript,

Дельфийский взгляд на вещи, такой дельфийский. Ну предназначен Javascript только для работы с объектной моделью браузера и DOM, а ActiveX в Javascript так это отдельное Майкросовтовое расширение.
Сейчас модет Сильверлайт, уж он предоставляет доступ к COM API, делай кнопочки на нем.


 
clickmaker ©   (2010-11-29 16:10) [6]

> [4] И. Павел ©   (29.11.10 16:08)
> > а, ну через активикс все можно
>
> А можно через него работать с WinAPI?

ActiveX по сути - это обычное приложение, COM-сервер. Все упирается в настройки безопасности браузера и степень тупости пользователя.


 
clickmaker ©   (2010-11-29 16:13) [7]

вернее, даже не тупости, а доверчивости )


 
Anatoly Podgoretsky ©   (2010-11-29 16:15) [8]

> clickmaker  (29.11.2010 16:13:07)  [7]

Социальная инженерия.


 
И. Павел ©   (2010-11-29 16:58) [9]

> вернее, даже не тупости, а доверчивости )

Ну у нас портал закрытый. А сотрудникам можно выставить соответствующие права в IE, а на странице написать, чтобы не отклоняли объекты ActiveX.

Подскажите, пожалуйста, есть ли готовый ActiveX для работы с API? Ну а точнее для вызова FindWindows, SetText, отсылки сообщений, ну и всего прочего, что нужно для того, чтобы автоматически пройти процесс авторизации?


 
ZukZuk   (2010-11-29 17:11) [10]

И. Павел ©   (29.11.10 16:58) [9]

Нет, ну вы видели? Поймите же, что то, чем вы занимаетесь - извращенское извращение. Понятно, если бы авторизоваться на смежный сайтах или вебсервисах, но запускать авторизованно приложения с веб странички, да еще не предназначенные для автоматической авторизации, это какая-то блажь, прости Господи. Вы хотите прямо для такой экзотики найти готовый да еще и ActiveX?


 
И. Павел ©   (2010-11-29 19:03) [11]


> ZukZuk   (29.11.10 17:11) [10]

Знаю я, что ничего хорошего в этом нет. Но передо мной поставили задачу, а значит придется ее решать. До меня вообще пароли в куки хотели хранить ;)

Меня интересует не ActiveX, выполнящий авторизацию, а ActiveX, позволяющий вызывать системные функции.


 
И. Павел ©   (2010-11-29 19:08) [12]


> Сильверлайт

Кажется, он ориентирован на .net? Или его можно как-нибудь прикрутить к ява-порталу без лишних проблем (установок) для клиента?


 
Дмитрий С ©   (2010-11-29 19:55) [13]

Через ГП домена можно распространить сертификат, которым подписать свой внешний activex контрол + придется реализовать какой то интерфейс (не помню какой), чтобы IE считал твой контрол безопасным для использования на странице.
Такой будет автоматически качаться из сети и ставится (примерно как adobe flash player). И делай уже что вздумается.


 
И. Павел ©   (2010-11-29 21:33) [14]

Тогда попробую оформить программу в виде ActiveX.

Пожалуйста, порекомендуйте статью(и), где описывается, как их создавать, прикреплять к странице и использовать? Лучше всего на Delphi, но в принципе WinAPI везде один. (поиск, конечно, выдает массу ссылок, но буду рад, если кто-нибудь порекомендует материал, т.к. раньше с созданием этих объектов я не сталкивался, а хотелось бы начать сразу с хорошего описания)


 
И. Павел ©   (2010-11-30 08:28) [15]

И кроме [14] у меня еще один вопрос:
 Подскажите, пожалуйста, есть ли у IE какое-нибудь место, куда можно было бы поместить файл (с паролем пользователя) и не опасаться, что он там останется в случае, если в скрипте произойдет ошибка и моя программа сама этот файл не удалит?


 
И. Павел ©   (2010-11-30 08:30) [16]

Именно файл нужного мне формата. Т.е. речь, конечно, идет не о куки.


 
Иксик ©   (2010-11-30 13:13) [17]

http://www.iopus.com/imacros/


 
И. Павел ©   (2010-11-30 14:27) [18]

Кажется, получилось подцепить ActiveX к странице. В HTML пишу:

<BODY>
 <OBJECT ID="ActiveFormX1" WIDTH=871 HEIGHT=640
  CLASSID="CLSID:19786E00-E056-47B8-8ABF-52148CA6573F">
  CODEBASE="C:\OCX\ActiveFormProj1.ocx"
     <PARAM NAME="Login" VALUE="Edit1">
     ...
 </OBJECT>
</BODY>


Но у меня возникло 2 вопроса:
1. Я генерирую CLASSID спомощью ActiveX Control Pad. Он его случайным образом генерирует, или исходя из имени ActiveX? А может возникнуть такая ситуация, что на момент первого вызова моей страницы у пользователя уже есть объект с данным CLASSID? Что тогда будет? Вместо моего ActiveX объекта вызовется какой-то другой?
2. Как можно указать версию моего ActiveX? Так чтобы, если у пользователя стоит мой ActiveX, но более старой версии, произошло обновление из CODEBASE?
Заранее спасибо.

> Иксик ©

Действительно классная штука. Спасибо. Пока что покупать не будем, т.к. кажется, начал с ActiveX разбираться, но на будущее ссылку сохраню.


 
ZukZuk   (2010-11-30 15:54) [19]

>Он его случайным образом генерирует, или исходя из имени ActiveX?

RTFM: http://en.wikipedia.org/wiki/Globally_unique_identifier (глобально уникальный!)

>Как можно указать версию моего ActiveX?

GUID и определяет версию. Для того, чтобы браузер качал из Codebase нужно либо менять имя файла, либо чистить кэш.


 
И. Павел ©   (2010-12-01 08:01) [20]

Большое вам спасибо, ZukZuk!

Получается, что CLASSID - это настолько большое число, генерируемое особым методом, что вероятностью его совпадения в компьютерной технике просто пренебрегают (если я что-то недопонял - поправьте меня, пожалуйста).

Сертификат пока делать не буду - просто настроим IE так, чтобы он не ругался на ActiveX с нашего портала.

Кажется, со всеми подробностями я разобрался, и все таки задача оказалась не такой уж и нерешаемой :)


 
icelex ©   (2010-12-01 14:44) [21]

хозяйке на заметку
http://ithappens.ru/story/4836


 
И. Павел ©   (2010-12-01 14:52) [22]

> [21] icelex ©   (01.12.10 14:44)

Значит, не один я тружусь на рынке Российского велосипедостроения :)



Страницы: 1 вся ветка

Текущий архив: 2011.03.13;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.007 c
15-1291018641
NailMan
2010-11-29 11:17
2011.03.13
Скончался Лесли Нильсен


3-1254836260
romichshos
2009-10-06 17:37
2011.03.13
Вычисляемые поля


3-1254799519
dort12
2009-10-06 07:25
2011.03.13
list index out of bounds(7) Где ошибка


2-1292718994
CrHD
2010-12-19 03:36
2011.03.13
Варианты подгрузки кода


15-1290785836
Юрий Зотов
2010-11-26 18:37
2011.03.13
Видеокурс Delphi