VBA SetForegroundWindow

Я пытаюсь написать код, который периодически ставит / удостоверяет, что программа стоит перед всеми остальными. Чтобы проверить это, я использовал Блокнот. Этот код работает только тогда, когда я открываю новую программу перед Блокнотом, а не если я открываю программу; затем начните выполнять мой код; затем поместите другую уже открытую программу перед блокнотом. В этом случае блокнот только мигает оранжевым на панели задач. Кто-нибудь может мне помочь с этим?

Sub test()
    Dim vPID As Variant
    vPID = Shell("notepad.exe", vbMaximizedFocus)
    AppActivate vPID

    'Notepad opens, I put another program in front of it
    Application.Wait (Now + TimeValue("00:00:05"))

    'I want Notepad back in front again:
    Dim HWND As Long
    Dim SetFocus As Long
    HWND = FindWindow("Notepad", vbNullString)
    SetFocus = SetForegroundWindow(HWND)

    Application.Wait (Now + TimeValue("00:00:05"))

    'Close Notepad
    Call Shell("TaskKill /F /PID " & CStr(vPID), vbHide)
End Sub

0 ответов

Другие вопросы по тегам