Indomito пишет:
Сейчас ищу решение.элементарно ватсон...
Привет, давно тут не пересекались тут.... а можно расшифровку, а то слово конфиг понятие растяжимое.
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
ну настройки ты куда пишешь?
используй настройку обычную строку а не комплексную(расширенную) как у тебя
а чтоб кириллицу не корёжило кодируй значение перeд записью а при чтении декодируй
Отредактировано okkamas_knife (05-06-2017 12:21:44)
я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.
toxID:05AB9B827D896AACEE7FF4573A02FB8F025F46ADC856B98F65BC1BA9BD21A81DC98BA9C36CE3
Отсутствует
Легче не стало, я не удивил комплексный тип, такого и нет в JS.
Буду использовать то что есть - у меня единственная проблема это проверка наличмя самой переменной или мы друг - друга просто не понимаем.
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
ты походу совсем упрограммировался. возьми отпуск чтоль.
вот ты юзаешь gPrefService.getComplexValue
а надо getCharPref / setCharPref
что непонятного то?
я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.
toxID:05AB9B827D896AACEE7FF4573A02FB8F025F46ADC856B98F65BC1BA9BD21A81DC98BA9C36CE3
Отсутствует
Ясно, конвертировать в UTF-8 нужно?
У меня не совместимость версий кнопки возникла - а как её обойти я хз.
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
Indomito пишетУ меня не совместимость версий кнопки возникла - а как её обойти я хз.
А что за несовместимость?
Старая версия не требовала путь конвертировать в UTF-8 и не нужно было обратное действие, новая версия это делает.
Кнопка не запоминает что она изменила содержимое Export.Import.CB.type.HTML значит надо вводит ещё переменную что бы точно знать.
Вариативно:
Ввёл Ctrl+Middle — Сбос каталога кнопок, да название так себе, но у меня работает.
//Сбросить, старой версию каталог записи/чтения function ctrlKeymbMouse(){ cbu.clearPrefs(cEICB); cbu.setPrefs(cEICB, convertFromUnicode("UTF-8", cPathEI) ); custombuttons. alertBox (cEICB, "Сброс - "+cEICB+" = "+cPathEI); };
Остальные пишут в ЛС, создают всё в ручную, через - about:config, а иначе ни как не получается.
Работать должно на 100%, у меня без проблем.
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
Indomito пишет: Ясно, конвертировать в UTF-8 нужно?
1 получил путь в переменную
2 енкодишь как я писал
3 записываешь значение в конфиг, в обычную строковую переменную.
--
читаешь значение той переменной , декодишь как я писал выше - получаешь путь в нормальном виде.
утф строковая переменная не поддерживает .
Indomito пишет: У меня не совместимость версий кнопки возникла - а как её обойти я хз.
ессно.тип то значения в конфиге изменился
проверяешь версию кнопки, если старая то работаешь со старым,комплексным вариантом значения
если новая - создай еще один строковый параметр типа Export.Import.CB.type1.HTML и работай с ним.
я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.
toxID:05AB9B827D896AACEE7FF4573A02FB8F025F46ADC856B98F65BC1BA9BD21A81DC98BA9C36CE3
Отсутствует
если новая - создай еще один строковый параметр типа Export.Import.CB.type1.HTML и работай с ним.
ну я так и решил Export.Import.CB.type.HTML.FF53, а старую т.е. Export.Import.CB.type.HTML просто удалю, а то такая путаница будет... сам могу запутаться. :)
утф строковая переменная не поддерживает
ты про исходник на JS-кнопки?
Добавлено 06-06-2017 13:28:02
Indomito
Пусть кнопка проверит существование cEICB и если cEICB существует перекодирует и перепишет путь в cEICB.
А потом то как, с чем сравнивать - путь может поменяться, т.е. попытки сравнить с действительным путем... тут надо что писать или есть готовая функция?
Отредактировано Indomito (06-06-2017 13:28:02)
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
у меня единственная проблема это проверка наличмя самой переменной
Используй Preferences.has()
И вообще открой во вкладке resource://gre/modules/Preferences.jsm и смотри.
Здравствуйте ребят! Не сможете ли создать СВ, которая изменяла бы значение куки. Например домен: ".yandex.ru", имя куки:"yandex_gid" и поменять значение на "67". Спасибо.
((bsp, id) => { addDestructor(reason => id in bsp && reason[5] == "e" && bsp[id].destroy()); if (id in bsp) return; bsp.Services.obs.addObserver(bsp[id] = { data: { ".yandex.ru": {"yandex_gid": "67"} }, observe(subject, topic, data) { if (data == "added" || data == "changed") this.change(subject); }, change(cookie) { var {host, path, name, value, isSecure, isHttpOnly, isSession, expiry} = cookie.QueryInterface(Ci.nsICookie2); if (!(host in this.data && name in this.data[host])) return; var val = this.data[host][name]; value != val && bsp.Services.cookies.add( host, path, name, val, isSecure, isHttpOnly, isSession, expiry ); }, destroy() {bsp.Services.obs.removeObserver(this, "cookie-changed"); delete bsp[id];} }, "cookie-changed", false); var en = bsp.Services.cookies.enumerator; while(en.hasMoreElements()) bsp[id].change(en.getNext()); })(Cu.import("resource://gre/modules/Services.jsm", {}), "dedforCookieChanger1");
А из кнопки может как-то можно? Мне нужно smplayer так запускать
Проверка. Win7. ctypes.
var path = "C:\\Program Files (x86)\\SMPlayer\\smplayer.exe"; alert(path + "\n\nrunning: " + isSMPlayerRunning(path)); function isSMPlayerRunning(path, processesCount = 2000) { var {ctypes} = Cu.import("resource://gre/modules/ctypes.jsm", {}); var kernel32 = ctypes.open("kernel32.dll"); // https://msdn.microsoft.com/en-us/library/windows/desktop/ms682629%28v=vs.85%29.aspx var K32EnumProcesses = kernel32.declare("K32EnumProcesses", ctypes.winapi_abi, ctypes.bool, ctypes.uint32_t.ptr, // out DWORD *pProcessIds A pointer to an array that receives the list of process identifiers. ctypes.uint32_t, // in DWORD cb The size of the pProcessIds array, in bytes. ctypes.uint32_t.ptr // out DWORD *pBytesReturned The number of bytes returned in the pProcessIds array. ); // https://msdn.microsoft.com/en-us/library/windows/desktop/ms684880%28v=vs.85%29.aspx var PROCESS_VM_READ = 0x0010; var PROCESS_QUERY_LIMITED_INFORMATION = 0x1000; // https://msdn.microsoft.com/en-us/library/windows/desktop/ms684320(v=vs.85).aspx var OpenProcess = kernel32.declare("OpenProcess", ctypes.winapi_abi, ctypes.voidptr_t, ctypes.uint32_t, // in DWORD dwDesiredAccess The access to the process object. ctypes.bool, // in BOOL bInheritHandle ctypes.uint32_t // in DWORD dwProcessIdThe The identifier of the local process to be opened. ); // https://msdn.microsoft.com/en-us/library/windows/desktop/ms724211%28v=vs.85%29.aspx var CloseHandle = kernel32.declare("CloseHandle", ctypes.winapi_abi, ctypes.bool, ctypes.voidptr_t // in HANDLE hObject A valid handle to an open object. ); https://msdn.microsoft.com/en-us/library/windows/desktop/ms684919%28v=vs.85%29.aspx var QueryFullProcessImageNameW = kernel32.declare("QueryFullProcessImageNameW", ctypes.winapi_abi, ctypes.bool, ctypes.voidptr_t, // in HANDLE hProcess A handle to the process. ctypes.uint32_t, // in DWORD dwFlags ctypes.jschar.ptr, // out LPTSTR lpExeName The path to the executable image. If the function succeeds, this string is null-terminated. ctypes.uint32_t.ptr // inout PDWORD lpdwSize On input, specifies the size of the lpExeName buffer, in characters. On success, receives the number of characters written to the buffer ); var result, length = path.length + 1; // null-terminated var processIdsSize = new ctypes.uint32_t(processesCount); var processIds = ctypes.uint32_t.array(processesCount)(); try { K32EnumProcesses(processIds, processIdsSize, processIdsSize.address()); var desiredAccess = PROCESS_VM_READ | PROCESS_QUERY_LIMITED_INFORMATION; for(var ind = processIdsSize.value / ctypes.uint32_t.size; ind; ind--) { var processHandle = OpenProcess(desiredAccess, false, processIds[ind]); if (processHandle.isNull()) continue; var bufferSize = new ctypes.uint32_t(length); var buffer = ctypes.jschar.array(length)(); var res = QueryFullProcessImageNameW(processHandle, 0, buffer, bufferSize.address()); CloseHandle(processHandle); if ((result = res && buffer.readString() == path)) break; } } catch(ex) {Cu.reportError(ex);} kernel32.close(); return result; }
Отсутствует
Используй Preferences.has()
И вообще открой во вкладке resource://gre/modules/Preferences.jsm и смотри.
Спасибо, я её аналог потерял... т.е. забыл адрес.
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
Indomito пишет: ты про исходник на JS-кнопки?
я про значения
https://developer.mozilla.org/en-US/Add-ons/Code_snippets/Preferences#Simple_types
то что string, если туда утф или локализованную строку писать то выйдут кракозябры
чтоб не извращаться с комплексным типом (по ссылке ниже ) проще кодировать данные в съедобный для string формат и при чтении декодировать.
ну и до кучи
var n=custombuttons.isPref("custombuttons.button.test"); если существует то true если нет то false
я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.
toxID:05AB9B827D896AACEE7FF4573A02FB8F025F46ADC856B98F65BC1BA9BD21A81DC98BA9C36CE3
Отсутствует
okkamas_knife Спасибо за информацию.
custombuttons.isPref = function (prefName) { return srcObject [sMethodName]. apply (srcObject, arguments); }
или
Preferences.has = function(prefName) { if (Array.isArray(prefName)) return prefName.map(this.has, this); return (this._prefBranch.getPrefType(prefName) != Ci.nsIPrefBranch.PREF_INVALID); };
По сути разница не велика, меня другое волнует/заботит это проверка cEICB на валидный путь.
Отредактировано Indomito (07-06-2017 10:11:10)
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
Indomito пишет: По сути разница не велика, меня другое волнует/заботит это проверка cEICB на валидный путь.
курим https://developer.mozilla.org/en-US/Add-ons/Code_snippets/File_I_O
1 проверяем наличие настройки
2 юзая try ... catch пытаемся считать значение как string
если не удалось то как complex
3 получив значение пытаемся декодить его
(не вышло - оставляем как есть)
4 проверяем наличие папки с этим адресом ( file.exists() file.isDirectory() )
если облом то путь невалиден (или папки не существует)
я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.
toxID:05AB9B827D896AACEE7FF4573A02FB8F025F46ADC856B98F65BC1BA9BD21A81DC98BA9C36CE3
Отсутствует
okkamas_knife Спасибо за линк(по старому линку ничего нет) https://developer.mozilla.org/en-US/Add … s/File_I_O.... Хорошая у тебя трава... курю.
Может кому и пригодится: WebDeveloperKitChm[пароль=BoitQa].rar - трояна нет(просто зашифровал архив), просто левые AVP срабатывают, например NOD 32, а пустые логи прикладывать, это как то садомазохизм.
Комплект для веб-дизайнера. Учебники по HTML, CSS, JavaScript, а также переводы спецификаций
CSS_tutor.chm - учебник по каскадным стилям CSS;
HTML_tutor.chm - учебник по языку верстки веб-страниц HTML;
Html401CSS2_specification.chm - переводы оригинальных спецификаций HTML 4.01 и CSS 2.0
JavaScript15_reference.chm - справочник по JavaScript1.5
JavaScript15_tutor.chm - учебник по JavaScript 1.5
P.S. Проверять в https://www.virustotal.com/ru можете сами, но посмотрите кто срабатывает.
Отредактировано Indomito (07-06-2017 12:48:05)
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
Почему не работает третья строка кода, где ошибка?
function scroll_down(){content.scrollTo(0, content.scrollMaxY);} content.document.location.href='http://yandex.ru/search/?&text='+"Zapros"; window.onload = function (){scroll_down()};
Как заставить работать не применяя setTimeout?
Отредактировано dedfor (09-06-2017 10:03:06)
Отсутствует
window.onload = function (){scroll_down()};
Не работает потому что window на который ты повесил обработчик уже загружен. Тут нужен обработчик на новую страницу или что ты там открываешь. Пример:
var page = gBrowser.getBrowserForTab( gBrowser.selectedTab = gBrowser.addTab('http://yandex.ru/search/?&text='+'Zapros') ); page.addEventListener("pageshow", function c(e) { this.removeEventListener( e.type, c ); setTimeout(function() { scroll_down(); }, 0); });
Отсутствует
4 проверяем наличие папки с этим адресом ( file.exists() file.isDirectory() )
если облом то путь невалиден (или папки не существует)
Вот с этим не получатся... можно пример на валидность пути - наличие папки с этим адресом ( file.exists() file.isDirectory() )
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); file.initWithPath("C:\\tmp\\test.txt"); var n=file.exists(); alert(n); var n=file.isDirectory() alert(n);
я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.
toxID:05AB9B827D896AACEE7FF4573A02FB8F025F46ADC856B98F65BC1BA9BD21A81DC98BA9C36CE3
Отсутствует
zapros= "вешалки"; page= gBrowser.getBrowserForTab(gBrowser.selectedTab= gBrowser.addTab('http://yandex.ru/search/?&text='+ zapros) ); page.addEventListener("pageshow", function c(e) { this.removeEventListener( e.type, c ); content.scrollTo(0, content.scrollMaxY); });
Отредактировано dedfor (11-06-2017 06:35:29)
Отсутствует