Батник для создания нового файла с содержимым буфера обмена

Russian main discussion
  • Author
  • Message
Offline
Posts: 37
Joined: Mon Nov 26, 2007 9:51 pm

Батник для создания нового файла с содержимым буфера обмена

Post by laburj »

хотелось бы иметь bat-ник (на который после будет повешен хоткей), который создавал новый файл (если AkelPad уже запущен-то открывается новая вкладка) и в него копировалось содержание буфера обмена.
есть ли возможность такое реализовать?
(в хелпе нашёл только информацию только о создании файлов с заранее выбранным названием файла)
спасибо

DV
Offline
Posts: 1250
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Re: Батник для создания нового файла с содержимым буфера обм

Post by DV »

laburj wrote:есть ли возможность такое реализовать?
Используйте плагин Scripts с вызовом скрипта примерно такого содержания:

Code: Select all

var AkelPad=new ActiveXObject("AkelPad.document");
var hMainWnd = AkelPad.GetMainWnd();
var pText = AkelPad.GetClipboardText();
AkelPad.SendMessage(hMainWnd, 273 /*WM_COMMAND*/, 4101 /*IDM_FILE_NEW*/, 0);
AkelPad.SetSel(0, -1);
AkelPad.ReplaceSel(pText);
Подробнее см. "Scripts-Methods.txt", который входит в состав плагина Scripts.

Offline
Posts: 37
Joined: Mon Nov 26, 2007 9:51 pm

Post by laburj »

я наверно плохо объяснил, что я хочу

я хотел бы создать хоткей более глобальный, который запускался в любой программе:
пр. скопровал текст в опере, нажал хоткей- и получил новый файл с содержимым буфера в akelpadе

т.е. на хоткей я хотел бы повесить батник с командой типа (если бы это было возможно)
akelpad.exe /n /clippaste

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

Scripts plugin v3.6 + ClipPaste.js

И добавляете команду для глобальной горячей клавиши:

Code: Select all

WScript "c:\Program Files\AkelPad\AkelFiles\Plugs\Scripts\ClipPaste.js" "c:\Program Files\AkelPad\AkelPad.exe"

Offline
Posts: 37
Joined: Mon Nov 26, 2007 9:51 pm

Post by laburj »

спасибо огромное!

только одно "НО":

в случае, когда уже AkelPad запущен (свёрнут в панель задач) и после нажатия хоткея окно AkelPad'a не активируется.

можно ли это исправить?

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

Подкорректировано: ClipPaste.js

Offline
Posts: 37
Joined: Mon Nov 26, 2007 9:51 pm

Post by laburj »

отлично! спасибо ещё раз
а я кстати тем временем нашёл ещё один вариант решения:

в скрипте программы AutoHotkey, запускающем по горячей клавише команду

Code: Select all

WScript "c:\totalcmd\utilits\AkelPad\AkelFiles\Plugs\Scripts\ClipPaste.js" "c:\totalcmd\utilits\AkelPad\AkelPad.exe"
добавил строчку, активирующую окно AkelPad:

Code: Select all

WinActivate, ahk_class AkelPad4

Offline
Posts: 37
Joined: Mon Nov 26, 2007 9:51 pm

Post by laburj »

Instructor, обращаюсь вновь за помощью! хотелось бы подправить существующий скрипт, скажем так сделать аналог плагина CaptureClipboard.

т.е. примерно так:
при запуске скрипта в файл на активной вкладке в то место, где стоит курсор вставляется разделитель (например, два перехода на новую строчку), а после вставляется находящийся в буфере текст.

очень здорово было бы если также была возможность выбора поведения скрипта:
-проводить эту операцию в фоне (т.е. AkelPad не активировался)
-и наоборот

также хочется чтобы в самом скрипте можно было бы настроить разделитель.
заранее спасибо

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

laburj
Чтобы вставить разделитель надо просто изменить строчку

Code: Select all

AkelPad.ReplaceSel(pText);
на

Code: Select all

AkelPad.ReplaceSel("\n--------------------\n" + pText);
Чтобы окно не разворачивалось комментируем или удаляем блок:

Code: Select all

if (oFunction.Call("user32::GetForegroundWindow") != hMainWnd)
{
   //...
}

Offline
Posts: 37
Joined: Mon Nov 26, 2007 9:51 pm

Post by laburj »

Instructor, а как сделать, чтобы при запуске скрипта в уже открытый файл на активной вкладке в то место, где стоит курсор вставлялся разделитель, а после вставлялся находящийся в буфере текст.
в данном случае каждый раз создаётся новая вкладка

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

laburj
Чтобы не создавалась вкладка комментируем строку:

Code: Select all

AkelPad.SendMessage(hMainWnd, 273 /*WM_COMMAND*/, 4101 /*IDM_FILE_NEW*/, 0);

Offline
Posts: 37
Joined: Mon Nov 26, 2007 9:51 pm

Post by laburj »

Instructor
в таком случае используется та же вкладка, но содержимое вкладки полностью затирается содержимым буфера

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

Тогда меняем:

Code: Select all

AkelPad.SetSel(0, -1);
на

Code: Select all

AkelPad.SetSel(-1, -1);
:)

Offline
Posts: 37
Joined: Mon Nov 26, 2007 9:51 pm

Post by laburj »

уже лучше) но текст вставляется в конце файла, а не в то место, где стоит курсор

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

laburj
Тогда вообще уберите эту строчку.
Post Reply