Russian main discussion
Offline
Site Admin
Posts: 6311 Joined: Thu Jul 06, 2006 7:20 am
Post
by Instructor » Sun Oct 28, 2012 11:56 am
sasa236
Пример записи в файл:
Code: Select all
var fso=new ActiveXObject("Scripting.FileSystemObject");
var oFile;
oFile=fso.OpenTextFile("c:\\testfile.txt", 2 /*ForWriting*/, true)
oFile.Write("Hello world!");
oFile.Close();
Offline
Posts: 6 Joined: Fri Oct 26, 2012 5:58 am
Post
by sasa236 » Mon Oct 29, 2012 8:12 am
Вставьте Ваши строки в нижеприведенный скрипт, пожалуйста.
скрипт скрипт Code: Select all
//// Print all MDI documents.
var hMainWnd=AkelPad.GetMainWnd();
var lpFrameInit;
var lpFrameCur;
if (hMainWnd)
{
//Initial MDI fram
lpFrameInit=AkelPad.SendMessage(hMainWnd, 1288 /*AKD_FRAMEFIND*/, 1 /*FWF_CURRENT*/, 0);
lpFrameCur=lpFrameInit;
for (;;)
{
if (lpFrameCur == lpFrameInit)
{
if (!AkelPad.Command(4108 /*IDM_FILE_PRINT*/))
break;
}
else
{
if (!AkelPad.Command(4113 /*IDM_FILE_SILENTPRINT*/))
break;
}
//Next MDI frame
lpFrameCur=AkelPad.Command(4316 /*IDM_WINDOW_FRAMENEXT*/);
if (!lpFrameCur || lpFrameCur == lpFrameInit)
break;
}
}
Offline
Site Admin
Posts: 6311 Joined: Thu Jul 06, 2006 7:20 am
Post
by Instructor » Tue Nov 06, 2012 3:11 pm
sasa236
Скрипт Скрипт Code: Select all
// http://akelpad.sourceforge.net/forum/viewtopic.php?p=5163#p5163
// Version v1.2
//
//
//// Print all MDI documents.
var hMainWnd=AkelPad.GetMainWnd();
var lpFrameInit;
var lpFrameCur;
var fso=new ActiveXObject("Scripting.FileSystemObject");
var oFile;
if (hMainWnd)
{
oFile=fso.OpenTextFile("c:\\testfile.txt", 2 /*ForWriting*/, true)
//Initial MDI frame
lpFrameInit=AkelPad.SendMessage(hMainWnd, 1288 /*AKD_FRAMEFIND*/, 1 /*FWF_CURRENT*/, 0);
lpFrameCur=lpFrameInit;
for (;;)
{
oFile.Write(AkelPad.GetEditFile(0) + "\r\n");
if (lpFrameCur == lpFrameInit)
{
if (!AkelPad.Command(4108 /*IDM_FILE_PRINT*/))
break;
}
else
{
if (!AkelPad.Command(4113 /*IDM_FILE_SILENTPRINT*/))
break;
}
//Next MDI frame
lpFrameCur=AkelPad.Command(4316 /*IDM_WINDOW_FRAMENEXT*/);
if (!lpFrameCur || lpFrameCur == lpFrameInit)
break;
}
oFile.Close();
}
Offline
Posts: 6 Joined: Fri Oct 26, 2012 5:58 am
Post
by sasa236 » Wed Nov 07, 2012 10:21 am
Огромное спасибо! Добавил время в имя файла и в текст (из готовых скриптов). Не знаю, насколько корректно, но работает.
скрипт скрипт Code: Select all
//// Print all MDI documents.
//Options
var pFormat="dd.MM.yyyy H:mm";
var pForm="dd_MM_yyyy";
if (WScript.Arguments.length)
pFormat=WScript.Arguments(0);
//Variables
var oSys=AkelPad.SystemFunction();
var pTime;
var hMainWnd=AkelPad.GetMainWnd();
var lpFrameInit;
var lpFrameCur;
var fso=new ActiveXObject("Scripting.FileSystemObject");
var oFile;
if (hMainWnd)
{
pTime="Print_"+TimeFormat(pForm)+".txt";
oFile=fso.OpenTextFile("y:\\PROGR\\Base\\"+pTime, 8 /*ForWriting*/, true)
pTime=TimeFormat(pFormat);
//Initial MDI frame
lpFrameInit=AkelPad.SendMessage(hMainWnd, 1288 /*AKD_FRAMEFIND*/, 1 /*FWF_CURRENT*/, 0);
lpFrameCur=lpFrameInit;
for (;;)
{
oFile.Write(pTime + " "+AkelPad.GetEditFile(0) + "\r\n");
if (lpFrameCur == lpFrameInit)
{
if (!AkelPad.Command(4108 /*IDM_FILE_PRINT*/))
break;
}
else
{
if (!AkelPad.Command(4113 /*IDM_FILE_SILENTPRINT*/))
break;
}
//Next MDI frame
lpFrameCur=AkelPad.Command(4316 /*IDM_WINDOW_FRAMENEXT*/);
if (!lpFrameCur || lpFrameCur == lpFrameInit)
break;
}
oFile.Close();
}
//Functions
function TimeFormat(pFormat)
{
var lpFormatBuffer;
var lpTimeBuffer;
var pTime="";
if (lpFormatBuffer=AkelPad.MemAlloc(256 * _TSIZE))
{
AkelPad.MemCopy(lpFormatBuffer, pFormat.substr(0, 255), _TSTR);
if (lpTimeBuffer=AkelPad.MemAlloc(256 * _TSIZE))
{
oSys.Call("kernel32::GetTimeFormat" + _TCHAR, 1024 /*LOCALE_USER_DEFAULT*/, 0, 0, lpFormatBuffer, lpTimeBuffer);
oSys.Call("kernel32::GetDateFormat" + _TCHAR, 1024 /*LOCALE_USER_DEFAULT*/, 0, 0, lpTimeBuffer, lpFormatBuffer, 256);
pTime=AkelPad.MemRead(lpFormatBuffer, _TSTR);
AkelPad.MemFree(lpTimeBuffer);
}
AkelPad.MemFree(lpFormatBuffer);
}
return pTime;
}
Last edited by
sasa236 on Wed Nov 07, 2012 10:50 am, edited 1 time in total.
Offline
Posts: 6 Joined: Fri Oct 26, 2012 5:58 am
Post
by sasa236 » Wed Nov 07, 2012 10:49 am
Если бы еще добавлялась инфа об именах принтера, было бы идеально.
Offline
Posts: 3217 Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:
Post
by VladSh » Wed Nov 07, 2012 11:42 pm
Правильно, мёд надо сразу половником.
Offline
Site Admin
Posts: 6311 Joined: Thu Jul 06, 2006 7:20 am
Post
by Instructor » Thu Nov 08, 2012 12:48 pm
sasa236
GetPrinterName.js GetPrinterName.js
Code: Select all
WScript.Echo(GetPrinterName());
function GetPrinterName()
{
var hMainWnd=AkelPad.GetMainWnd();
var oSys=AkelPad.SystemFunction();
var lpPrintInfo;
var lpDevNames;
var hDevNames;
var nDeviceOffset;
var pDeviceName="";
if (lpPrintInfo=AkelPad.MemAlloc(_X64?56:40 /*sizeof(PRINTINFO)*/))
{
AkelPad.SendMessage(hMainWnd, 1215 /*AKD_GETPRINTINFO*/, lpPrintInfo, 0);
hDevNames=AkelPad.MemRead(lpPrintInfo + (_X64?8:4) /*offsetof(PRINTINFO, hDevNames)*/, 2 /*DT_QWORD*/);
if (hDevNames && (lpDevNames=oSys.Call("kernel32::GlobalLock", hDevNames)))
{
nDeviceOffset=AkelPad.MemRead(lpDevNames + 2 /*offsetof(DEVNAMES, wDeviceOffset)*/, 4 /*DT_WORD*/);
pDeviceName=AkelPad.MemRead(lpDevNames + nDeviceOffset * _TSIZE, _TSTR);
oSys.Call("kernel32::GlobalUnlock", hDevNames);
}
AkelPad.MemFree(lpPrintInfo);
}
return pDeviceName;
}
Offline
Posts: 6 Joined: Fri Oct 26, 2012 5:58 am
Post
by sasa236 » Mon Nov 12, 2012 7:03 am
Все заработало! Большое Вам Спасибо!!!
Offline
Posts: 20 Joined: Wed Mar 07, 2012 10:27 am
Post
by booleg » Thu Nov 29, 2012 8:52 am
И опять я о компиляции паскалевских программ. Как добавить кнопку для запуска откомпилированного приложения прямо из Акелпада? Добавить кнопку с командой на выполнение .exe файла не проблема, но нужно, чтобы запускался не фиксированный .exe файл. Запускать нужно файл с именем редактируемого в данный момент файла, но расширением .exe. Наверное можно какой-то скрипт написать, но я в скриптах не силен. Вообщем - "поможите люди добрые, кто чем может".
Offline
Posts: 20 Joined: Wed Mar 07, 2012 10:27 am
Post
by booleg » Thu Nov 29, 2012 10:03 am
Кажется сам разобрался. Создал копию RunMe.js и в ней сделал небольшие корректировки:
1) создал функцию
Code: Select all
function run_Pasfile(filePathName)
{
var cmd = "rundll32.exe shell32,ShellExec_RunDLL \"" + filePathName + "\"";
runCommand(cmd, "", 0); // do not capture output
}
2) прописал в oCommands для расширения Pas
Code: Select all
"pas PAS Pas" :
":run_Pasfile(\"%d\\%n.exe\")" ,
Большая просьба к автору RunMe.js прокомментировать насколько корректно это будет работать.
Offline
Posts: 3217 Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:
Post
by VladSh » Thu Nov 29, 2012 12:03 pm
booleg
Лучше бы задать этот вопрос, где анонсируются скрипты и ведётся их обсуждение, т.е.
здесь . Но вы удивительным образом сумели отметиться с одним и тем же вопросом в 2-х темах, и даже создали одну отдельную. Такое ощущение, что темы выбираете рэндомайзом.
Надеюсь
Instructor перенесёт ваше сообщение туда.
Offline
Posts: 20 Joined: Wed Mar 07, 2012 10:27 am
Post
by booleg » Thu Nov 29, 2012 12:59 pm
VladSh wrote: booleg
Лучше бы задать этот вопрос, где анонсируются скрипты и ведётся их обсуждение, т.е.
здесь . Но вы удивительным образом сумели отметиться с одним и тем же вопросом в 2-х темах, и даже создали одну отдельную. Такое ощущение, что темы выбираете рэндомайзом.
Надеюсь
Instructor перенесёт ваше сообщение туда.
Вы будете удивлены, но первое моё сообщение и было сюда перенесено (предположительно Instructor-ом ), а второе я запостил сюда как развитие темы.
Offline
Posts: 46 Joined: Fri Mar 22, 2013 5:05 am
Location: Белово, Кемеровская область, Россия
Post
by Egorkaru » Sat Jan 11, 2014 7:06 am
ermakoov wrote: Помогите, плиз, написать скрипт вставки (ввода) тире "—"
Можно без скрипта, используя пункт меню в
ContextMenu плагине , кнопку в
ToolBar плагине и (или) горячую клавишу в
Hotkeys плагине .
Для ContextMenu и ToolBar плагинов:
Code: Select all
"Вставить тире" Insert("\[2014]", 1)
Для Hotkeys плагина:
Имя: Вставить тире
Команда: Insert("\[2014]", 1)
Offline
Posts: 582 Joined: Mon Apr 08, 2013 9:50 pm
Location: Win7SP1x64, APx64
Post
by Drugmix » Sun Jan 12, 2014 3:47 pm
а можно ли написать скрипт для обновления кэша coder-плагина?
Offline
Posts: 366 Joined: Mon Jan 10, 2011 5:28 pm
Contact:
Post
by Lenchik » Sun Jan 12, 2014 3:58 pm
Code: Select all
-"Обновить кэш" Call("Coder::Settings", 2) Icon("%a\AkelFiles\Plugs\Toolbar.dll", 3)