2016-02-23 10 views
1

Существует проблема, которую я не могу решить самостоятельно.Невозможно сфокусировать окно

Я написал этот сценарий часть:

If WinExists("Application") then 
     WinActivate("Application") 
       ... 
       ... 
Else 
     MsMsgBox($MB_OK,"Attention", "openSiebelOrderScreen: Application not found!") 
     _endAutoIT() // ends the script at all 
EndIf 

Это хорошо работает на всех ОС Windows 8 компьютеров, за исключением одного. Существует одна система для ноутбуков, работающая под управлением Windows 8, но я не могу убедить этот компьютер получить окно приложения перед данной частью скрипта.

У меня есть Opt("WinTitleMatchMode", 2).

Есть ли у кого-то такая же проблема или, может быть, решение для этого?

+2

Вы посмотрели код возврата WinExsts и т. Д.? – Xenobiologist

+0

Ну, WinExists не ошибается. Я попытался получить статус окна с помощью WinGetState. На неудобном ноутбуке в результате получается номер «16», поэтому AutoIT обнаруживает, что окно приложения есть, но сведено к минимуму. Я попытаюсь заставить максимизировать окно приложения. Надеюсь, теперь это будет в центре внимания. –

+0

Хорошо, я решил это сейчас, так как я узнал, что приложение Windows определено AutoIt как сведенное к минимуму, но мне нужно различать WinActivate и WinSetState. Это также озадачивает меня. Но сейчас: «WinActivate ("Application") \t \t Sleep (500) \t \t Local $ WinHandle = WinWait ("Application", "", 10) \t \t Если BitAND (WinGetState ($ WinHandle), 16) = 16 Тогда \t \t \t WinSetState ($ WinHandle, "", @SW_MAXIMIZE) \t \t ENDIF» –

ответ

0

Рекомендуется использовать их при работе с окнами.

#RequireAdmin ;Will give your script a permission elevation (sometimes its needed) 
Opt("WinTitleMatchMode", 4) ;1=start, 2=subStr, 3=exact, 4=advanced, -1 to -4=Nocase 
Opt("WinSearchChildren", 1) ;0=no, 1=search children also 
0

Попробуйте поднять сценарий. Запустите его как администратор с тем же кодом, который вы используете на другом компьютере, на котором он работает. Возможно, пользователь ноутбука не является администратором, а при запуске скрипта он не имеет прав администратора.

Помнить; для того, чтобы сценарий мог взаимодействовать с приложением, он должен быть на том же или более высоком уровне приложения.

#RequireAdmin 

было бы в порядке.

+0

Ну, так как у меня нет прав администратора ни на одной машине, ни на пользователях, которые я пробовал сценарий на других машинах, это было бы только академическим. Но для меня это новая мысль. Благодарю. –

 Смежные вопросы

  • Нет связанных вопросов^_^