我正在监控记事本活动。我希望在按backspace
或delete
时删除该字符。
此外,我不想修改现有的剪贴板内容。
答案 0 :(得分:0)
我能想到可能做这样的事情的唯一方法就是在记事本中注入一个DLL,让你自动化它,但我不确定它是否可以接受这个。
有关如何执行此操作的文章可在以下位置找到:
http://www.codeproject.com/KB/COM/automatingwindowsapps.aspx
但是,我认为编写自己的记事本替代品实际上可能更容易为您做到这一点。可能你只需下载NotePad ++或类似的源代码并修改它。
答案 1 :(得分:0)
这可能不是最好的解决方案,但你可以用一点点创造力和AutoHotKey做几乎所有这样的事情。
这是我写的AHK脚本示例。只要用户在记事本窗口中按backspace
或delete
,它就会执行自定义代码。按Ctrl+Shift+z
将显示一个包含删除历史记录的消息框。它确实使用了剪贴板,但它将其恢复为原始值。
这是一个5分钟的黑客攻击,所以我确信它有问题。使用风险自负:)
#NoEnv
#SingleInstance
SendMode Input
_removalHistory =
_backupClipboard =
#IfWinActive, ahk_classNotepad
{
Backspace::Delete("left")
Delete::Delete("right")
^+z::MsgBox %_removalHistory%
}
Delete(direction) {
global
BackupAndClearClipboard()
length := GetSelectedLength()
if length = 0 SelectOneCharacter(direction)
Copy()
_removalHistory = %_removalHistory%%clipboard%
Send {Delete}
RestoreClipboard()
}
GetSelectedLength() {
local length = 0
Copy()
StringLen, length, clipboard
return length
}
SelectOneCharacter(direction) {
if (direction = "left") {
Send +{Left}
}
else if (direction = "right") {
Send +{Right}
}
}
Copy() {
Send ^c
ClipWait 0.01
}
BackupAndClearClipboard() {
global
_backupClipboard := ClipboardAll
clipboard =
}
RestoreClipboard() {
global
clipboard := _backupClipboard
_backupClipboard = ;free memory
}