Isso é possível . Vamos nos fazer duas perguntas:
-
O que acontece quando arrastamos e soltamos um arquivo?
- Uma função da API é chamada para começar a arrastar o arquivo.
- Uma janela é exibida enquanto você arrasta.
- Uma função da API é chamada quando você solta o arquivo.
- A operação é executada.
-
Como podemos modificar o comportamento de arrastar e soltar?
- Poderíamos ligar as funções da API e ajustar os parâmetros / código para mover em vez de copiar.
- Mas há uma maneira mais fácil : podemos usar um modificador de tecla de atalho enquanto arrasta ...
Assim, com alguns scripts simples, podemos manter pressionada a tecla SHIFT quando você soltar o arquivo com base na janela!
Após algumas pesquisas para descobrir o nome da janela (funções de Window Window do gancho com Monitor de API ), agora podemos criar um AutoHotkey script que manterá a tecla SHIFT até depois que você soltar o arquivo .
LButton Down::
Send, {LButton Down}
IfWinExist, ahk_class SysDragImage
{
Send, {LShift Down}
}
return
LButton Up::
IfWinExist, ahk_class SysDragImage
{
Send, {LButton Up}
Sleep, 500 ; Feel free to adjust higher/lower to improve the behavior.
Send, {LShift Up}
}
Send, {LButton Up}
return
Ainda não tentei o código acima, mas acho que deve funcionar.
Possíveis melhorias:
- Use AutoIt em vez disso, com uma função como WinWait , para que você não precise reagir no mouse.
- Ir para o material difícil e escrever e ligar as funções da API, embora você precise hackar um pouco.
Espero que o script acima funcione ou que eu tenha lhe dado um bom começo. : -)