У меня есть код, который должен выполнять перетаскивание с PowerShell, но я не понимаю, почему он работает не так, как я надеюсь, чтобы он работал. Подробности ниже:
function Mouse-signature-import(){
$global:signature=@'
[DllImport("user32.dll",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]
public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);
'@
$global:SendMouseClick = Add-Type -memberDefinition $global:signature -name "Win32MouseEventNew" -namespace Win32Functions -passThru
}
function Mouse-Drag($from1,$from2,$to1,$to2){
Mouse-signature-import
[System.Windows.Forms.Cursor]::Position = "$from1,$from2"
$global:SendMouseClick::mouse_event(0x00000002, 0, 0, 0, 0);
$global:SendMouseClick::mouse_event(0x80000000, 0, 0, 0, 0); Dont know if I need this because drag is not working in all apps
[System.Windows.Forms.Cursor]::Position = "$to1,$to2"
$global:SendMouseClick::mouse_event(0x00000004, 0, 0, 0, 0);
write-host -f yellow -b black "Mouse-Drag" -nonewline; write-host -f Gray " from " -NoNewline; write-host -f Magenta "[" -nonewline; write-host -f Red "$from1 $from2" -nonewline;write-host -f Magenta "]" -nonewline; write-host -f Gray " to " -NoNewline; write-host -f Magenta "[" -nonewline; write-host -f Red "$to1 $to2" -nonewline; write-host -f Magenta "]";
}
Я вижу движение мыши и происходит перетаскивание, однако я использую это для выделения текста. При наведении мыши текст больше не выделяется. Мне нужно настроить этот код, чтобы при отводе мышью не выделять текст, который я выделил при перетаскивании. В идеале я буду использовать sendkeys после этой функции, чтобы сделать «^ c» для копирования большую часть времени, когда я использую эту функцию.
Я добавил эту строку, думая, что это поможет.
$global:SendMouseClick::mouse_event(0x80000000, 0, 0, 0, 0);
===================== РЕШЕНИЕ:
Это было время, как предложил ДК. Я просто добавил режим сна перед событием mouse-up.
function Mouse-Drag ($ from1, $ from2, $ to1, $ to2) {$ global: silentMouseFunctions = $ true Mouse-signature-import
[System.Windows.Forms.Cursor]::Position = "$from1,$from2"
$global:SendMouseClick::mouse_event(0x00000002, 0, 0, 0, 0);
[System.Windows.Forms.Cursor]::Position = "$to1,$to2"
start-sleep -s 1 # If we do not sleep, then the drag does not work right.
$global:SendMouseClick::mouse_event(0x00000004, 0, 0, 0, 0);
$global:silentMouseFunctions = $false
write-host -f yellow -b black "Mouse-Drag" -nonewline; write-host -f Gray " from " -NoNewline; write-host -f Magenta "[" -nonewline; write-host -f Red "$from1 $from2" -nonewline;write-host -f Magenta "]" -nonewline; write-host -f Gray " to " -NoNewline; write-host -f Magenta "[" -nonewline; write-host -f Red "$to1 $to2" -nonewline; write-host -f Magenta "]";