Scripts discussion (1)

Discuss and announce AkelPad plugins
Locked
  • Author
  • Message
Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Scripts discussion (1)

Post by Instructor »

RUS: Обсуждение скриптов.

ENG: Scripts discussion.


Scripts discussion (1) 07.07.2007 - 08.09.2011
Scripts discussion (2) 08.09.2011 - 17.04.2014
Scripts discussion (3)
Last edited by Instructor on Thu Apr 17, 2014 6:45 am, edited 4 times in total.

Offline
Posts: 63
Joined: Sun Jun 24, 2007 4:03 pm
Contact:

Post by wisgest »

Это и последующие сообщения: #1362 (VladSh), #1363 (wisgest), #1364 (VladSh), #1371 (wisgest), #1373 (VladSh), #1382 (wisgest), #1385 (VladSh), #1391 (wisgest), #1392 (VladSh), #1402 (wisgest), #1408 (VladSh) — перемещены из темы «Scripts collection» (эта тема — «Scripts discussion» — создана позднее), в которой являлись обсуждением вопроса «СКРИПТ ДЛЯ ВСТАВКИ ФАЙЛА».
Рассматривался способ вызова диалога выбора файла.

К сожалению, как это сдлелать штатными функциями я не знаю. Могу предложить следующий "финт ушами":

Code: Select all

var IE = new ActiveXObject("InternetExplorer.Application");
IE.navigate("javascript:\"<FORM><INPUT type='file'></FORM>\";");
while (IE.Busy) WScript.Sleep(100);
IE.document.forms[0].elements[0].click();
var fileName = IE.document.forms[0].elements[0].value;
IE.Quit();
Last edited by wisgest on Thu Sep 03, 2009 2:31 pm, edited 4 times in total.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

ошибка

Post by VladSh »

wisgest
В таком варианте у меня сразу автоматом стартует DownloadMaster (у меня там галка "отслеживать URL в буфере обмена", без неё неудобно..) с параметром |"javascript:"<FORM><INPUT type='file'></FORM>";|
а потом на строке 7 вылетает ошибка 80004005.

Offline
Posts: 63
Joined: Sun Jun 24, 2007 4:03 pm
Contact:

Post by wisgest »

А если так?:

Code: Select all

var IE = new ActiveXObject("InternetExplorer.Application");
IE.navigate("");
while (IE.Busy) WScript.Sleep(100);
IE.document.write("<FORM><INPUT type='file'></FORM>");
IE.document.close();
IE.document.forms[0].elements[0].click();
var fileName = IE.document.forms[0].elements[0].value;
IE.Quit();

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

ничего

Post by VladSh »

wisgest
Ничего не происходит, но и ошибок нет.

Updated: oops! Диалоги на самом деле есть, но ПОД AkelPad'ом!

Offline
Posts: 63
Joined: Sun Jun 24, 2007 4:03 pm
Contact:

Post by wisgest »

Кстати, если нет открытых окон Internet Explorer, то диалог выводится на переднем плане.
Для того, чтобы на панели задач появлялась кнопка (она будет подмаргивать), позволяющая переключится на диалог, не сворачивая AkelPad, после строки

Code: Select all

IE.document.close();
можно добавить:

Code: Select all

IE.document.title = WScript.ScriptName;
IE.height = 0; IE.width = 0; IE.visible = true;

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Работает!

Post by VladSh »

wisgest
Да, прикольно, :lol:
ещё такое маленькое окошко вылазит под диалогом открытия файла.. без него никак низя? :D

Кстати у меня и IE и EXPLORER запущены и ничего не мигает - всё нормально открывается поверх Akel'а!
P.S. WinXP sp2 ru

Offline
Posts: 63
Joined: Sun Jun 24, 2007 4:03 pm
Contact:

Re: Работает!

Post by wisgest »

У меня никаких окошек нет (SP1). Возможно дело в SP2, не позволяющий "из соображений безопасности" задать нулевые размеры окна (IE.height = 0; IE.width = 0;)? Может попробовать перемещать окошко за пределы экрана:

Code: Select all

IE.document.Script.moveTo(-500, -500);
но опять же, если дело в SP2, то неуверен, что она это позволит.
Мигание, в принципе, могло быть отключено (или не включено), см. http://doclab.org/2007/01/21/print:page ... adach.html
VladSh wrote:всё нормально открывается поверх Akel'а!
Так поверх или под?!!

Вместо wsh-сценария можно создать приблизительно такое hta-приложение

Code: Select all

<HTML>
<HEAD><HTA:APPLICATION
 applicationName='AkelpadFileInsertion'
 singleInstance='yes'
 caption='no'
 showInTaskBar='no'
/></HEAD>
<BODY><FORM><INPUT type='file'></FORM>
<SCRIPT language='JavaScript'>
window.resizeTo(0,0);
document.forms[0].elements[0].click();
var fileName = document.forms[0].elements[0].value;
/*
  Делаем с fileName, что нам надо...
*/
window.close();
</SCRIPT>
</BODY></HTML>
и создать для него в меню команду:
Exec('mshta "<путь к hta-файлу>"'), в этом случае диалог выбора файла у меня всегда выводится на переднем плане.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Re: Работает!

Post by VladSh »

wisgest wrote:Может попробовать перемещать окошко за пределы экрана:

Code: Select all

IE.document.Script.moveTo(-500, -500);
но опять же, если дело в SP2, то неуверен, что она это позволит.
Точно - вылетает ошибка "Отказ в доступе".
wisgest wrote:
VladSh wrote:всё нормально открывается поверх Akel'а!
Так поверх или под?!!
После тех 2-х строк стало открываться поверх! и маленькое окошко видно только если перемещать окно выбора файла. Так что всё нормально! :)
wisgest wrote: Вместо wsh-сценария можно создать приблизительно такое hta-приложение...
Попробую. Конечно же лучше, когда работает под любой виндой.
А ещё лучше если независимо от платформы :)
Updated:
----------
Попробовал - диалог мерзко дёргается, как бы с запаздываением, а маленькое окошко всё равно видно - маленький квадратик в левом верхнем углу диалога :)
Недостаток обоих вариантов - можно свернуть AkelPad и потом очень долго искать окно с диалогом. Плохо что нельзя задать APPLMODAL, чтобы диалог был привязан к окну Akel'а, а так получается Akel можно закрыть, а окно будет болтаться.
Так что останавливаюсь пока на чистом JavaScript'е.
Спасибо за помощь! 8)
----------

ПыСы: никогда не думал, что такая простая вещь - проблема :-\

Offline
Posts: 63
Joined: Sun Jun 24, 2007 4:03 pm
Contact:

Re: СКРИПТ ДЛЯ ВСТАВКИ ФАЙЛА

Post by wisgest »

VladSh
В InsertFile.js в строке:

Code: Select all

    var File = fso.OpenTextFile(fileName, 1, false, 0);
вместо 0 лучше поставить -2 - тогда можно будет вставлять файлы и в юникоде.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Re: СКРИПТ ДЛЯ ВСТАВКИ ФАЙЛА

Post by VladSh »

wisgest wrote:в строке:

Code: Select all

    var File = fso.OpenTextFile(fileName, 1, false, 0);
вместо 0 лучше поставить -2 - тогда можно будет вставлять файлы и в юникоде.
Согласен. Изменил код InsertFile.


UPDATED:

Code: Select all

//Открытие файла
var OpenFileDialog = new ActiveXObject("UserAccounts.CommonDialog");
OpenFileDialog.Filter = 'All Files|*.*';
OpenFileDialog.ShowOpen();
fileName = OpenFileDialog.FileName;
Взято здесь: http://www.microsoft.com/technet/script ... y0128.mspx

Большая просьба! ПОЖАЛУЙСТА попробуйте и отпишитесь!
Т.к. я сначала пытался использовать MSComDlg.CommonDialog, так он писал что-то типа "Нелицензированное использование..." А этот вариант заработал без вопросов. Нужно знать, он у всех работает?
Last edited by VladSh on Wed Jun 23, 2010 2:46 pm, edited 2 times in total.

Offline
Posts: 63
Joined: Sun Jun 24, 2007 4:03 pm
Contact:

UserAccounts.CommonDialog

Post by wisgest »

Апплет "Учётные записи пользователей" Панели управления в Windows XP фактически представляет собой hta-приложение (nusrmgr.hta), находящееся в ресурсах файла nusrmgr.cpl. Для того чтобы из него можно было вызывать диалог выбора рисунка пользователя и создан объект UserAccounts.CommonDialog. Насколько я знаю, до Windows XP он недоступен.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

К сожалению

Post by VladSh »

действительно... Только что проверил на Win2000 - не работает :( а так всё было бы красиво...

Offline
Posts: 21
Joined: Sun May 06, 2007 10:14 am

Post by Idjo »

VladSh wrote:Idjo, Instructor
Still there is an idea :idea: - by pressing Enter after a sign { on a new line at once to do the necessary space + on the third line to put closing }. And that this script worked always in a background, instead of on hotkeys. Is better to make small plug-in which would support it + automatic formation of spaces. It would be possible to take options of spaces from options AkelPad'а (spaces and their quantity or tabulation).
Idea with Shift+Right/Left not so good, even, I would tell, very bad - it is impossible to select the text!!! It is much better to use Alt+Right/Left etc.
Thanks for the English. Google Translate doesn't do a very good gob. :lol:
I can make a plugin like but there is no option to assign it to the Enter key. And you're right, it'd be better as a plug-in.
And I assigned my plug-in to Alt+Right/Left, I just called it Shift+Right/Left because it shifts the text. :)

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

просьба

Post by VladSh »

Instructor wrote:SelCompliteLine.js

Code: Select all

/// Select complite lines
...
Код отличный! Только нужно, чтобы он работал и без выделения, т.е. когда я просто установил курсор в определённую строку.
Можете подправить? /здесь должно быть просящая рожа/ :D
Idjo wrote:I can make a plugin like but there is no option to assign it to the Enter key. And you're right, it'd be better as a plug-in.
And I assigned my plug-in to Alt+Right/Left, I just called it Shift+Right/Left because it shifts the text. :)
EN: On ...+Enter at me too it has not turned out to appoint a combination of keys therefore I use Ctrl+Down.
Sorry, but I have not restrained - have written script itself :mrgreen: Yet I do not wish to spread, as SelCompliteLine.js works not absolutely how it would be desirable...
Then it will be possible to do a plug-in.

RU: На ...+Enter у меня тоже не получилось назначить комбинацию клавиш, потому использую Ctrl+Down.
Прошу прощения, но я не сдержался - написал скрипт сам :mrgreen: Пока не хочу выкладывать, так как SelCompliteLine.js работает не совсем так, как хотелось бы... т.е. скрипт ещё глючит.
Потом можно будет делать и плагин.
Last edited by VladSh on Wed Jun 23, 2010 2:48 pm, edited 1 time in total.
Locked