Как можно запустить приложение или, например, текстовый файл, находящийся в установленном расширении, внутри zip (xpi) архива?
Для начала - прочитать содержимое файла, и сохранить во временную папку. Распаковку можно сделать c помощью nsIZipReader.
Можно ли запустить это приложение поверх всех окон?
Вообще-то это исключительно свойство окна запускаемого приложения, и в общем случае запускающим приложением никак не задается. Если очень хочется - получайте хэндл окошка запущенного приложения (только учтите, что нужен хэндл от top-level window), далее - через js-ctypes делаете вызов SetWindowPos, задав hWndInsertAfter=HWND_TOPMOST. Разумеется, это решение специфично для платформы.
Отсутствует
объясните понятным языком что куда приделать
всё зависит от конечной цели
"Software is like SEX - it's better when it's FREE" (C) Linus Torvalds
Отсутствует
да вот хочу как бы панель управления сделатть на страничке своей
несколько кнопок чтоб запускали те или иные файлы,желательно с параметрами хотя можно просто батник запускать...
У меня web бот стоит на компе и он может только в браузере что-то делать,на страничках и вот ему надо дать задание чтоб прокси переключал иногда или GSM модем переключал на др. оператора,а эт делается запуском прог.
Отсутствует
я уже начинаю нервничать....
вот страница
запустите ссылкой свой блокнот на своём же компе
ну я упрощаю конечно
Отредактировано selevo (14-07-2012 20:29:48)
Отсутствует
web-бот написан на selenium IDE расширение такое для web автоматизации
и работает только со страничками.
Еслиб он мог кликать на кнопки FF яб не заморачивался ,давно сделал бы что надо.
Мне надо только что бы заработала гиперссылка подобного типа и только это.
Слежение меня не интересует,всё уже есть.
Отсутствует
аа,тоесть какое-то расширение даже типа CB ,отслеживает клик на эту ссылку и запускает уже само от своего имени блокнот ,так ?
Отредактировано selevo (14-07-2012 20:45:14)
Отсутствует
ну да так проще
вообще как будут выглядеть урлы на страничке вообще не важно
,этож робот будет кликать, он заранее знает что
урл номер 1 это запуск проги блокнот
урл 2 запуск модемной проги
урл 3 закрыть блокнот
4 закрыть модемную прогу
примерно так
Отредактировано selevo (14-07-2012 22:41:50)
Отсутствует
а как таким же образом сделать так, чтобы нажался элемент управления (кнопка) в одном из аддонов FF ?
Конкретно интересует нажатие кнопки play в Selenium IDE
Да и вообще интересует сам принцип реализации и доступа к таким вещам.
вот ролик
http://youtu.be/7Okuo3JDufQ
там я показал какую кнопку надо жать ,кнопка запуска теста - зелёный треугольник.
Отредактировано selevo (28-07-2012 17:05:19)
Отсутствует
вот что показывает
id="play-button" label="Play" class="icon" tooltiptext="Play current test case" command="cmd_selenium_play" oncommand="goDoCommand('cmd_selenium_play')"
А в каком месте этого кода разместить команду ?
И что именно написать в данном случаи ?
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)
Отсутствует
Совершенно тупой вопрос,а как "нажать на кнопку " панели инструментов ?
(мне сначала нужно само дополнение запустить)
я написал:
if (numprg==6){ BrowserBack(); toggleSidebar('viewSeleniumIDESidebar');// так кнопка называется в инспекторе //goDoCommand('cmd_selenium_play');
Но так не пашет )))
Отредактировано selevo (19-08-2012 09:43:26)
Отсутствует
отдельно созданная кнопка selenium запускает сам обработчик ссылки 6 вообще не обрабатывается,алертов нет.
И ещё почему-то я поменял цифру 5 на 6 в обработчике ссылок,а при нажатии на 5 всё равно запускается что было на ней раньше
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)
}
*/
Консоль завтра посмотрю.
Отредактировано selevo (21-08-2012 19:05:51)
Отсутствует
работает,благодарю
В чём была моя ошибка ?
Про непарные слышал
Надо почитать про это недо-разумение.
А почему когда я раскоментировал обработку только первой ссылки вот так:
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)
Отсутствует