1 (изменено: димитрий2, 2018-10-09 10:12:26)

Тема: AHK: Быстрое создание нового файла .doc - сочетанием мышки и клавиши

Доброе утро.

При щелчке левой кнопки мышки - можно вызвать контекстное меню, в котором есть такая опция "создать новый файл". В частности я например часто создаю новые вордовские файлы.

Как в TotalComander или в Проводнике - при щелчке правой кнопкой мышки + зажатой Left Alt по пустому месту  - создавать новый файл .doc (вордовский файл) ?

2 (изменено: rowe, 2018-10-09 13:35:10)

Re: AHK: Быстрое создание нового файла .doc - сочетанием мышки и клавиши

#IfWinActive ahk_class CabinetWClass
!RButton::    ;  "Alt+RButton"
#IfWinActive ahk_class ExploreWClass
!RButton::
#IfWinActive ahk_class Progman
!RButton::
#IfWinActive ahk_class WorkerW
!RButton::
    WinGetText, FullPath, A
    StringSplit, PathArray, FullPath, `n
    FullPath = %PathArray1%

    FullPath := RegExReplace(FullPath, "(^Адрес: )", "")
    StringReplace, FullPath, FullPath, `r, , all

	if WinActive("ahk_class Progman") or WinActive("ahk_class WorkerW") ; Desktop ahk_class WorkerW при нажатии Win+D
		SetWorkingDir, %UserProfile%\Desktop
	else ; Windows Explorer
		SetWorkingDir, %FullPath%
    If ErrorLevel
        Return
    FileAppend, , test.doc
    Return
#IfWinActive

3

Re: AHK: Быстрое создание нового файла .doc - сочетанием мышки и клавиши

rowe, не работает.
Скрипт на указанные сочетания клавиш - никак не реагирует

4

Re: AHK: Быстрое создание нового файла .doc - сочетанием мышки и клавиши

F2::
WinGetText, FullPath, A
MsgBox %FullPath%

Что у вас в окне сообщения в первой строке, если запустить в проводнике?

5

Re: AHK: Быстрое создание нового файла .doc - сочетанием мышки и клавиши

rowe, у меня в первой строке сообщения - написано:
Адрес: Библиотеки\Изображения

6

Re: AHK: Быстрое создание нового файла .doc - сочетанием мышки и клавиши

!RButton:: 
if WinActive("ahk_class Progman") or WinActive("ahk_class WorkerW")  
 {
  FullPath = %UserProfile%\Desktop
  FileAppend, ,%FullPath%\test.doc
 }	
   else
Explorer_GetSelection()
Explorer_GetSelection(hwnd="") {
    WinGet, process, processName, % "ahk_id" hwnd := hwnd? hwnd:WinExist("A")
    WinGetClass class, ahk_id %hwnd%
    if  (process = "explorer.exe") 
        if (class ~= "(Cabinet|Explore)WClass") {
            for window in ComObjCreate("Shell.Application").Windows
                if  (window.hwnd==hwnd)
                    path := window.Document.FocusedItem.path

            SplitPath, path,,dir
			FileAppend, ,%dir%\test.doc
        }
        return 
}

7

Re: AHK: Быстрое создание нового файла .doc - сочетанием мышки и клавиши

rowe, подскажите - почему этот файл создается лишь один раз.
(Если создавать через контекстное меню - то можно сколько угодно файлов сделать )

8

Re: AHK: Быстрое создание нового файла .doc - сочетанием мышки и клавиши

Имя файла с меткой времени HH.mm.ss.doc. 

!RButton:: 
if WinActive("ahk_class Progman") or WinActive("ahk_class WorkerW")  
 {
  FullPath = %UserProfile%\Desktop
  FormatTime, TimeString, , HH.mm.ss 
  FileAppend, ,%FullPath%\%TimeString%.doc
 }	
   else
Explorer_GetSelection()
Explorer_GetSelection(hwnd="") {
    WinGet, process, processName, % "ahk_id" hwnd := hwnd? hwnd:WinExist("A")
    WinGetClass class, ahk_id %hwnd%
    if  (process = "explorer.exe") 
        if (class ~= "(Cabinet|Explore)WClass") {
            for window in ComObjCreate("Shell.Application").Windows
                if  (window.hwnd==hwnd)
                    path := window.Document.FocusedItem.path

            SplitPath, path,,dir
            FormatTime, TimeString, , HH.mm.ss 
			FileAppend, ,%dir%\%TimeString%.doc
		  }
        return 
}

9

Re: AHK: Быстрое создание нового файла .doc - сочетанием мышки и клавиши

rowe, а подскажите - как этот скрипт в Тотал Коммандере заставить работать ?
Сейчас он почему-то в нем не работает.

10 (изменено: rowe, 2018-10-10 19:07:15)

Re: AHK: Быстрое создание нового файла .doc - сочетанием мышки и клавиши

как этот скрипт в Тотал Коммандере заставить работать ?

Скрипт для проводника и рабочего стола. У меня перестает работать через пару минут.
Кнопка для TC. 

TOTALCMD#BAR#DATA
cmd /c if /i not exist "Новый файл.doc" (CD.>"Новый файл.doc"&exit) else for /l %a in (2,1,999) do if /i not exist "Новый файл (%a).doc" (CD.>"Новый файл (%a).doc"&exit)

Wcmicons.dll,28
Новый файл

1
-1 

Если нужно именно через AutoHotkey:

#IfWinActive ahk_class TTOTAL_CMD
!RButton:: 
FormatTime, TimeString, , HH.mm.ss
Send +{F4}  ;  "Shift+F4"
WinWait, ahk_class TCOMBOINPUT
ControlSetText, Edit1, %TimeString%.doc, ahk_class TCOMBOINPUT
Control, Check, , TButton3, ahk_class TCOMBOINPUT
Return

11 (изменено: Malcev, 2018-10-10 20:26:31)

Re: AHK: Быстрое создание нового файла .doc - сочетанием мышки и клавиши

Я бы после нажатия правой кнопки мыши отслеживал бы окно под мышью через MouseGetPos.
И если класс окна, тот который мне нужен, то совершал нужные действия.
У тоталкоммандера определить текущую директорию можно так, после чего можно будет создать через ahk файл и сделать refresh.

f11::
WinGet, OutputVar, ControlList , ahk_class TTOTAL_CMD
loop, parse, outputvar, `n
{
   ControlGetText, OutputVar, % a_loopfield, ahk_class TTOTAL_CMD
   if (SubStr(outputvar, 0) = ">")
   {
      outputvar := SubStr(outputvar, 1, StrLen(outputvar)-1)
      break
   }
}
msgbox % outputvar

12

Re: AHK: Быстрое создание нового файла .doc - сочетанием мышки и клавиши

rowe , не работает.
Запускаю ваш код AHK.

Делаю щелчок правой кнопкой мышки ( с клавишей Left Alt) по пустому месту.
Тотал коммандер вместо того, чтобы создать новый файл *.doc -  предлагает "Введите имя редактируемого файла".

13

Re: AHK: Быстрое создание нового файла .doc - сочетанием мышки и клавиши

У меня без ошибок.  Попробуйте так:

!RButton:: 
if WinActive("ahk_class Progman") or WinActive("ahk_class WorkerW")  
 {
  FullPath = %UserProfile%\Desktop
  FormatTime, TimeString, , HH.mm.ss 
  FileAppend, ,%FullPath%\%TimeString%.doc
 }	
   else
Explorer_GetSelection()
Explorer_GetSelection(hwnd="") {
    WinGet, process, processName, % "ahk_id" hwnd := hwnd? hwnd:WinExist("A")
    WinGetClass class, ahk_id %hwnd%
    if  (process = "explorer.exe") 
        if (class ~= "(Cabinet|Explore)WClass") {
            for window in ComObjCreate("Shell.Application").Windows
                if  (window.hwnd==hwnd)
                    path := window.Document.FocusedItem.path

            SplitPath, path,,dir
            FormatTime, TimeString, , HH.mm.ss 
			FileAppend, ,%dir%\%TimeString%.doc
		  }
        Return  
}
#IfWinActive ahk_class TTOTAL_CMD
!RButton::
IfWinNotActive, ahk_class TTOTAL_CMD
  Return
Send +{F4}  ;  "Shift+F4"
WinWaitActive, ahk_class TCOMBOINPUT, , 2
FormatTime, TimeString, , HH.mm.ss
ControlSetText, Edit1, %TimeString%.doc, ahk_class TCOMBOINPUT
Control, Check, , TButton3, ahk_class TCOMBOINPUT
Return

14

Re: AHK: Быстрое создание нового файла .doc - сочетанием мышки и клавиши

rowe , то же самое, что и раньше.
Не работает.

Запускаю код AHK.

Делаю щелчок правой кнопкой мышки ( с клавишей Left Alt) по пустому месту (в тотал коммандере).
Тотал коммандер вместо того, чтобы создать новый файл *.doc -  предлагает "Введите имя редактируемого файла".

Можно спросить - зачем в вашем скрипте нужны сочетания клавиш Shift+F4 ?
Они же запускают вывод окошка "Введите имя редактируемого файла".

Я спрашивал про сочетания Правого щелчка мышки + зажатая клавиша Left Alt.

15

Re: AHK: Быстрое создание нового файла .doc - сочетанием мышки и клавиши

Shift+F4 открывает окно создания файла, ControlSetText вставляет значение TimeString,  Control, Check, , TButton3 кнопка ok.

16

Re: AHK: Быстрое создание нового файла .doc - сочетанием мышки и клавиши

Я нажимаю Shift+F4 - у меня открывается окошко "Введите имя редактируемого файла".

17

Re: AHK: Быстрое создание нового файла .doc - сочетанием мышки и клавиши

Если ввести туда имя файла с расширением, создается файл в активной панели. 
Скрипт открывает это окно вводит HH.mm.ss.doc.
Попробуйте после WinWaitActive поставить Sleep, 500

18

Re: AHK: Быстрое создание нового файла .doc - сочетанием мышки и клавиши

rowe пишет:

Попробуйте после WinWaitActive поставить Sleep, 500

Поставил
По-прежнему не работает.

Делаю щелчок правой кнопкой мышки ( с клавишей Left Alt) по пустому месту (в тотал коммандере).
Тотал коммандер вместо того, чтобы создать новый файл *.doc -  предлагает "Введите имя редактируемого файла".

19 (изменено: rowe, 2018-10-11 12:40:10)

Re: AHK: Быстрое создание нового файла .doc - сочетанием мышки и клавиши

Или как советовал Malcev.

!RButton::
WinGet, OutputVar, ControlList , ahk_class TTOTAL_CMD
loop, parse, outputvar, `n
{
   ControlGetText, OutputVar, % a_loopfield, ahk_class TTOTAL_CMD
   if (SubStr(outputvar, 0) = ">")
   {
      outputvar := SubStr(outputvar, 1, StrLen(outputvar)-1)
      break
   }
}
FormatTime, TimeString, , HH.mm.ss
FileAppend, ,%outputvar%\%TimeString%.doc
Return

20 (изменено: димитрий2, 2018-10-11 12:45:52)

Re: AHK: Быстрое создание нового файла .doc - сочетанием мышки и клавиши

rowe, сейчас случилось - что-то необычное.
Делаю щелчок правой кнопкой мышки ( с клавишей Left Alt) по пустому месту (в тотал коммандере).
Появляется  документ с названием "11.36.26.doc" (Самое интересное - что ярлык документа - с иконкой ворда. Но это не ворд, а обыкновенный текстовый документ. Ворд этот файл - не отрывает).

В общем я имел ввиду несколько другое.
Я имел ввиду, что щелчке левой кнопки мышки в тотал коммандере - можно вызвать контекстное меню, в котором есть такая опция "создать новый файл". И там можно выбрать - создание нового вордовского файла.

Я вот это имел ввиду.

21

Re: AHK: Быстрое создание нового файла .doc - сочетанием мышки и клавиши

Я бы сделал так:

!RButton::
MouseGetPos, , , id, control
WinGetClass, class, ahk_id %id%
if (class = "TTOTAL_CMD")
{
   ControlFocus, % control, ahk_class TTOTAL_CMD
   WinGet, OutputVar, ControlList, ahk_class TTOTAL_CMD
   loop, parse, outputvar, `n
   {
      ControlGetText, OutputVar, % a_loopfield, ahk_class TTOTAL_CMD
      if (SubStr(outputvar, 0) = ">")
      {
         outputvar := SubStr(outputvar, 1, StrLen(outputvar)-1)
         break
      }
   }
   FormatTime, TimeString, , HH.mm.ss
   FileAppend, ,%outputvar%\%TimeString%.doc
   WinMenuSelectItem, ahk_class TTOTAL_CMD, , Show, Reread Source
}

Если у вас русскоязычный тотал, то в WinMenuSelectItem нужно вставить ваше название меню.

22 (изменено: димитрий2, 2018-10-11 12:51:16)

Re: AHK: Быстрое создание нового файла .doc - сочетанием мышки и клавиши

Malcev, у вас тоже создаются файлы  "11.36.26.doc"
Но это текстовые файлы с расширением doc, а не вордовские файлы.
Поэтому при открытии - мне предлагают их во что-то переконвертировать.

Написано : "При открытии этого файла необходимо использовать текстовый конвертер Lexicon fo DOS."
(Эти создаваемые файлы - все идут с размером 0 Кб.  А новый файл ворд - всегда весит примерно 10 Кб)

23

Re: AHK: Быстрое создание нового файла .doc - сочетанием мышки и клавиши

Создайте doc пустышку и потом вместо FileAppend копируйте пустышку под новым названием в нужную папку.

FileCopy, blank.doc, %outputvar%\%TimeString%.doc

24 (изменено: димитрий2, 2018-10-11 13:14:05)

Re: AHK: Быстрое создание нового файла .doc - сочетанием мышки и клавиши

Malcev,

Все, разобрался.
Спасибо огромное.

25 (изменено: Malcev, 2018-10-11 13:13:31)

Re: AHK: Быстрое создание нового файла .doc - сочетанием мышки и клавиши

Вместо

FileAppend, ,%outputvar%\%TimeString%.doc

вставляйте

FileCopy, C:\1\444\1.doc, %outputvar%\%TimeString%.doc

26

Re: AHK: Быстрое создание нового файла .doc - сочетанием мышки и клавиши

Malcev, я все понял.
Большое спасибо.