Вообще в MSDN пишут следующее про параметры метода AppActivate
object
WshShell object.
title
Specifies which application to activate. This can be a string containing the title of the application (as it appears in the title bar) or the application's Process ID.
Раз он может быть ProcessID, то можем попробывать подсунуть его. Получить его можно, запустив приложение через WshShell.Exec
Собственно как то так.
Dim WshExec, ProcessID
Set WshShell = CreateObject("WScript.Shell")
Set WshExec = WshShell.Exec("notepad.exe")
ProcessID = WshExec.ProcessID
Do While WshExec.Status <> 1
WshShell.AppActivate ProcessID
WshShell.SendKeys "1"
WScript.Sleep 1000
Loop
MsgBox "END"
Крутим цикл активации приложения до тех пор, пока оно не завершится.
Ну всё бы хорошо, только эффект всё равно невнятный какой то.
P.S Возникает только 1 вопрос - как может быть активация окна по ID процесса ?? А если у процесса несколько окон ? Какое тогда активизировать ? По логике для активации нужен hWnd. Обычный window handle, который передаётся в API функции. Это я бы понял, но вот по процессу...:| Что то я видимо ещё не изучил в этой схеме. )
P.P.S Да, и кстати рекомендую прислушаться к совету alexii. Я сам не проверял, но очень возможно, что дело именно в UAC.
Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !