0

我有一个 HTA 应用程序,它启动 Outlook 的全局地址列表 (GAL),以便用户可以轻松地从我们的公司目录中选择电子邮件收件人。但是,当启动 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">
4

2 回答 2

0

为了将来参考,这就是我最终做的......

    <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
于 2014-04-09T23:16:47.383 回答
0

这是在第二个脚本中使用的示例,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“选择名称”窗口。第二个脚本将尝试 10 次(每次尝试之间等待一秒钟)以查看它是否可以找到“选择名称”窗口,如果可以,它将激活它。

这有点骇人听闻,但它可能会起作用!

于 2014-04-09T20:53:05.123 回答