-2

Как сделать так, чтобы при нажатии Ctrl+D на моем компьютере инициалы и отметка времени пользователя отображались в текущем формате: <RL mm/dd/yyy hh:mm:ss> . Время и дата должны соответствовать текущему времени и дате.

2 ответа2

0

Этот код AutoIt поместит отметку времени в буфер обмена, чтобы вы могли вставить ее в любое место. Он использует текущее зарегистрированное имя пользователя, невозможно получить инициалы человека на компьютере, если он не сохранен где-то для извлечения. Если мы узнаем больше о том, как вы намеревались использовать это, мы могли бы дать лучшее решение.

HotKeySet("^D", "PasteDate") ;Control+D

While 1
    Sleep(100)
WEnd

Func PasteDate()
    ClipPut(@UserName & " " & @MON & "/" & @MDAY & "/" & StringRight(@YEAR, 2) & " " & @HOUR & ":" & @MIN & ":" & @SEC)
EndFunc
0

Единственный способ получить инициалы, если у вас установлен Microsoft Office, и если пользователи ввели свои полные имена в опциях, их инициалы будут сохранены в настройках пользователя и доступны в реестре. Если это так, должна быть возможность доступа к этому значению реестра в AutoHotKey, используя функцию RegRead .

Раздел реестра, в котором хранятся инициалы пользователя:

HKEY_CURRENT_USER\Software\Microsoft\Office\Common\UserInfo

Чтобы показать чтение этого значения реестра, следующий код получает значение реестра и отображает его:

!+^b::
    RegRead, Initials, HKEY_CURRENT_USER, Software\Microsoft\Office\Common\UserInfo, UserInitials
    MsgBox, Initials are: %Initials%
Return

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


И для альтернативного способа форматирования даты ... В AutoHotKey и, возможно, в AutoIt, вы можете использовать FormatTime и CurrentDateTime чтобы получить хороший контроль над форматированием.

Например, ниже приведены различные ярлыки, которые я использую для вставки даты в разных форматах для разных ситуаций:

; Today - paste in date - separated with slashes - suitable for, e.g. OneNote
+^!T::
    FormatTime, CurrentDateTime,, dd/MM/yyyy
    SendInput %CurrentDateTime%
Return

; Today - paste in date - separated with underscores - suitable for, e.g. filenames
+^!Y::
    FormatTime, CurrentDateTime,, yyyy_MM_dd
    SendInput %CurrentDateTime%
Return

; Today - paste in date and time - separated with underscores - suitable for, e.g. filenames
+^!U::
    FormatTime, CurrentDateTime,, yyyy_MM_dd_HH_mm
    SendInput %CurrentDateTime%
Return

; Today - as above, but with fewer underscores
+^!I::
    FormatTime, CurrentDateTime,, yyyyMMdd_HHmm
    SendInput %CurrentDateTime%
Return

; Today - paste in date and time - in same format that OneNote 2007 generates, e.g. 04/01/2011, 22:56
+^!O::
    FormatTime, CurrentDateTime,, dd/MM/yyyy, HH:mm
    SendInput %CurrentDateTime%
Return

Итак, связывая все это вместе, получаем:

^d::
    RegRead, Initials, HKEY_CURRENT_USER, Software\Microsoft\Office\Common\UserInfo, UserInitials
    Send <
    Send, %Initials%{SPACE}
    FormatTime, CurrentDateTime,, MM/dd/yyyy HH:mm:ss
    SendInput %CurrentDateTime%
    Send >
Return

Загрузив этот код в AutoHotKey, когда я нажимаю Control + D, он как будто набрал:

<CM 10/05/2011 23:57:37>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .