Автоматический ввод пароля при открытии XLS файлов

Обсуждение программ nnCron и nnCron LITE

Автоматический ввод пароля при открытии XLS файлов

Postby AleXH » Tue, 08 Sep 2015, 10:34

При запуске запароленных эксель файлов, выдаётся окошко запроса пароля - хотелось бы вводить пароль автоматом. Макросы экселя в этот момент ещё недоступны, поэтому решение должно быть внешним. Возможно это решить с помощью nnCron и если да, то как?
Last edited by AleXH on Sat, 12 Sep 2015, 15:43, edited 1 time in total.
AleXH
 
Posts: 44
Joined: Sun, 31 Mar 2013, 10:23

Re: Срабатывание на создание окна

Postby VoidVolker » Tue, 08 Sep 2015, 10:58

Требуется плагин SendInput.
Code: Select all
#( Задача_105708092015
\ NoActive
SingleInstance
WatchWinCreate: "<win pattern>"
Action:
100 PAUSE
S" <password>" AKEYS
50 PAUSE
Enter
)#
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Срабатывание на создание окна

Postby AleXH » Tue, 08 Sep 2015, 11:58

Большое спасибо. WinSpy для окна ввода пароля выдаёт следующие данные:
Spoiler: show
Image
Текст задачи:
#( OP_Password
\ NoActive
SingleInstance
WatchWinCreate: "Microsoft Excel - PERSONAL.XLS"
Action:
100 PAUSE
S" 12345" AKEYS
50 PAUSE
Enter
)#

Плагин в настройках подключил, задачу добавил, nnCron перезагрузил. Запускаю xls - не работает, пароль не вводит. Но если вместо "Microsoft Excel - PERSONAL.XLS" использовать "Microsoft Excel", то вводит. Похоже создаётся окно "Microsoft Excel", а затем меняется его титул - добавляется " - имя_файла".

Возможно ли матчить титулы и классы дочерних окон?
AleXH
 
Posts: 44
Joined: Sun, 31 Mar 2013, 10:23

Re: Срабатывание на создание окна

Postby VoidVolker » Tue, 08 Sep 2015, 13:02

Code: Select all
WatchWinCreate: "Microsoft Excel *"
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Срабатывание на создание окна

Postby AleXH » Tue, 08 Sep 2015, 13:09

Он тогда будет посылать пароль по все открываемые файлы, нужно матчить конкретные дочерние титулы и классы. Проблема в том, что имя открываемого файла в титул записывается самым последним, перед этим открывается персональная книга с макросами-обработками и в этот момент выдаётся окно с запросом пароля, титул в этот момент такой: "Microsoft Excel - PERSONAL.XLS". Т.е. так работает:
Spoiler: show
Code: Select all
#( OT_Password
\ NoActive
SingleInstance
WatchWinCreate: "Microsoft Excel"
Action:
  500 PAUSE
  WIN-EXIST: "Microsoft Excel - PERSONAL.XLS"
  IF
    100 PAUSE
    S" 12345" AKEYS
    50 PAUSE
    Enter
  THEN
)#

- пароль вводит, но опять же, во все открываемые xls.

Сделал с посылкой пароля в дочернее окно:
Spoiler: show
Code: Select all
#( OT_Password
\ NoActive
SingleInstance
WatchWinCreate: "Microsoft Excel"
Action:
  500 PAUSE
  WIN-EXIST: "Microsoft Excel - PERSONAL.XLS"
  IF
    500 PAUSE
    FOR-CHILD-WINDOWS: "bosa_sdm_XL9"
      100 PAUSE
      S" 12345" AKEYS
      50 PAUSE
      Enter
    ;FOR-CHILD-WINDOWS
  THEN
)#

- не работает... Почему?

Как я понял, нужно как-то проверить на соответствие командную строку запуска, в данном случае она следующая: "C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE" "C:\Temp\1.xls". Но как это сделать?
AleXH
 
Posts: 44
Joined: Sun, 31 Mar 2013, 10:23

Re: Срабатывание на создание окна

Postby Morituruz » Tue, 08 Sep 2015, 19:18

User avatar
Morituruz
 
Posts: 727
Joined: Sun, 14 Oct 2007, 01:51

Re: Срабатывание на создание окна

Postby AleXH » Tue, 08 Sep 2015, 21:43

Посмотрел - не одолеть, слишком сложно.
AleXH
 
Posts: 44
Joined: Sun, 31 Mar 2013, 10:23

Re: Срабатывание на создание окна

Postby VoidVolker » Wed, 09 Sep 2015, 11:07

Code: Select all
#( Задача_110509092015
\ NoActive
SingleInstance
Action:
BEGIN
    WIN-EXIST: "Microsoft Excel - PERSONAL.XLS" IF
        100 PAUSE
        S" 12345" AKEYS
        50 PAUSE
        Enter
    THEN
    100 PAUSE
AGAIN
)#

Code: Select all
#( Задача_110809092015
\ NoActive
SingleInstance
Action:
BEGIN
    S" Microsoft Excel - PERSONAL.XLS" ACTIVE-WINDOW COMPARE NOT IF
        100 PAUSE
        S" 12345" AKEYS
        50 PAUSE
        Enter
    THEN
    100 PAUSE
AGAIN
)#
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Срабатывание на создание окна

Postby AleXH » Wed, 09 Sep 2015, 23:12

VoidVolker, такое решение не подходит, так как в этом случае абсолютно во ВСЕ открываемые XLS будет слаться пароль, что приведёт к замене данных в активной ячейке на пароль. Как я уже писал, сложность в том, что в момент появления окна-запроса пароля титул основного окна "Microsoft Excel - PERSONAL.XLS", персональной книги, содержащей макросы-надстройки (кнопки на панели) во всех открываемых файлах. Имя запускаемого файла отобразится в титуле только после ввода пароля. Понять, какой файл был запущен можно только из анализа командной строки, в которой видно какой файл пытается открыть excel. Попробуйте запаролить XLS и увидите, что тривиальная задача по автоматическому вводу парроля перестаёт быть таковой.
AleXH
 
Posts: 44
Joined: Sun, 31 Mar 2013, 10:23

Re: Срабатывание на создание окна

Postby AleXH » Sat, 12 Sep 2015, 15:38

Сделал так:
Code: Select all
  WIN-EXIST: "Microsoft Excel - PERSONAL.XLS"
  IF
    FOR-PROCS: "EXCEL.exe"
      \ MSG: "%FOUND-PID%"
      S" %FOUND-PID%" PROC-EXIST? \ PID или 0
      GetProcessCmdLine
      MsgBox
    ;FOR-PROCS
  THEN

Правильный pid в %FOUND-PID% пишется, но выдаётся сообщение "Error: OpenProcess" из:
Code: Select all
: GetProcessCmdLine { pid \ hProcess1 retLength bufAddr -- a u }
pid FALSE PROCESS_QUERY_INFORMATION PROCESS_VM_READ OR OpenProcess \ 0=error
DUP TO hProcess1 NOT IF S" Error: OpenProcess" EXIT THEN

Для других процессов командные строки возвращает, а для этого портабл экселя нет, ОС XPSP2. Куда копать дальше?
AleXH
 
Posts: 44
Joined: Sun, 31 Mar 2013, 10:23

Re: Автоматический ввод пароля при открытии XLS файлов

Postby VoidVolker » Sat, 12 Sep 2015, 16:22

AleXH wrote:
Code: Select all
S" %FOUND-PID%" PROC-EXIST? \ PID или 0     
GetProcessCmdLine
MsgBox

Code: Select all
S" %FOUND-PID%"

Правильнее так:
Code: Select all
FOUND-PID

А в целом так:
Code: Select all
FOUND-PID GetProcessCmdLine MsgBox
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Автоматический ввод пароля при открытии XLS файлов

Postby AleXH » Sat, 12 Sep 2015, 18:46

VoidVolker, Morituruz, Wyz,
Спасибо. Благодаря вам, задача решена.
Spoiler: show
Code: Select all
#( Send_Password_2XLS
WatchWinCreate: "Microsoft Excel"
Action:
  250 PAUSE
  FOR-CHILD-WINDOWS: "Файл уже используется"
    Enter
    250 PAUSE
  ;FOR-CHILD-WINDOWS
  1250 PAUSE
  FOR-CHILD-WINDOWS: "Введите пароль"
    S" EXCEL.exe" PROC-EXIST?
    GetProcessCmdLine S" C:\Temp\1.xls" SEARCH
    IF 100 PAUSE S" 12345" AKEYS 50 PAUSE Enter THEN
    2DROP
  ;FOR-CHILD-WINDOWS
)#

Определение GetProcessCmdLine добавлено в плагин my.spf
AleXH
 
Posts: 44
Joined: Sun, 31 Mar 2013, 10:23

Re: Автоматический ввод пароля при открытии XLS файлов

Postby AleXH » Mon, 14 Sep 2015, 11:10

VoidVolker
Предлагаю GetProcessCmdLine добавить в process.spf, либо extwords.spf на постоянной основе.
AleXH
 
Posts: 44
Joined: Sun, 31 Mar 2013, 10:23


Return to nnCron forum (Russian)

Who is online

Users browsing this forum: No registered users and 1 guest