Переместите мышь - VBScript и Excel Macro - PullRequest
2 голосов
/ 07 июля 2011

Найден скрипт, который использует Excel для перемещения мыши в VBScript.Это почти именно то, что я ищу для своего проекта, однако мне нужно немного изменить, чтобы позволить мне вводить координаты в коде, чтобы он перемещал мышь именно к этим координатам;код в настоящее время использует текущую позицию мыши и перемещается из этой позиции - мне нужно, чтобы мышь переместилась в положение ABSOLUTE, а не в положение RELATIVE.

Вот код VBS:

Option Explicit
Dim Excel, GetMessagePos, x, y, Count, Position

Set Excel = WScript.CreateObject("Excel.Application")

GetMessagePos = Excel.ExecuteExcel4Macro( _
    "CALL(""user32"",""GetMessagePos"",""J"")")
x = CLng("&H" & Right(Hex(GetMessagePos), 4))
y = CLng("&H" & Left(Hex(GetMessagePos), (Len(Hex(GetMessagePos)) - 4)))

Position = "+ 180"
Position = "- 180"
Excel.ExecuteExcel4Macro ( _
    "CALL(""user32"",""SetCursorPos"",""JJJ""," & x & " " & Position & "," & y & " " & Position & ")")

WScript.Sleep (100)
WScript.Echo "Program Ended"

В соответствии с кодом положение мыши перемещается из ее ТЕКУЩЕГО ПОЛОЖЕНИЯ +180, затем -180.Мне нужно изменить этот код, чтобы я мог поместить обе позиции (в именах переменных X и Y) и использовать их, чтобы установить точное положение указателя мыши.

Я возился с частью Excel.ExecuteExcel4Macro и проверил документацию для функции безрезультатно.Пожалуйста, вы можете помочь?Спасибо:)

РЕДАКТИРОВАТЬ: я использую VBScript, потому что система, на которой я создаю это, очень заблокирован.У меня нет никакой возможности использовать другие технологии, кроме этой, поэтому помощь будет принята!

1 Ответ

2 голосов
/ 07 июля 2011

Прежде всего, когда вы делаете это

Position = "+ 180"
Position = "- 180"

сначала вы устанавливаете Position на «+180», а затем сразу же перезаписываете его на «-180». Там нет смысла делать это.

Чтобы ответить на ваш вопрос более конкретно, замените эту часть:

x & " " & Position & "," & y & " " & Position

с чем-то вроде этого:

x & "," & y

До этого вам нужно будет сказать, какими должны быть новые координаты курсора, например,

x = "111"
y = "222"

Также все это вам не нужно и вы можете удалить:

GetMessagePos = Excel.ExecuteExcel4Macro( _
    "CALL(""user32"",""GetMessagePos"",""J"")")
x = CLng("&H" & Right(Hex(GetMessagePos), 4))
y = CLng("&H" & Left(Hex(GetMessagePos), (Len(Hex(GetMessagePos)) - 4)))

Вот где вы получаете старую позицию курсора, и вам это не нужно, поскольку вы говорите себе, что не хотите устанавливать относительную позицию.

В целом ваш скрипт должен выглядеть примерно так:

Option Explicit
Dim Excel, x, y

Set Excel = WScript.CreateObject("Excel.Application")

x = "111"
y = "222"
Excel.ExecuteExcel4Macro ( _
    "CALL(""user32"",""SetCursorPos"",""JJJ""," & x & "," & y & ")")

WScript.Sleep (100)
WScript.Echo "Program Ended"
...