1

Тема: HTA: Добавить альтернативные действия на кнопку

В HTA-приложении имеется довольно много кнопок\ссылок\менюшек, клики на которых приводят к функции доступа к удаленному ресурсу по сформированому и переданному пути, эта функция стартует просмотр шары под XP стандартным Explorer, под 7-кой - альтернативным скриптом. Суть моего желания в том, чтобы пользователь мог не запускать просмотр шары, а дал неким образом приложению понять, что есть необходимость этот путь всего лишь поместить в буффер клавиатуры.
Посылкой для такого действия может стать, например, удерживание клавиши Shift при клике на менюшке или кнопке. Но не придумывается как организовать увязку события нажатия в окне пограммы клавиши с работой функции доступа.
Добавлять-переписывать события на все объекты управления, откуда может вызываться просмотр - неинтересно. Была мысль по некой клавиатурной комбинации выставлять так сказать некий "симафор" - менять значение в глобальной переменной, а в работе функции доступа учитывать его и приводить значению по умолчанию.
 
Коллеги, буду благодарен за идеи-предложения.

WBR. Roman

2

Re: HTA: Добавить альтернативные действия на кнопку

Много текста... Хотя бы разделяйте на абзацы, дабы выделять основные посылы. (это вам на заметку и на будущее)

А теперь по сути: всё это элементарные условные переходы.
Надо вызывать функции обработки событий и зависимости от условий (event.shiftkey=true).

p.s. Здесь где-то я выкладывал HTML-pad. В нем реализована блокировка выпадающего меню при зажатой Ctrl.

3

Re: HTA: Добавить альтернативные действия на кнопку

Это делается примерно так (в коде самого html-элемента):
....
onclick='vbscript: if (window.event.shiftkey) then
   msgbox "Shift"
   func1()
else
   func2()
end if
....

4

Re: HTA: Добавить альтернативные действия на кнопку

Большое спасибо!

WBR. Roman

5

Re: HTA: Добавить альтернативные действия на кнопку

Сорри за "много букв")
Коды самих html-элементов править не хотелось, т.к. их много, к тому же есть и программно формируемые в нескольких местах кода.

Использование прямо в своей функции конструкции типа "if (window.event.shiftkey)" отлично работает для элементов размещенных в основном окне программы, но к сожалению не в выпадающих меню - пробовал по примерам из Вашего "HTML-pad" использовать не "window.event", а "Me.parentWindow.event" / "parentWindow.event, но я чего-то видимо еще недопонимаю, в общем - событие распознавать не получилось.

И был выкрутился другим - несколько специфичным способом (подсмотрел на форуме коллег - http://www.sql.ru/forum/actualtopics.as … 61&p=3):

<BODY onkeydown="alt=false;alt=window.event.altKey;" >
...
Function uf_altKey_copy(pVal)
    uf_altKey_copy = false
    If alt Then 'копируем путь вместо его открытия'
        '.... действия по копированию
        alt = false 'т.к. признак должен сработать единожды - сбрасываем его'
        uf_altKey_copy = true
    End IF
END FUNCTION
....
'в своей фунции действия "по-умолчанию" выполняем после сравнения:'
    If Not uf_altKey_copy( ..... ) Then
        '... действия по открытию шары
    End IF

Неаскетичная специфичность в том, что при кликах ALT не обязательно должен быть зажат, достаточно его предварительного однократного нажатия.
От использования Shift пришлось отказаться, т.к. в случаях использования html-элементов в виде ссылок при клике с шифтом, происходит выделение блока текста)

WBR. Roman

6

Re: HTA: Добавить альтернативные действия на кнопку

Елки-палки... с таким вариантом запоминания (onkeydown="alt=false;alt=window.event.altKey;") при переключении между задачами Альт-Табом прога также получает признак нажатия на Альт)

WBR. Roman