AkelPad Forum Index AkelPad
Support forum
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Помогите написать скрипт
Goto page Previous  1, 2, 3 ... 11, 12, 13, 14, 15, 16  Next
 
Post new topic   Reply to topic    AkelPad Forum Index -> Discussion (Russian)
View previous topic :: View next topic  
Author Message
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5419

PostPosted: Sun Oct 28, 2012 11:56 am    Post subject: Reply with quote

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
View user's profile Send private message Send e-mail
sasa236



Joined: 26 Oct 2012
Posts: 5

PostPosted: Mon Oct 29, 2012 8:12 am    Post subject: Reply with quote

Вставьте Ваши строки в нижеприведенный скрипт, пожалуйста.

скрипт
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
View user's profile Send private message
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5419

PostPosted: Tue Nov 06, 2012 3:11 pm    Post subject: Reply with quote

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
View user's profile Send private message Send e-mail
sasa236



Joined: 26 Oct 2012
Posts: 5

PostPosted: Wed Nov 07, 2012 10:21 am    Post subject: Reply with quote

Огромное спасибо! Добавил время в имя файла и в текст (из готовых скриптов). Не знаю, насколько корректно, но работает.

скрипт
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
View user's profile Send private message
sasa236



Joined: 26 Oct 2012
Posts: 5

PostPosted: Wed Nov 07, 2012 10:49 am    Post subject: Reply with quote

Если бы еще добавлялась инфа об именах принтера, было бы идеально.
Back to top
View user's profile Send private message
VladSh



Joined: 29 Nov 2006
Posts: 2615
Location: Киев, Русь

PostPosted: Wed Nov 07, 2012 11:42 pm    Post subject: Reply with quote

Правильно, мёд надо сразу половником.
Back to top
View user's profile Send private message Visit poster's website
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5419

PostPosted: Thu Nov 08, 2012 12:48 pm    Post subject: Reply with quote

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
View user's profile Send private message Send e-mail
sasa236



Joined: 26 Oct 2012
Posts: 5

PostPosted: Mon Nov 12, 2012 7:03 am    Post subject: Reply with quote

Все заработало! Большое Вам Спасибо!!!
Back to top
View user's profile Send private message
booleg



Joined: 07 Mar 2012
Posts: 20

PostPosted: Thu Nov 29, 2012 8:52 am    Post subject: Reply with quote

И опять я о компиляции паскалевских программ. Как добавить кнопку для запуска откомпилированного приложения прямо из Акелпада? Добавить кнопку с командой на выполнение .exe файла не проблема, но нужно, чтобы запускался не фиксированный .exe файл. Запускать нужно файл с именем редактируемого в данный момент файла, но расширением .exe. Наверное можно какой-то скрипт написать, но я в скриптах не силен. Вообщем - "поможите люди добрые, кто чем может".
Back to top
View user's profile Send private message
booleg



Joined: 07 Mar 2012
Posts: 20

PostPosted: Thu Nov 29, 2012 10:03 am    Post subject: Reply with quote

Кажется сам разобрался. Создал копию 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
View user's profile Send private message
VladSh



Joined: 29 Nov 2006
Posts: 2615
Location: Киев, Русь

PostPosted: Thu Nov 29, 2012 12:03 pm    Post subject: Reply with quote

booleg
Лучше бы задать этот вопрос, где анонсируются скрипты и ведётся их обсуждение, т.е. здесь. Но вы удивительным образом сумели отметиться с одним и тем же вопросом в 2-х темах, и даже создали одну отдельную. Такое ощущение, что темы выбираете рэндомайзом.
Надеюсь Instructor перенесёт ваше сообщение туда.
Back to top
View user's profile Send private message Visit poster's website
booleg



Joined: 07 Mar 2012
Posts: 20

PostPosted: Thu Nov 29, 2012 12:59 pm    Post subject: Reply with quote

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


Вы будете удивлены, но первое моё сообщение и было сюда перенесено (предположительно Instructor-ом ), а второе я запостил сюда как развитие темы.
Back to top
View user's profile Send private message
Egorkaru



Joined: 22 Mar 2013
Posts: 73
Location: Белово, Кемеровская область, Россия

PostPosted: Sat Jan 11, 2014 7:06 am    Post subject: Reply with quote

ermakoov wrote:
Помогите, плиз, написать скрипт вставки (ввода) тире "—"

Можно без скрипта, используя пункт меню в ContextMenu плагине, кнопку в ToolBar плагине и (или) горячую клавишу в Hotkeys плагине.

Для ContextMenu и ToolBar плагинов:
Code:
"Вставить тире" Insert("\[2014]", 1)

Для Hotkeys плагина:
Имя: Вставить тире
Команда: Insert("\[2014]", 1)
Back to top
View user's profile Send private message Send e-mail
Drugmix



Joined: 08 Apr 2013
Posts: 446

PostPosted: Sun Jan 12, 2014 3:47 pm    Post subject: Reply with quote

а можно ли написать скрипт для обновления кэша coder-плагина?
Back to top
View user's profile Send private message
Lenchik



Joined: 10 Jan 2011
Posts: 275

PostPosted: Sun Jan 12, 2014 3:58 pm    Post subject: Reply with quote

Code:
  -"Обновить кэш" Call("Coder::Settings", 2) Icon("%a\AkelFiles\Plugs\Toolbar.dll", 3)
Back to top
View user's profile Send private message Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    AkelPad Forum Index -> Discussion (Russian) All times are GMT
Goto page Previous  1, 2, 3 ... 11, 12, 13, 14, 15, 16  Next
Page 12 of 16

 
Jump to:  
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


SourceForge.net Logo Powered by phpBB © 2001, 2005 phpBB Group