HTA, глобальный список адресов Outlook, вывод на передний план
У меня есть приложение HTA, которое запускает глобальный список адресов (GAL) Outlook, чтобы пользователь мог легко выбрать получателя электронной почты из каталога нашей компании. Однако при запуске окно GAL не выводится на переднюю часть экрана. Он отображается за HTA.
Вот мой код Есть ли способ вывести GAL на передний план (или переместить HTA на задний план)?
<HEAD>
<!---------------Resize & Move Window------------------------------>
<script language="vbscript">
window.resizeto 400, 300
screenWidth = Document.ParentWindow.Screen.AvailWidth
screenHeight = Document.ParentWindow.Screen.AvailHeight
posLeft = (screenWidth - 400) / 2
posTop = (screenHeight - 300) / 2
window.moveTo posLeft, posTop
</script>
<!---------------Application Info---------------------------------->
<TITLE>GAL Picker</TITLE>
<HTA:APPLICATION ID="MyApp"
APPLICATIONNAME="My GAL Picker"
BORDER="Dialog"
CAPTION="Yes"
SCROLL="no"
MAXIMIZEBUTTON="Yes"
MINIMIZEBUTTON="Yes"
SHOWINTASKBAR="yes"
SINGLEINSTANCE="no"
SYSMENU="Yes">
</HEAD>
<BODY>
<body STYLE="font:12 pt arial; color:white;
filter:progid:DXImageTransform.Microsoft.Gradient
(GradientType=0, StartColorStr='#000000', EndColorStr='#0000FF')">
<SCRIPT LANGUAGE="VBScript">
'''''''''''''''''''''SUBS''''''''''''''''''''''''''''''''''''''''''''
Sub GALPicker
Dim objWordApp
Dim strEmailName
Set objWordApp = CreateObject("Word.Application")
strAddress = objWordApp.GetAddress(, "<PR_DISPLAY_NAME>", False, 1, 1, , True, True)
If strAddress = "" Then
Exit Sub
Else
End If
msgbox strAddress
MyGal.Value = strAddress
End Sub
</SCRIPT>
<H2>My Outlook GAL Picker</H2>
<P>Add Email Recipient:
<input type="text" name="MyGAL" size="30" onfocus="vbscript:Call GALPicker">
2 ответа
Вот пример использования AppActivate
во втором сценарии, чтобы он не блокировал ваш основной сценарий.
В вашем основном скрипте:
' Call a second script (asynchronously) to activate the window...
CreateObject("WScript.Shell").Run "activate.vbs", 0, False
' Now load our GAL window...
strAddress = objWordApp.GetAddress(...)
Второй скрипт (activate.vbs
) будет выглядеть так:
Set Shell = CreateObject("WScript.Shell")
' Try to activate the GAL window for 10 attempts/seconds...
For i = 1 To 10
If Shell.AppActivate("Select Name") Then Exit For
WScript.Sleep 1000
Next
Итак, мы запускаем второй скрипт, а затем продолжаем загрузку окна GAL "Select Name". Второй сценарий будет пытаться 10 раз (ожидая секунду между каждой попыткой), чтобы определить, может ли он найти окно "Выбор имени", и, если он это сделает, активирует его.
Это немного взломать, но это может сработать!
Для дальнейшего использования вот что я в итоге сделал...
<HEAD>
<!---------------Resize & Move Window------------------------------>
<script language="vbscript">
window.resizeto 460,255
screenWidth = Document.ParentWindow.Screen.AvailWidth
screenHeight = Document.ParentWindow.Screen.AvailHeight
posLeft = (screenWidth - 460) / 2
posTop = (screenHeight - 255) / 2
window.moveTo posLeft, posTop
</script>
<!---------------Application Info---------------------------------->
<TITLE>GAL Picker</TITLE>
<HTA:APPLICATION ID="MyApp"
APPLICATIONNAME="My GAL Picker"
BORDER="Dialog"
CAPTION="Yes"
SCROLL="no"
MAXIMIZEBUTTON="Yes"
MINIMIZEBUTTON="Yes"
SHOWINTASKBAR="yes"
SINGLEINSTANCE="no"
SYSMENU="Yes">
</HEAD>
<BODY>
<body STYLE="font:12 pt arial; color:white;
filter:progid:DXImageTransform.Microsoft.Gradient
(GradientType=0, StartColorStr='#000000', EndColorStr='#0000FF')">
<SCRIPT LANGUAGE="VBScript">
'''''''''''''''''''''SUBS''''''''''''''''''''''''''''''''''''''''''
Sub GALPicker
Dim objWordApp
Dim strEmailName
Set objWordApp = CreateObject("Word.Application")
'new line of code proviced by Bond, adjust file path as needed
CreateObject("WScript.Shell").Run "C:\Users\JohnDoe\Desktop\activate.vbs", 0, False
strAddress = objWordApp.GetAddress(, "<PR_EMAIL_ADDRESS>" & " ### " & "<PR_DISPLAY_NAME>", False, 1, 1, , True, True)
If strAddress = "" Then
Exit Sub
Else
End If
msgbox strAddress
MyGal.Value = strAddress
End Sub
</SCRIPT>
<H2>My Outlook GAL Picker</H2>
<P>Add Email Recipient:
<input type="text" name="testGAL" id= "MyGALTest" size="36" onfocus="vbscript:Call GALPicker">
Затем я создал новый файл.vbs согласно рекомендации Бонда...
Set Shell = CreateObject("WScript.Shell")
' Try to activate the GAL window for 10 attempts/seconds...
For i = 1 To 10
If Shell.AppActivate("Select Name") Then Exit For
WScript.Sleep 100
Next