Хранить историю удаленных символов в блокноте - PullRequest
1 голос
/ 26 марта 2010

Я наблюдаю за работой Блокнота. Мне нужен символ, который удаляется при нажатии backspace или delete.

Кроме того, я не хочу изменять существующее содержимое буфера обмена.

Ответы [ 2 ]

0 голосов
/ 22 апреля 2010

Возможно, это не лучшее решение, но вы можете сделать почти все, что угодно, немного креативнее и 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
}
0 голосов
/ 22 апреля 2010

Единственный способ, которым я могу придумать, где можно было бы сделать что-то подобное, - это вставить DLL в блокнот, что позволило бы вам автоматизировать ее, но я не уверен, что это может поднять это.
Статью о том, как это сделать, можно найти по адресу:
http://www.codeproject.com/KB/COM/automatingwindowsapps.aspx

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...