Lotusscript Microsoft Word 2013, выпуск

Я пытаюсь открыть Microsoft Word 2013 скриптом лотоса на моем экране из системы. Он отлично работает для более низкой версии (2010 и ниже), но выдает ошибку только для Microsoft 2013 ... Значение Findwindow ("OppusApp", Title1) равно 0, следовательно, выдает обработанную ошибку, она должна быть 1 .. (Title1 - это идентификатор, относящийся к в Microsoft Word, а OppusApp - это имя класса окна). Предложите обходной путь?

Код:

Function WaitForWordtoFinish(PathName As String,DocName As String, ReadOnlyFlag As Integer) As Integer
     Dim hwnd As Long
     Dim hwnd1 As Long
     Dim hwndstate As Long
     Dim hwndact As Long
     Dim wordobj As Variant
     Dim AppTitle As String
     Dim AppTitle1 As String
     Dim hwndactivate As Long
     Dim hwnWord As Long
     Dim cnt As Long
     Dim ReadTitle As String * 256
     If ReadOnlyFlag = 1 Then
          AppTitle = "Microsoft Word - " & DocName & " (Read-Only)"
     Else
          AppTitle = "Microsoft Word - " & DocName
     End If

     AppTitle1 = "Microsoft Word"
     hwndact = GetActiveWindow()
     Set wordobj = CreateObject("Word.Basic")
     ''=====wordobj.AddAddIn templatedir & "acts.dot",1
     **hwnWord = FindWindow("OpusApp", AppTitle1)
     If hwnWord = 0 Then**
          WaitForWordtoFinish = False
          Messagebox "Please close all Word Documents prior to opening a Word Document through ACTS.", 0+16 , "Warning - Opened Word Document(s)"
          Exit Function
     End If
     wordobj.Appmaximize "Microsoft Word",1
     hwndstate = ShowWindow(hwndact,0)
     If ReadOnlyFlag = 1 Then
          wordobj.FileOpen PathName & DocName, 0, 1
     Else
          wordobj.FileOpen PathName & DocName
     End If
     '=====wordobj.ToolsRevisions 1, 1, 1
     wordobj.AddAddIn templatedir & "acts.dot",1
     wordobj.ToolsMacro "InterfaceMacro", True

person Tinku    schedule 18.06.2015    source источник
comment
Пожалуйста, покажите больше кода, чтобы другие могли воспроизвести вашу проблему. Вот так непонятно, что и когда происходит.   -  person Torsten Link    schedule 18.06.2015
comment
Я отредактировал сообщение, пожалуйста, посмотрите код, функция FindWindow ссылается на значение 0, поэтому выдает всплывающее окно Пожалуйста, закройте все текстовые документы ... оно должно иметь значение 1   -  person Tinku    schedule 18.06.2015
comment
Какая конкретная версия Microsoft Office 2013 у вас установлена? Это случайно 64 бит?   -  person Richard Schwartz    schedule 18.06.2015
comment
И ГДЕ / КАК определены FindWindow, ShowWindow и все остальные API-интерфейсы?   -  person Torsten Link    schedule 18.06.2015
comment
@RichardSchwartz Это 32-битное слово Microsoft Word 2013   -  person Tinku    schedule 19.06.2015
comment
@TorstenLink Этот API использовался на кнопке, которая вызывает функцию WaitForWordtoFinish, следовательно, при нажатии кнопки требуется всплывающее окно MS Word из системы, и мы можем редактировать и сохранять соответственно, что отлично работает для более низких версий, но при использовании 2013 года в моей системе , он перестал работать   -  person Tinku    schedule 19.06.2015
comment
Я только что проверил: в моем Word 2013 заголовок окна - Имя файла - Word, а не Microsoft Word - Имя файла. Наверное, в этом причина ...   -  person Torsten Link    schedule 19.06.2015
comment
@TorstenLink Спасибо за ответ, я постараюсь исправить название заголовка, но только опасаюсь, что это будет мешать пользователю более низкой версии, если я внесу изменения?   -  person Tinku    schedule 19.06.2015
comment
В этом случае вам нужно будет вызвать FindWindow с новым заголовком, и если код возврата вернется равным нулю, вы можете вызвать FindWindow со старым заголовком, и, надеюсь, он вернется не равным нулю.   -  person Richard Schwartz    schedule 19.06.2015


Ответы (1)


Я просто обобщаю всю информацию в комментариях и делаю из нее ответ:

В вашем коде вы используете функцию Windows «FindWindow», чтобы идентифицировать ваше окно MS Word.

Соответствующие строки вашего кода:

AppTitle1 = "Microsoft Word"
...
hwnWord = FindWindow("OpusApp", AppTitle1)

В более старых версиях Office заголовок окна имел следующий вид: Microsoft word - FileName.doc

В Office 2013 заголовок окна FileName.doc - Word

Чтобы ваш пример работал с обеими версиями, вам необходимо проверить обе:

AppTitle = "Microsoft Word - " & DocName
hwnWord = FindWindow("OpusApp", AppTitle)
If hwnWord = 0 Then '- not found, try the other one
  AppTitle = DocName & " - Word"
  hwnWord = FindWindow("OpusApp", AppTitle)
  If hwnWord > 0 then '- Found window...
    '- do whatever needed
  End If
End If
person Torsten Link    schedule 22.06.2015