Page 12 of 24

Posted: Sun Oct 28, 2012 11:56 am
by Instructor
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();

Posted: Mon Oct 29, 2012 8:12 am
by sasa236
Вставьте Ваши строки в нижеприведенный скрипт, пожалуйста.

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;
   }
}

Posted: Tue Nov 06, 2012 3:11 pm
by Instructor
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(); 
}

Posted: Wed Nov 07, 2012 10:21 am
by sasa236
Огромное спасибо! Добавил время в имя файла и в текст (из готовых скриптов). Не знаю, насколько корректно, но работает.

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;
}

Posted: Wed Nov 07, 2012 10:49 am
by sasa236
Если бы еще добавлялась инфа об именах принтера, было бы идеально.

Posted: Wed Nov 07, 2012 11:42 pm
by VladSh
Правильно, мёд надо сразу половником.

Posted: Thu Nov 08, 2012 12:48 pm
by Instructor
sasa236

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;
}

Posted: Mon Nov 12, 2012 7:03 am
by sasa236
Все заработало! Большое Вам Спасибо!!!

Posted: Thu Nov 29, 2012 8:52 am
by booleg
И опять я о компиляции паскалевских программ. Как добавить кнопку для запуска откомпилированного приложения прямо из Акелпада? Добавить кнопку с командой на выполнение .exe файла не проблема, но нужно, чтобы запускался не фиксированный .exe файл. Запускать нужно файл с именем редактируемого в данный момент файла, но расширением .exe. Наверное можно какой-то скрипт написать, но я в скриптах не силен. Вообщем - "поможите люди добрые, кто чем может".

Posted: Thu Nov 29, 2012 10:03 am
by booleg
Кажется сам разобрался. Создал копию 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 прокомментировать насколько корректно это будет работать.

Posted: Thu Nov 29, 2012 12:03 pm
by VladSh
booleg
Лучше бы задать этот вопрос, где анонсируются скрипты и ведётся их обсуждение, т.е. здесь. Но вы удивительным образом сумели отметиться с одним и тем же вопросом в 2-х темах, и даже создали одну отдельную. Такое ощущение, что темы выбираете рэндомайзом.
Надеюсь Instructor перенесёт ваше сообщение туда.

Posted: Thu Nov 29, 2012 12:59 pm
by booleg
VladSh wrote:booleg
Лучше бы задать этот вопрос, где анонсируются скрипты и ведётся их обсуждение, т.е. здесь. Но вы удивительным образом сумели отметиться с одним и тем же вопросом в 2-х темах, и даже создали одну отдельную. Такое ощущение, что темы выбираете рэндомайзом.
Надеюсь Instructor перенесёт ваше сообщение туда.
Вы будете удивлены, но первое моё сообщение и было сюда перенесено (предположительно Instructor-ом ), а второе я запостил сюда как развитие темы.

Posted: Sat Jan 11, 2014 7:06 am
by Egorkaru
ermakoov wrote:Помогите, плиз, написать скрипт вставки (ввода) тире "—"
Можно без скрипта, используя пункт меню в ContextMenu плагине, кнопку в ToolBar плагине и (или) горячую клавишу в Hotkeys плагине.

Для ContextMenu и ToolBar плагинов:

Code: Select all

"Вставить тире" Insert("\[2014]", 1)
Для Hotkeys плагина:
Имя: Вставить тире
Команда: Insert("\[2014]", 1)

Posted: Sun Jan 12, 2014 3:47 pm
by Drugmix
а можно ли написать скрипт для обновления кэша coder-плагина?

Posted: Sun Jan 12, 2014 3:58 pm
by Lenchik

Code: Select all

  -"Обновить кэш" Call("Coder::Settings", 2) Icon("%a\AkelFiles\Plugs\Toolbar.dll", 3)