0 / 0 / 0
Регистрация: 21.11.2015
Сообщений: 4
1
VBS

Как сделать окно активным и вывести его на передний план

21.11.2015, 14:57. Показов 6116. Ответов 3
Метки нет (Все метки)

В скрпте создается окно Internet explorer (методом CreateObject("InternetExplorer.Application")). Далее неоходимо сделать это окно активным и вывести на передний план.Функция AppActivate не отрабатывает как надо (в Windows 8 и скорее всего в Windows 7). Каким способом можно сделать окно Explorera активным. Приложил пример (текст с другого скипта, но увидеть проблему можно).

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
Option Explicit
 
Const READYSTATE_COMPLETE = 4
 
Dim objIE
Dim objWindow
 
Dim boolDone, res
Dim strPassword
 
 
 
 
Dim fso, f1, ts,wshell,wshell2
Const ForWriting = 2
 
Set objIE = CreateObject("InternetExplorer.Application")
set wshell= createObject("WScript.Shell")
set wshell2= createObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CreateTextFile ("C:\Windows\Temp\test1.vbs")
Set f1 = fso.GetFile("C:\Windows\Temp\test1.vbs")
Set ts = f1.OpenAsTextStream(ForWriting, True)
ts.Write ("wscript.sleep 1000") 
ts.Close
With objIE
    .Navigate "about:blank"
    Do
        wshell.run "C:\Windows\Temp\test1.vbs",1,true
    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 & _
                "       <input type='radio' value='radio' name='Radio'>" & 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
    wshell2.AppActivate("Input password")
        wshell.run "C:\Windows\Temp\test1.vbs",1,true
        wshell.run "C:\Windows\Temp\test1.vbs",1,true
    Do
        wshell.run "C:\Windows\Temp\test1.vbs",1,true
    Loop Until boolDone
    
    On Error Resume Next
    .Quit
    On Error Goto 0
End With
 
Set objIE = Nothing
 
If Not IsEmpty(strPassword) Then
    msgbox"Password is [" & strPassword & "]"
Else
    msgbox "Password is not entered"
End If
 
 
'=============================================================================
 
'=============================================================================
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
'=============================================================================
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.11.2015, 14:57
Ответы с готовыми решениями:

Как вывести главное окно приложения на передний план
Всем здравствуйте. На форму помещён таймер. Если приложение свёрнуто на панель задач, то по...

Вывести окно на передний план
2. У меня сначала, запускается программа (Client.exe) потом идет команда msg. Но из за того, что...

Вывести окно на передний план
findwindow('Приложение с едит1',nil); что-то типо в общем нужно чтобы вывело окно с едита 1,...

Как перенести на передний план окно с приложением?
Добрый день! В WinXP одна программа запускает другую, и окно последней, с GUI, появляется не...

3
Покинул форум
4687 / 1329 / 337
Регистрация: 07.05.2015
Сообщений: 2,628
21.11.2015, 15:07 2
VitaFive, заглядывали на MSDN?
0
0 / 0 / 0
Регистрация: 21.11.2015
Сообщений: 4
21.11.2015, 15:14  [ТС] 3
Да. Не нашел ничего подходящего. Может чего не заметил :-(
0
0 / 0 / 0
Регистрация: 21.11.2015
Сообщений: 4
23.11.2015, 14:36  [ТС] 4
Сработал вариант
Visual Basic
1
2
3
4
5
6
Set locator = CreateObject("WbemScripting.SWbemLocator")
Set service = locator.ConnectServer()
Set props = service.ExecQuery("select * from Win32_Process where name = 'iexplore.exe'")
For Each objProcess in props
    wshell.AppActivate objProcess.ProcessId
Next
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.11.2015, 14:36
Помогаю со студенческими работами здесь

Как выдвинуть окно экселя на передний план?
?

Как сделать окно активным если известно его Hwnd?
Как сделать окно активным если известно его Hwnd?

Нужно закрыть модальное окно и сделать активным вызвавшее его окно
Мне нада средствами Win API закрыть модальное окно и сделать активным вызвавшее его окно. Кто знает...

Как вывести картинку на передний план
Здравствуйте, помогите пожалуйста разобраться, как вывести картинку из класса &quot;hdtv&quot; на передний...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru