SendKeys не работает для определенной комбинации клавиш в QlikView 11

#qlikview

#qlikview

Вопрос:

Как вы можете видеть в моем скрипте ниже, я пытаюсь использовать SendKeys для отправки Ctrl ShiftS, чтобы показать все листы и объекты в QlikView, но это не работает. Однако, если я отправлю некоторые другие ключи, такие как «^ s» (Ctrl S), тогда это будет работать нормально.

 Set objShell = CreateObject("Wscript.Shell")
Set Qv = CreateObject("QlikTech.QlikView")

Qv.OpenDoc "C:Program FilesQlikViewExamplesDocumentsExecutive Dashboard.qvw"
set QvDoc = Qv.ActiveDocument
Wscript.Sleep 1000
objShell.AppActivate QvDoc.GetApplication.GetProcessId
objShell.SendKeys "^ s"
 

Комментарии:

1. objShell. SendKeys «^ S» (с заглавной буквы S) должны работать

2. нет, это не проблема, работают как заглавные «S», так и маленькие «s». Также все другие короткие клавиши, такие как Ctrl s, Ctrl o и т.д., работают, только когда дело доходит до (Ctrl Shift s), возникает проблема.

3. Но Ctrl Shift s = Ctrl S ?

4. В методе отправки клавиш Ctrl Shift s != Ctrl S

5. Поскольку «^ b» (Ctrl Shift B) работает для пункта меню «Закладки / Подробнее», я предполагаю, что эта проблема связана с QlikView. Я предполагаю, что из-за отсутствия пункта меню для функции «Показать все листы»..

Ответ №1:

В этом конкретном случае опция «Показать все листы и объекты» (которая запускается скрытой комбинацией клавиш Ctrl ShiftS) на самом деле является привилегией пользователя и является частью общей безопасности документа, тогда как что-то вроде сохранения обычно не является привилегией пользователя.

Поскольку безопасность документов очень важна, я считаю, что QlikTech отключил доступ на запись к этому параметру. Это означает, что он доступен только для чтения через COM. Однако может показаться непонятным, почему это должно повлиять на вас, поскольку вы просто передаете комбинации клавиш. Однако, поскольку вы создаете экземпляр QlikView через COM, я полагаю, что приложение QlikView обнаруживает это и, следовательно, автоматически отключает любые комбинации клавиш, которые могут изменить права пользователя для документа.

Альтернативной причиной этого может быть то, что документ QlikView выполняется в пользовательском режиме, а не в режиме администратора, и поэтому это также запрещает изменение пользовательских привилегий, поэтому, возможно, стоит проверить SECTION ACCESS в документе.

Альтернативой может быть управление видимостью скрытых листов с условием, указывающим на переменную, а затем изменение переменной для отображения скрытых листов с помощью скрипта Windows. Дополнительную информацию об этом решении и другие обсуждения можно найти здесь: http://community.qlik.com/thread/36719#155925