| View previous topic :: View next topic |
| Author |
Message |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4644
|
Posted: Sun Oct 28, 2012 11:56 am Post subject: |
|
|
sasa236
Пример записи в файл:
| Code: | var fso=new ActiveXObject("Scripting.FileSystemObject");
var oFile;
oFile=fso.OpenTextFile("c:\\testfile.txt", 2 /*ForWriting*/, true)
oFile.Write("Hello world!");
oFile.Close();
|
|
|
| Back to top |
|
 |
sasa236
Joined: 26 Oct 2012 Posts: 5
|
Posted: Mon Oct 29, 2012 8:12 am Post subject: |
|
|
Вставьте Ваши строки в нижеприведенный скрипт, пожалуйста.
скрипт | Code: | //// 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;
}
} |
|
|
| Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4644
|
Posted: Tue Nov 06, 2012 3:11 pm Post subject: |
|
|
sasa236
Скрипт | Code: | // http://akelpad.sourceforge.net/forum/viewtopic.php?p=5163#5163
// 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();
}
|
|
|
| Back to top |
|
 |
sasa236
Joined: 26 Oct 2012 Posts: 5
|
Posted: Wed Nov 07, 2012 10:21 am Post subject: |
|
|
Огромное спасибо! Добавил время в имя файла и в текст (из готовых скриптов). Не знаю, насколько корректно, но работает.
скрипт | Code: | //// 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 |
|
| Back to top |
|
 |
sasa236
Joined: 26 Oct 2012 Posts: 5
|
Posted: Wed Nov 07, 2012 10:49 am Post subject: |
|
|
| Если бы еще добавлялась инфа об именах принтера, было бы идеально. |
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2510 Location: Киев, Русь
|
Posted: Wed Nov 07, 2012 11:42 pm Post subject: |
|
|
| Правильно, мёд надо сразу половником. |
|
| Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4644
|
Posted: Thu Nov 08, 2012 12:48 pm Post subject: |
|
|
sasa236
GetPrinterName.js
| Code: | 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;
}
|
|
|
| Back to top |
|
 |
sasa236
Joined: 26 Oct 2012 Posts: 5
|
Posted: Mon Nov 12, 2012 7:03 am Post subject: |
|
|
| Все заработало! Большое Вам Спасибо!!! |
|
| Back to top |
|
 |
booleg
Joined: 07 Mar 2012 Posts: 20
|
Posted: Thu Nov 29, 2012 8:52 am Post subject: |
|
|
| И опять я о компиляции паскалевских программ. Как добавить кнопку для запуска откомпилированного приложения прямо из Акелпада? Добавить кнопку с командой на выполнение .exe файла не проблема, но нужно, чтобы запускался не фиксированный .exe файл. Запускать нужно файл с именем редактируемого в данный момент файла, но расширением .exe. Наверное можно какой-то скрипт написать, но я в скриптах не силен. Вообщем - "поможите люди добрые, кто чем может". |
|
| Back to top |
|
 |
booleg
Joined: 07 Mar 2012 Posts: 20
|
Posted: Thu Nov 29, 2012 10:03 am Post subject: |
|
|
Кажется сам разобрался. Создал копию RunMe.js и в ней сделал небольшие корректировки:
1) создал функцию
| Code: | function run_Pasfile(filePathName)
{
var cmd = "rundll32.exe shell32,ShellExec_RunDLL \"" + filePathName + "\"";
runCommand(cmd, "", 0); // do not capture output
} |
2) прописал в oCommands для расширения Pas
| Code: | "pas PAS Pas" :
":run_Pasfile(\"%d\\%n.exe\")" , |
Большая просьба к автору RunMe.js прокомментировать насколько корректно это будет работать. |
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2510 Location: Киев, Русь
|
Posted: Thu Nov 29, 2012 12:03 pm Post subject: |
|
|
booleg
Лучше бы задать этот вопрос, где анонсируются скрипты и ведётся их обсуждение, т.е. здесь. Но вы удивительным образом сумели отметиться с одним и тем же вопросом в 2-х темах, и даже создали одну отдельную. Такое ощущение, что темы выбираете рэндомайзом.
Надеюсь Instructor перенесёт ваше сообщение туда. |
|
| Back to top |
|
 |
booleg
Joined: 07 Mar 2012 Posts: 20
|
Posted: Thu Nov 29, 2012 12:59 pm Post subject: |
|
|
| VladSh wrote: | booleg
Лучше бы задать этот вопрос, где анонсируются скрипты и ведётся их обсуждение, т.е. здесь. Но вы удивительным образом сумели отметиться с одним и тем же вопросом в 2-х темах, и даже создали одну отдельную. Такое ощущение, что темы выбираете рэндомайзом.
Надеюсь Instructor перенесёт ваше сообщение туда. |
Вы будете удивлены, но первое моё сообщение и было сюда перенесено (предположительно Instructor-ом ), а второе я запостил сюда как развитие темы. |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|