2016-04-08 2 views
0

Я не могу заставить этот код работать на консольном приложении foxpro. Есть что-то, что мне не хватает. Я тестировал этот код для других приложений, и он работает.Powershell UI Automation на консоли Foxpro Application

ipmo "D:\WASP\WASP.dll" 
    Select-Window "ntvdm" | Set-WindowActive | Select-Control | Send-Keys "r" 

foxpro app

Когда я нажимаю «г» на клавиатуре, приложение принимает входной сигнал, но когда я запускаю этот код, он не делает.

спасибо.

ответ

0

Я просто попытался использовать WASP с вашим кодом против калькулятора и, похоже, работает правильно.

Вы можете попробовать использовать это:

[void][System.Reflection.Assembly]::LoadWithPartialName("'Microsoft.VisualBasic") 
[Microsoft.VisualBasic.Interaction]::AppActivate((ps ntvdm).MainWindowTitle) 
[void][System.Reflection.Assembly]::LoadWithPartialName("'System.Windows.Forms") 
[System.Windows.Forms.SendKeys]::SendWait("{R}") 

Btw, убедитесь, что ваше приложение действительно имеющее имя процесса NTVDM это может вызвать проблемы. Таким образом, вы делаете то же самое. Если у вас возникли проблемы с производительностью, вы можете добавить некоторое ожидание, т. Е. Sleep -m 50 между каждой строкой.