Проблема с работой на удаленном рабочем столе Topic is solved

Помощь в написании скриптов
marusa122
Posts: 135
Joined: 22 Mar 2023, 07:48

Проблема с работой на удаленном рабочем столе

20 Mar 2024, 15:25

Есть скрипт Autohotkey. Но от не работает, если удаленный рабочий стол (куда нужно посылать комбинации клавиш) развернут на весь экран. Как это исправить?

Code: Select all

#SingleInstance, force
#NoEnv

ProgramName	:= "Program1"
TitleName	:= "Удаленка — 111.111.11.11:8888 — Подключение к удаленному рабочему столу"
TitleClass	:= ahk_class TscShellContainerClass
WindowTitle	:= TitleName . A_Space . TitleClass
Location	:= "D:\Удаленка.rdp"

; в этой части все работает, т.к. удаленный рабочий стол свернут в окно
F1:: 
Clipboard=
Clipboard=password
CoordMode, Mouse, Screen
Run, % Location
Sleep, 5000
Send, {Enter}
Sleep, 2000
Send, %Clipboard%
Sleep, 50
Send, {Enter}
Sleep, 3000
MouseMove, 905, 10
Sleep, 100
Click, 905, 10
Sleep, 100
WinMove, % WindowTitle,, -20, -7, 1399, 749,,
WinSet, Style, -0xC00000, % WindowTitle
Click, 1200, 100
Sleep, 1000
Send, ^+{~}
Return 

; в этой части проблемы
F2::
WinSet, Style, +0xC00000, %WindowTitle%
WinMove, % WindowTitle,, 0, 0, ,,,
Click, 1320, 10
; на этом моменте удаленный рабочий стол развернут на весь экран
Sleep, 2000
Click, 1200, 100
; и клавиши ниже отправляются не на удаленный рабочий стол, а в никуда
Send, ^+{Escape} 
Sleep, 1000
Send, {Up}
Send, {Delete}
return

Escape::ExitApp
mcl
Posts: 387
Joined: 04 May 2018, 16:35

Re: Проблема с работой на удаленном рабочем столе

20 Mar 2024, 18:57

marusa122 wrote:
20 Mar 2024, 15:25
Есть скрипт Autohotkey. Но от не работает, если удаленный рабочий стол (куда нужно посылать комбинации клавиш) развернут на весь экран. Как это исправить?
Привет :3

Сам мучаюсь с RDP, но всегда в оконном режиме. На днях попровожу опыты, вдруг действительно есть нюансы.
Ну а пока...

Code: Select all

; Тут забыты кавычки. AHK воспринимает это как конкатенацию двух пустых переменных,
; и в результате TitleClass тоже оказывается пустым. Но, похоже, дело не в этом.
TitleClass	:= ahk_class TscShellContainerClass
WindowTitle	:= TitleName . A_Space . TitleClass

; ...

; Работают ли клавиши в полноэкранном режиме, скажем, в том же блокноте?
; По RDP не всегда можно открыть диспетчер задач через  Ctrl+Shift+Esc.
; Можно попробовать другие способы, вроде Win+X, или Win+R → 'taskmgr'
; Какая выбрана опция в настройках подключения на вкладке 'Локальные ресурсы' → 'Клавиатура'?
Send, ^+{Escape} 
Sleep, 1000
Send, {Up}
Send, {Delete}
return

Escape::ExitApp
[/quote]
marusa122
Posts: 135
Joined: 22 Mar 2023, 07:48

Re: Проблема с работой на удаленном рабочем столе

21 Mar 2024, 00:46

@mcl,
mcl wrote:
20 Mar 2024, 18:57
Работают ли клавиши в полноэкранном режиме, скажем, в том же блокноте?
Нет.
mcl wrote:
20 Mar 2024, 18:57
По RDP не всегда можно открыть диспетчер задач через Ctrl+Shift+Esc.
Можно попробовать другие способы, вроде Win+X, или Win+R → 'taskmgr'
Нет, только через Ctrl+Shift+Esc
mcl wrote:
20 Mar 2024, 18:57
Какая выбрана опция в настройках подключения на вкладке 'Локальные ресурсы' → 'Клавиатура'?
"Только в полноэкранном режиме".
mcl_at_work

Re: Проблема с работой на удаленном рабочем столе  Topic is solved

21 Mar 2024, 03:25

marusa122 wrote: Работают ли клавиши в полноэкранном режиме, скажем, в том же блокноте?
> Нет.

По RDP не всегда можно открыть диспетчер задач через Ctrl+Shift+Esc.
> Нет, только через Ctrl+Shift+Esc

Какая выбрана опция в настройках подключения на вкладке 'Локальные ресурсы' → 'Клавиатура'?
> "Только в полноэкранном режиме".
Попробуйте сменить настройку клавиатуры удалённого подключения на «На этом компьютере», а сочетание клавиш ^+{Esc} в скрипте — на !+{Home}.
vmech
Posts: 469
Joined: 25 Aug 2019, 13:03

Re: Проблема с работой на удаленном рабочем столе

21 Mar 2024, 03:25

@marusa122
@mcl
Будет непросто.
viewtopic.php?p=93693#p93693
Please post your script code inside [code] ... [/code] block. Thank you.
vmech
Posts: 469
Joined: 25 Aug 2019, 13:03

Re: Проблема с работой на удаленном рабочем столе

24 Mar 2024, 02:17

На просторах нашёл относительно простое решение. К сожалению мне проверить негде. Попробуйте, возможно поможет.

Code: Select all

; this line should be put on top (auto-exec) section of ahk script
SetTimer, SuspendOnRDPMaximized, 500

; this actual code label and the fn can be put anywhere in the script file
SuspendOnRDPMaximized:
If WinActive("ahk_class TscShellContainerClass") {
    WinGet, maxOrMin, MinMax, ahk_class TscShellContainerClass
    if (maxOrMin = 0) {
        WinGetPos, PosX, PosY, WinWidth, WinHeight, ahk_class TscShellContainerClass
        if (PosY = 0) {  ; it is fully maximized
            Suspend, On
            WinWaitNotActive, ahk_class TscShellContainerClass
            Suspend, Off
        }
    }
}
return
ЗЫ. Смысл там простой: RDP клиент в полноэкранном режиме ставит свой клавиатурный хук. А т.к. очередь хуков в ОС организована в виде стэка, то первым обрабатывается хук, установленный последним. Таймер в коде каждые пол-секунды проверяет состояние окна RDP клиента, и если оно развёрнуто на весь экран, тогда переустанавливает хук Autohotkey, чтобы он был последним в стэке, и, соответственно, обрабатывался первым в очереди.
Please post your script code inside [code] ... [/code] block. Thank you.

Return to “Помощь”

Who is online

Users browsing this forum: No registered users and 3 guests