Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] VBS - Спрятанный ввод (http://forum.oszone.net/showthread.php?t=241809)

Ragnazar 01-09-2012 19:30 1981248

VBS - Спрятанный ввод
 
Нужна функция вроде InputBox и при вводе отображались звездочки
Но отправлялась именно введенная информация а не звездочки
(Нужно для формы ввода пароля)

Iska 02-09-2012 10:52 1981455

Ragnazar, можете попробовать так:
читать дальше »
Код:

Option Explicit

Const READYSTATE_COMPLETE = 4

Dim objIE
Dim objWindow

Dim boolDone
Dim strPassword


Set objIE = WScript.CreateObject("InternetExplorer.Application", "IE_")

With objIE
        .Navigate "about:blank"
       
        Do
                WScript.Sleep 100
        Loop Until Not .Busy And .ReadyState = READYSTATE_COMPLETE
       
        .AddressBar = False
        .MenuBar    = False
        .StatusBar  = False
        .ToolBar    = False
       
        With .Document
                .write "<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.0 Strict//EN"">" & vbCrLf & _
                                "<html>" & vbCrLf & _
                                "        <head>" & vbCrLf & _
                                "                <meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>" & vbCrLf & _
                                "                <meta http-equiv='Content-Language' content='ru'>" & vbCrLf & _
                                "                <title>Input password</title>" & vbCrLf & _
                                "                <style>" & vbCrLf & _
                                "                        body {" & vbCrLf & _
                                "                                margin: 1em 1em 1em 1em;" & vbCrLf & _
                                "                                color: MidnightBlue;" & vbCrLf & _
                                "                                background-color: LightSteelBlue" & vbCrLf & _
                                "                        }" & vbCrLf & _
                                "                </style>" & vbCrLf & _
                                "        </head>" & vbCrLf & _
                                "        <body>" & vbCrLf & _
                                "                <label for='sPassword' accesskey='P'>Enter <u>p</u>assword:</label>" & vbCrLf & _
                                "                <input type='password' name='sPassword' id='sPassword' size='50'>" & vbCrLf & _
                                "                <input type='button' value='OK' name='OK'>" & vbCrLf & _
                                "                <input type='button' value='Отмена' name='Cancel'>" & vbCrLf & _
                                "        </body>" & vbCrLf & _
                                "</html>"
               
                .getElementsByName("OK").item(0).onclick    = GetRef("IEButtonClick")
                .getElementsByName("Cancel").item(0).onclick = GetRef("IEButtonClick")
               
                With .getElementByID("sPassword")
                        .onKeyPress                            = GetRef("IEOnKeyPress")
                        .focus
                End With
               
                Set objWindow = .parentWindow
               
                With .Body
                        objWindow.resizeTo .scrollWidth + 25, .scrollHeight + 32
                        objWindow.moveTo (objWindow.screen.availWidth - .offsetWidth) \ 2, (objWindow.screen.availHeight - .offsetHeight) \ 2
                End With
               
                Set objWindow = Nothing
               
                '.getElementByID("sPassword").focus
        End With
       
        .Visible = True
       
        boolDone = False
        strPassword = Empty
       
        Do
                WScript.Sleep 100
        Loop Until boolDone
       
        On Error Resume Next
        .Quit
        On Error Goto 0
End With

Set objIE = Nothing

If Not IsEmpty(strPassword) Then
        WScript.Echo "Password is [" & strPassword & "]"
Else
        WScript.Echo "Password is not entered"
End If

WScript.Quit 0
'=============================================================================

'=============================================================================
Sub IE_OnQuit
        boolDone = True
End Sub
'=============================================================================

'=============================================================================
Sub IEButtonClick
        Select Case Me.Name
                Case "OK"
                        strPassword = objIE.Document.getElementByID("sPassword").Value
                        boolDone = True
                Case "Cancel"
                        boolDone = True
                Case Else
                        ' Nothing to do
        End Select
End Sub
'=============================================================================

'=============================================================================
Sub IEOnKeyPress
        Select Case Me.ownerDocument.parentWindow.event.keyCode
                Case 13
                        strPassword = Me.Value
                        boolDone = True
                Case 27
                        boolDone = True
                Case Else
                        ' Nothing to do
        End Select
End Sub
'=============================================================================


Ragnazar 03-09-2012 16:05 1982213

Спасибо!
Только вот при пустом пароле (ничего не вводя) выдает Password is []
Тоесть else почему-то не работает

Можно-ли как-то изменить активное окно? А то папка со скриптом остается активным

Iska 03-09-2012 17:00 1982241

Цитата:

Цитата Ragnazar
Только вот при пустом пароле (ничего не вводя) выдает Password is [] »

Ragnazar, всё верно. Ничего не ввели и нажали «OK»/«Enter» — пароль пустой. Нажали «Отмена»/«Esc» или просто закрыли диалог — то есть, отказались от ввода пароля — это другое. Попробуйте.

Цитата:

Цитата Ragnazar
Можно-ли как-то изменить активное окно? А то папка со скриптом остается активным »

Вопрос не понятен. Поясните.

Ragnazar 05-09-2012 09:25 1983324

Когда создается некое окно (от боксов до ie) то они как-то на заднем плане.
Что-бы они стали активными на них надо нажать но можно-ли автоматически это сделать?

Iska 05-09-2012 11:37 1983408

Ragnazar, понятней не стало. Что за «боксы»?

Ragnazar 06-09-2012 19:01 1984338

InputBox NsgBox Wscript.Echo
Когда на alt+Tab нажимаешь то меняется активное окно

Iska 06-09-2012 20:19 1984374

Ясно. «Боксы» — это окна диалогов.

Теперь переведите всю фразу на русский язык:
Цитата:

Цитата Ragnazar
Когда создается некое окно (от боксов до ie) то они как-то на заднем плане. »


Ragnazar 06-09-2012 20:28 1984381

Когда создается диалоговое окно то что-бы оно было поверх всех окон мне нужно на него нажать
Или выбрать через Alt+Tab
Или нажать на него на панели Пуск (В нижней части где все включеные окна)

Iska 07-09-2012 08:14 1984564

Цитата:

Цитата Ragnazar
Когда создается диалоговое окно »

Речь идёт всё ещё про это окно, создаваемое скриптом:



?

Ragnazar 07-09-2012 08:27 1984569

Да и про него тоже

Iska 07-09-2012 08:33 1984572

У меня такого не происходит.

Запишите короткое видео, демонстрирующее данное поведение с данным скриптом.

Ragnazar 07-09-2012 09:09 1984580

http://www.youtube.com/watch?v=KM2dL...ature=youtu.be

Iska 07-09-2012 10:26 1984616

Ragnazar, насколько я понимаю, у Вас проблема в том окне, откуда Вы запускаете скрипты. Что это за окно? Оно не похоже на окно Проводника.

Ragnazar 07-09-2012 10:33 1984625

Да. Это Explorer++ (Проводник со вкладками)
Но такая проблема из видео только с этим скриптом

Iska 07-09-2012 11:25 1984652

Ragnazar, скажите, наблюдается ли у Вас та же проблема при использовании обычного Проводника?

Ragnazar 07-09-2012 12:08 1984677

Да.

Iska 07-09-2012 13:28 1984728

Ragnazar, сожалею, у меня подобного не происходит.


Время: 18:57.

Время: 18:57.
© OSzone.net 2001-