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

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

№102-03-2009 18:49:51

N1PhANtoM
Участник
 
Группа: Members
Откуда: Россия, Белгород
Зарегистрирован: 04-09-2008
Сообщений: 10
UA: Firefox 3.0

Чтение из файла без initwithpath

Граждане! Не подскажет ли кто способа чтения из файла без вызова initwithpath ? ибо этому методу не нравится путь, что я ввожу. возможно поможет относительный путь, но не смог понять как с ним работать. необходимо читать из компорта. Соответственно весь путь к файлу - это "Com1". любой язык программирования, да и просто коммандная строка съедает его в лет и замечательно читает оттуда, а FF3 и nsiLocalFile ругаются при вызове initwithpath.

Отсутствует

 

№203-03-2009 00:19:23

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Чтение из файла без initwithpath

А чтение подразумевается разовое или постоянное?
В принципе можно выполнить соответствующую команду cmd.


---  ---

Отсутствует

 

№303-03-2009 03:51:56

Crazy-EyE
Участник
 
Группа: Members
Зарегистрирован: 20-06-2008
Сообщений: 81
UA: Firefox 3.0

Re: Чтение из файла без initwithpath

Пример того, как выполнять команду используя cmd.exe

Выделить код

Код:

var file = Components.classes["@mozilla.org/file/local;1"]
                   .createInstance(Components.interfaces.nsILocalFile);
    // Initializing with full path to cmd.exe which should normally be in "ComSpec" environment variable
    file.initWithPath(
           Components.classes["@mozilla.org/process/environment;1"]
               .getService(Components.interfaces.nsIEnvironment)
               .get("ComSpec")
    );
    // Using "start /D filedir file.exe" to run file.exe with "filedir" as current working dir
    var cmd = "start /D z:\\path\\ z:\\path\\sample.exe";
    // Passing /C flag for cmd.exe to close after execution
    var args = ["/C", cmd];
    var process = Components.classes["@mozilla.org/process/util;1"]
                      .createInstance(Components.interfaces.nsIProcess);
    process.init(file);
    // Starting new process without waiting for its termination
    process.run(false, args, args.length);

Кстати, нельзя даже запустить программу из директории в PATH. Надо иметь полный путь, т.е. фактически самому парсить переменные окружения или реестр (для всяких %SystemRoot%). Тем более не будет работать com1

Отсутствует

 

№403-03-2009 08:40:18

N1PhANtoM
Участник
 
Группа: Members
Откуда: Россия, Белгород
Зарегистрирован: 04-09-2008
Сообщений: 10
UA: Firefox 3.0

Re: Чтение из файла без initwithpath

как то это все, простите, через задницу. мне тогда проще написать свое простейшее windows приложение, которое бы резидентно читало из com1 и выкладывало все в более доступный физический файл с нормально воспринимаемым именем, но хотелось бы найти способ читать именно из com1 чтобы было единообразие и одно расширение для *nix и windows систем.

Отредактировано N1PhANtoM (03-03-2009 08:41:10)

Отсутствует

 

№505-03-2009 23:23:40

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Чтение из файла без initwithpath

Crazy-EyE

Пример того, как выполнять команду используя cmd.exe

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

N1PhANtoM

как то это все, простите, через задницу

Есть такое :(

мне тогда проще написать свое простейшее windows приложение, которое бы резидентно читало из com1 и выкладывало все в более доступный физический файл с нормально воспринимаемым именем, но хотелось бы найти способ читать именно из com1 чтобы было единообразие и одно расширение для *nix и windows систем.

В принципе можно попробовать решить дело XPCOM.
Я в аналогичной ситуации работал с внешними консольными приложениями (мне их дали готовые).

В принципе если это всё можно сделать из cmd - можно создать файл со скриптом прямо из расширения и работать с ним.
С бинарным файлом так тоже можно проделать теоретически (не пробовал) (то есть com(он компактнее) в бинарном виде засунуть в расширение)...


---  ---

Отсутствует

 

№606-03-2009 00:55:04

Crazy-EyE
Участник
 
Группа: Members
Зарегистрирован: 20-06-2008
Сообщений: 81
UA: Firefox 3.0

Re: Чтение из файла без initwithpath

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

Естественно, cmd.exe только под винду. Просто я хотел показать фишку про ComSpec и то, что обязательно надо полный путь.

Под линукс уже обсуждали. Думаю будет работать так (не тестировал):

Выделить код

Код:

var file = Components.classes["@mozilla.org/file/local;1"]
                   .createInstance(Components.interfaces.nsILocalFile);
    // Initializing with full path to cmd.exe which should normally be in "ComSpec" environment variable
    file.initWithPath("/bin/bash");
    // Example, change to what you need
    var cmd = "ls";
    // Passing -c flag to bash to execute command
    var args = ["-c", cmd];
    var process = Components.classes["@mozilla.org/process/util;1"]
                      .createInstance(Components.interfaces.nsIProcess);
    process.init(file);
    // Starting new process without waiting for its termination
    process.run(false, args, args.length);

(В исходном примере для Windows была задача запустить программу в нужной директории, здесь мне было лень разбираться)

В принципе можно попробовать решить дело XPCOM.

Да, бинарный XPCOM идеологически самый правильный вариант, просто много возни будет (поэтому обычно XPCOM стараются избежать).

Отсутствует

 

№706-03-2009 08:24:08

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Чтение из файла без initwithpath

Crazy-EyE

Естественно, cmd.exe только под винду

Ну я подумал, что это и так очевидно, поэтому не стал про это распинаться - видимо ошибся.

Думаю будет работать так (не тестировал)

А я тестировал - не работало.


---  ---

Отсутствует

 

№806-03-2009 11:35:19

N1PhANtoM
Участник
 
Группа: Members
Откуда: Россия, Белгород
Зарегистрирован: 04-09-2008
Сообщений: 10
UA: Firefox 3.0

Re: Чтение из файла без initwithpath

оказалось что Com порт можно открыть не только но и "<любой путь>\Com1 " и нормально отрабатывает, всем спасибо. тема закрыта.

Отсутствует

 

Board footer

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