Page 1 of 2

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

Posted: Sat Nov 29, 2008 11:21 pm
by laburj
хотелось бы иметь bat-ник (на который после будет повешен хоткей), который создавал новый файл (если AkelPad уже запущен-то открывается новая вкладка) и в него копировалось содержание буфера обмена.
есть ли возможность такое реализовать?
(в хелпе нашёл только информацию только о создании файлов с заранее выбранным названием файла)
спасибо

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

Posted: Sun Nov 30, 2008 11:00 am
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.

Posted: Sun Nov 30, 2008 12:21 pm
by laburj
я наверно плохо объяснил, что я хочу

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

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

Posted: Wed Dec 03, 2008 10:00 am
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"

Posted: Wed Dec 03, 2008 3:19 pm
by laburj
спасибо огромное!

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

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

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

Posted: Wed Dec 03, 2008 4:39 pm
by Instructor
Подкорректировано: ClipPaste.js

Posted: Wed Dec 03, 2008 5:46 pm
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

Posted: Sat May 01, 2010 3:49 pm
by laburj
Instructor, обращаюсь вновь за помощью! хотелось бы подправить существующий скрипт, скажем так сделать аналог плагина CaptureClipboard.

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

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

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

Posted: Sun May 02, 2010 2:37 am
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)
{
   //...
}

Posted: Sun May 02, 2010 6:36 pm
by laburj
Instructor, а как сделать, чтобы при запуске скрипта в уже открытый файл на активной вкладке в то место, где стоит курсор вставлялся разделитель, а после вставлялся находящийся в буфере текст.
в данном случае каждый раз создаётся новая вкладка

Posted: Mon May 03, 2010 3:56 am
by Instructor
laburj
Чтобы не создавалась вкладка комментируем строку:

Code: Select all

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

Posted: Mon May 03, 2010 5:24 am
by laburj
Instructor
в таком случае используется та же вкладка, но содержимое вкладки полностью затирается содержимым буфера

Posted: Mon May 03, 2010 5:28 am
by Instructor
Тогда меняем:

Code: Select all

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

Code: Select all

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

Posted: Mon May 03, 2010 6:16 am
by laburj
уже лучше) но текст вставляется в конце файла, а не в то место, где стоит курсор

Posted: Mon May 03, 2010 6:21 am
by Instructor
laburj
Тогда вообще уберите эту строчку.