Полезная информация

В мире Mozilla происходит много интересных событий. Но вам не нужно постоянно посещать новостные сайты, чтобы быть в курсе всех изменений. Зайдите на ленту новостей Mozilla Россия.

№2602-10-2011 19:18:43

hydrolizer
Участник
 
Группа: Extensions
Зарегистрирован: 22-07-2009
Сообщений: 1945
UA: Firefox 8.0

Re: Запуск внешнего приложения

alex345 пишет

Как можно запустить приложение или, например, текстовый файл, находящийся в установленном расширении, внутри zip (xpi) архива?

Для начала - прочитать содержимое файла, и сохранить во временную папку. Распаковку можно сделать c помощью nsIZipReader.

alex345 пишет

Можно ли запустить это приложение поверх всех окон?

Вообще-то это исключительно свойство окна запускаемого приложения, и в общем случае запускающим приложением никак не задается. Если очень хочется - получайте хэндл окошка запущенного приложения (только учтите, что нужен хэндл от top-level window), далее - через js-ctypes делаете вызов SetWindowPos, задав hWndInsertAfter=HWND_TOPMOST. Разумеется, это решение специфично для платформы.

Отсутствует

 

№2713-07-2012 16:21:01

selevo
Забанен
 
Группа: Members
Откуда: Ижевск
Зарегистрирован: 23-01-2008
Сообщений: 240
UA: Firefox 3.6
Веб-сайт

Re: Запуск внешнего приложения

объясните понятным языком что куда приделать :)

Отсутствует

 

№2813-07-2012 17:03:45

formatC'vt
Участник
 
Группа: Members
Откуда: М.О., г. Ивантеевка
Зарегистрирован: 09-01-2005
Сообщений: 94
UA: Firefox 14.0
Веб-сайт

Re: Запуск внешнего приложения

selevo пишет

объясните понятным языком что куда приделать

всё зависит от конечной цели =)


"Software is like SEX - it's better when it's FREE" (C) Linus Torvalds

Отсутствует

 

№2913-07-2012 23:13:11

selevo
Забанен
 
Группа: Members
Откуда: Ижевск
Зарегистрирован: 23-01-2008
Сообщений: 240
UA: Firefox 3.6
Веб-сайт

Re: Запуск внешнего приложения

да вот  хочу как бы панель управления сделатть  на страничке  своей
несколько кнопок  чтоб запускали те или иные файлы,желательно с параметрами хотя можно просто  батник запускать...
У меня   web бот стоит на компе и он может только в браузере  что-то делать,на страничках и вот ему надо дать задание чтоб прокси переключал  иногда или GSM модем переключал на др. оператора,а эт делается запуском прог.

Отсутствует

 

№3014-07-2012 13:13:35

selevo
Забанен
 
Группа: Members
Откуда: Ижевск
Зарегистрирован: 23-01-2008
Сообщений: 240
UA: Firefox 3.6
Веб-сайт

Re: Запуск внешнего приложения

на локальном компе надо всё запускать
c:\modemMTC.exe например
там где web-робот и работает.
ОС win

Отредактировано selevo (14-07-2012 13:16:39)

Отсутствует

 

№3114-07-2012 20:04:23

selevo
Забанен
 
Группа: Members
Откуда: Ижевск
Зарегистрирован: 23-01-2008
Сообщений: 240
UA: Firefox 3.6
Веб-сайт

Re: Запуск внешнего приложения

я уже начинаю нервничать....
вот  страница
запустите  ссылкой  свой блокнот на своём же компе
ну я  упрощаю конечно

Отредактировано selevo (14-07-2012 20:29:48)

Отсутствует

 

№3214-07-2012 20:34:01

selevo
Забанен
 
Группа: Members
Откуда: Ижевск
Зарегистрирован: 23-01-2008
Сообщений: 240
UA: Firefox 3.6
Веб-сайт

Re: Запуск внешнего приложения

web-бот написан  на selenium IDE расширение такое для  web автоматизации
и  работает только  со страничками.
Еслиб он мог кликать на кнопки  FF яб не заморачивался ,давно сделал бы что надо.

Мне  надо только  что бы заработала гиперссылка подобного типа и только это.
Слежение меня не интересует,всё уже есть.

Отсутствует

 

№3314-07-2012 20:44:07

selevo
Забанен
 
Группа: Members
Откуда: Ижевск
Зарегистрирован: 23-01-2008
Сообщений: 240
UA: Firefox 3.6
Веб-сайт

Re: Запуск внешнего приложения

аа,тоесть какое-то расширение даже типа  CB ,отслеживает клик на эту ссылку и запускает уже само от своего имени блокнот ,так ?

Отредактировано selevo (14-07-2012 20:45:14)

Отсутствует

 

№3414-07-2012 22:39:56

selevo
Забанен
 
Группа: Members
Откуда: Ижевск
Зарегистрирован: 23-01-2008
Сообщений: 240
UA: Firefox 3.6
Веб-сайт

Re: Запуск внешнего приложения

ну да так проще
вообще  как будут выглядеть урлы на страничке вообще не важно
,этож робот будет кликать, он заранее знает что
урл номер 1 это  запуск проги  блокнот
урл 2  запуск  модемной проги
урл 3 закрыть блокнот 
4 закрыть модемную прогу
примерно так

Отредактировано selevo (14-07-2012 22:41:50)

Отсутствует

 

№3515-07-2012 08:03:29

selevo
Забанен
 
Группа: Members
Откуда: Ижевск
Зарегистрирован: 23-01-2008
Сообщений: 240
UA: Firefox 3.6
Веб-сайт

Re: Запуск внешнего приложения

а можно пример странички с которой это будет работать ?

Отсутствует

 

№3615-07-2012 13:01:22

selevo
Забанен
 
Группа: Members
Откуда: Ижевск
Зарегистрирован: 23-01-2008
Сообщений: 240
UA: Firefox 3.6
Веб-сайт

Re: Запуск внешнего приложения

понял, сегодня завтра потестю.
Благодарю

Отсутствует

 

№3715-07-2012 16:35:18

selevo
Забанен
 
Группа: Members
Откуда: Ижевск
Зарегистрирован: 23-01-2008
Сообщений: 240
UA: Firefox 3.6
Веб-сайт

Re: Запуск внешнего приложения

работает вроде...
А реально ли   закрыть   notepad  таким же образом ?

Отредактировано selevo (15-07-2012 16:37:37)

Отсутствует

 

№3815-07-2012 17:16:51

selevo
Забанен
 
Группа: Members
Откуда: Ижевск
Зарегистрирован: 23-01-2008
Сообщений: 240
UA: Firefox 3.6
Веб-сайт

Re: Запуск внешнего приложения

оо,гибко)))
благодарю

Отсутствует

 

№3919-07-2012 23:00:51

selevo
Забанен
 
Группа: Members
Откуда: Ижевск
Зарегистрирован: 23-01-2008
Сообщений: 240
UA: Firefox 3.6
Веб-сайт

Re: Запуск внешнего приложения

о я про rundll32 уже начинал было читать  но  потом как то интересы повернулись.

Отсутствует

 

№4028-07-2012 16:56:12

selevo
Забанен
 
Группа: Members
Откуда: Ижевск
Зарегистрирован: 23-01-2008
Сообщений: 240
UA: Firefox 3.6
Веб-сайт

Re: Запуск внешнего приложения

а как таким же образом сделать так, чтобы  нажался элемент  управления (кнопка) в  одном из аддонов  FF ?
Конкретно  интересует нажатие кнопки  play в Selenium IDE

Да и вообще интересует  сам принцип реализации и доступа к таким вещам.

вот  ролик 
http://youtu.be/7Okuo3JDufQ
там я показал какую кнопку  надо жать ,кнопка запуска теста - зелёный треугольник.

Отредактировано selevo (28-07-2012 17:05:19)

Отсутствует

 

№4128-07-2012 17:36:48

selevo
Забанен
 
Группа: Members
Откуда: Ижевск
Зарегистрирован: 23-01-2008
Сообщений: 240
UA: Firefox 3.6
Веб-сайт

Re: Запуск внешнего приложения

вот что показывает

Выделить код

Код:

id="play-button"
 label="Play" 
class="icon"
 tooltiptext="Play current test case" 
command="cmd_selenium_play"
 oncommand="goDoCommand('cmd_selenium_play')"

http://youtu.be/NbCiPq26DBs

А в каком месте  этого кода разместить команду ?
И что именно написать в данном случаи ?

Выделить код

Код:

var myExt_urlBarListener = {
  QueryInterface: function(aIID)
  {
   if (aIID.equals(Components.interfaces.nsIWebProgressListener) ||
       aIID.equals(Components.interfaces.nsISupportsWeakReference) ||
       aIID.equals(Components.interfaces.nsISupports))
     return this;
   throw Components.results.NS_NOINTERFACE;
  },

  onLocationChange: function(aProgress, aRequest, aURI)
  {
   setTimeout(progstart, 300);    
  },

  onStateChange: function(a, b, c, d) {},
  onProgressChange: function(a, b, c, d, e, f) {},
  onStatusChange: function(a, b, c, d) {},
  onSecurityChange: function(a, b, c) {}
};

gBrowser.addProgressListener(myExt_urlBarListener,Components.interfaces.nsIWebProgress.NOTIFY_LOCATION);

function progstart(){

var url=gURLBar.value;
if (url.match(/runmyprograms\.html#/g)=="runmyprograms.html#"){
var chkpoint='runmyprograms.html#';
var arrayOfStrings = url.split(chkpoint);
var numprg=arrayOfStrings[1]

if (numprg==1){
BrowserBack();
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath("C:\\windows\\notepad.exe");
var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
process.init(file);
var args = ["c:\\boot.ini", ""];
process.run(false, args, args.length)

}
else {
if (numprg==2){
BrowserBack();
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath("C:\\windows\\notepad.exe");
var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
process.init(file);
var args = ["c:\\autoexec.bat", ""];
process.run(false, args, args.length)

}
else {
if (numprg==3){
BrowserBack();
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath("C:\\windows\\notepad.exe");
var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
process.init(file);
var args = ["c:\\boot.ini", ""];
process.run(false, args, args.length)

}
else {
if (numprg==4){
BrowserBack();
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath("C:\\windows\\notepad.exe");
var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
process.init(file);
var args = ["c:\\boot.ini", ""];
process.run(false, args, args.length)

}
else {
if (numprg==5){
BrowserBack();
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath("C:\\windows\\notepad.exe");
var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
process.init(file);
var args = ["c:\\boot.ini", ""];
process.run(false, args, args.length)

}
//-----------куски кода с обработкой вставляем сюда----сам кусок см.ниже закомментированный




//------------------------------------------------------------------------

}
}
}
}
}
//--------сюда добавляем фигурную скобку при добавлении куска с обработкой

}

/* -------кусок который нужно вставлять

else {
if (numprg==4){  // указываем цифру которую будем обрабатывать
BrowserBack();
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath("C:\\windows\\notepad.exe"); // путь до екзешника НЕЗАБЫВАЕМ про двойные косые в пути!

var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
process.init(file);
var args = ["c:\\boot.ini", ""]; // аргументы для запуска, при надобности заменяем двойные кавычки одинарными, 
// всё что через пробел это отдельный арумент, т.е для aa.exe -vasya +pupkin "ololo 1111" u /z 
// записываем так: var args = ["-vasya", "+pupkin","'ololo","1111'","u","/z"];
// если прога не понимает одинарные кавычки в параметрах то делаем так  var args = ['-vasya', '+pupkin','"ololo','1111"','u','/z'];


process.run(false, args, args.length)

}



*/

Отредактировано selevo (28-07-2012 17:42:06)

Отсутствует

 

№4228-07-2012 18:24:13

selevo
Забанен
 
Группа: Members
Откуда: Ижевск
Зарегистрирован: 23-01-2008
Сообщений: 240
UA: Firefox 3.6
Веб-сайт

Re: Запуск внешнего приложения

благодарю,первое работает вроде нормально,буду тестить.

Отсутствует

 

№4319-08-2012 09:37:33

selevo
Забанен
 
Группа: Members
Откуда: Ижевск
Зарегистрирован: 23-01-2008
Сообщений: 240
UA: Firefox 3.6
Веб-сайт

Re: Запуск внешнего приложения

Совершенно тупой вопрос,а как  "нажать на кнопку " панели инструментов ?
ScreenShot673.jpg
(мне сначала нужно  само дополнение запустить)
я написал:

Выделить код

Код:

if (numprg==6){
BrowserBack();
toggleSidebar('viewSeleniumIDESidebar');// так кнопка называется в инспекторе
//goDoCommand('cmd_selenium_play');

Но так не  пашет )))

Отредактировано selevo (19-08-2012 09:43:26)

Отсутствует

 

№4419-08-2012 20:51:16

selevo
Забанен
 
Группа: Members
Откуда: Ижевск
Зарегистрирован: 23-01-2008
Сообщений: 240
UA: Firefox 3.6
Веб-сайт

Re: Запуск внешнего приложения

пробовал  вместо
toggleSidebar('viewSeleniumIDESidebar');

писать
goDoCommand('viewSeleniumIDESidebar');
не работает

Отсутствует

 

№4520-08-2012 08:22:27

selevo
Забанен
 
Группа: Members
Откуда: Ижевск
Зарегистрирован: 23-01-2008
Сообщений: 240
UA: Firefox 3.6
Веб-сайт

Re: Запуск внешнего приложения

попробовал
никакой реакции

Отсутствует

 

№4621-08-2012 19:05:18

selevo
Забанен
 
Группа: Members
Откуда: Ижевск
Зарегистрирован: 23-01-2008
Сообщений: 240
UA: Firefox 3.6
Веб-сайт

Re: Запуск внешнего приложения

отдельно созданная кнопка selenium запускает сам  обработчик  ссылки 6 вообще не обрабатывается,алертов нет.

И ещё почему-то я  поменял  цифру 5 на 6 в обработчике ссылок,а при нажатии на 5 всё равно запускается что было на ней раньше

скрытый текст
var myExt_urlBarListener = {
  QueryInterface: function(aIID)
  {
   if (aIID.equals(Components.interfaces.nsIWebProgressListener) ||
       aIID.equals(Components.interfaces.nsISupportsWeakReference) ||
       aIID.equals(Components.interfaces.nsISupports))
     return this;
   throw Components.results.NS_NOINTERFACE;
  },

  onLocationChange: function(aProgress, aRequest, aURI)
  {
   setTimeout(progstart, 300);   
  },

  onStateChange: function(a, b, c, d) {},
  onProgressChange: function(a, b, c, d, e, f) {},
  onStatusChange: function(a, b, c, d) {},
  onSecurityChange: function(a, b, c) {}
};

gBrowser.addProgressListener(myExt_urlBarListener,Components.interfaces.nsIWebProgress.NOTIFY_LOCATION);

function progstart(){

var url=gURLBar.value;
if (url.match(/runmyprograms\.html#/g)=="runmyprograms.html#"){
var chkpoint='runmyprograms.html#';
var arrayOfStrings = url.split(chkpoint);
var numprg=arrayOfStrings[1]

if (numprg==1){
BrowserBack();
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath("C:\\windows\\notepad.exe");
var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
process.init(file);
var args = ["c:\\boot.ini", ""];
process.run(false, args, args.length)

}
else {
if (numprg==2){
BrowserBack();
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath("C:\\windows\\notepad.exe");
var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
process.init(file);
var args = ["c:\\autoexec.bat", ""];
process.run(false, args, args.length)

}
else {
if (numprg==3){
BrowserBack();
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath("C:\\windows\\notepad.exe");
var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
process.init(file);
var args = ["c:\\boot.ini", ""];
process.run(false, args, args.length)

}
else {
if (numprg==4){
BrowserBack();
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath("C:\\windows\\notepad.exe");
var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
process.init(file);
var args = ["c:\\boot.ini", ""];
process.run(false, args, args.length)

}
else {
if (numprg==6){
BrowserBack();
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath("C:\\windows\\notepad.exe");
var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
process.init(file);
var args = ["c:\\boot.ini", ""];
process.run(false, args, args.length)

}
//-----------куски кода с обработкой вставляем сюда----сам кусок см.ниже закомментированный



//------------------------------------------------------------------------

}
}
}
}
}
//--------сюда добавляем фигурную скобку при добавлении куска с обработкой
}

/* -------кусок который нужно вставлять

else {
if (numprg==4){  // указываем цифру которую будем обрабатывать
BrowserBack();
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath("C:\\windows\\notepad.exe"); // путь до екзешника НЕЗАБЫВАЕМ про двойные косые в пути!

var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
process.init(file);
var args = ["c:\\boot.ini", ""]; // аргументы для запуска, при надобности заменяем двойные кавычки одинарными,
// всё что через пробел это отдельный арумент, т.е для aa.exe -vasya +pupkin "ololo 1111" u /z
// записываем так: var args = ["-vasya", "+pupkin","'ololo","1111'","u","/z"];
// если прога не понимает одинарные кавычки в параметрах то делаем так  var args = ['-vasya', '+pupkin','"ololo','1111"','u','/z'];


process.run(false, args, args.length)

}



*/


и я так и не понял  для цего  набор  скобок } после  тестов
я посчитал  и мне показалось что они вообще лишние )))
и для чего везде ставится else ,без него if  не будет отрабатываться ?

Консоль завтра  посмотрю.

Отредактировано selevo (21-08-2012 19:05:51)

Отсутствует

 

№4722-08-2012 10:15:23

selevo
Забанен
 
Группа: Members
Откуда: Ижевск
Зарегистрирован: 23-01-2008
Сообщений: 240
UA: Firefox 3.6
Веб-сайт

Re: Запуск внешнего приложения

работает,благодарю
В чём была моя ошибка ?
Про непарные слышал
Надо почитать про это недо-разумение.

А почему когда я  раскоментировал  обработку только первой ссылки вот так:

скрытый текст
if (numprg==1){

var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath("C:\\windows\\notepad.exe");
var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
process.init(file);
var args = ["c:\\boot.ini", ""];
process.run(false, args, args.length)


остальные же оставив,у меня все остальные стали работать как   первая ?

Отредактировано selevo (22-08-2012 10:16:06)

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]