Для создания Chrome-расширения с помощью Vuejs вы можете использовать этот шаблон. Убедитесь, что вы установили vue-cli, если он не установлен, вы можете установить его с помощью `npm install -g @ vue / cli.
После установки vue-cli запустите этот cmd: vue init kocal/vue-web-extension my-extension
. Он загрузит и установит шаблон шаблона vuejs для расширения chrome в ваш текущий каталог. Затем вы можете перейти во вновь созданный каталог и установить зависимости с помощью команды npm install
.
Теперь вы полностью настроили приложение vuejs для вашего chrome-расширения, но оно откроется как всплывающее окно, чтобы сделать его видимым на новой вкладке, и потребует некоторой модификации, как я дал ниже.
src/manifest.json
и удалите "default_popup": "popup/popup.html"
из "browser_action"
Затем перейдите к файлу src/background.js
и удалите весь указанный код и замените его на код приведен ниже.
chrome.browserAction.onClicked.addListener(function (tab) {
chrome.tabs.create(
{
url: chrome.extension.getURL('./popup/popup.html'),
},
function (tab) { }
);
});
Теперь запустите run npm run build
, и он сгенерирует папку dist, которую вы можете использовать в качестве папки расширения. Это вы можете открыть в Chrome, используя опцию Load unpacked
в меню расширений Chrome.
И все готово. Вы можете увидеть приложение vuejs, работающее в окне новой вкладки, нажав на значок расширения.
1120 Дайте мне знать, сработало это или нет, если не сработало, тогда, пожалуйста, позвольте мне знать, с какой проблемой вы столкнулись.
Необходимо, вероятно, просто использовать SetThreadAffinityMask и положить, что он работает.
Если Вы могли бы вызвать функцию, которая возвращает число, указывающее, на чем ЦП поток работает, не используя привязку, ответ часто был бы неправильным как только возвращенная функция. Так проверяя маску, возвращенную SetThreadAffinityMask()
так близко, как Вы собираетесь добраться, за пределами кода ядра, работающего в поднятом IRQL, и даже это изменяется.
Это кажется, что Вы пытаетесь работать вокруг RDTSC
проблемы расфазировки тактовых сигналов. Если Вы используете RDTSC
инструкция непосредственно, рассмотрите вызов QueryPerformanceCounter()
вместо этого:
QueryPerformanceCounter()
на использовании Windows Vista HPET, если это поддерживается чипсетом и находится в таблицах ACPI системы. QueryPerformanceCounter()
, но это ничего не делает для приложений то использование RDTSC
непосредственно. AMD Двухъядерный Оптимизатор является взломом для приложений то использование RDTSC
непосредственно, но если объем расфазировки тактовых сигналов изменится из-за сползания часов C1 (где тактовая частота уменьшается в состоянии электропитания C1), у Вас все еще будет расфазировка тактовых сигналов. И эти утилиты, вероятно, не очень широко распространены, настолько использующая привязка с QueryPerformanceCounter()
все еще хорошая идея.Нет никакой потребности в GetThreadAffinityMask. Просто получите значение GetProcessAffinityMask, выключите некоторые биты, затем назовите SetThreadAffinityMask. Потоки наследовали маску привязки процесса, и так как их привязка находится под Вашим контролем, Вы уже знаете маску привязки потока (это - то, которое Вы устанавливаете его на).
Что сказал Ken. Но если Вы не полагаете, что это работает, можно назвать SetThreadAffinityMask снова и подтвердить, что возвращаемое значение соответствует тому, чем Вы ожидаете, что маска будет. (Но затем конечно, если Вы не доверяете функции затем, Вы не можете доверять второму вызову...),
Не смущайтесь существованием GetProcessAffinityMask. Та функция не состоит в том, чтобы там проверить, что SetProcessAffinityMask работал, но например, таким образом, можно создать привязку потока, которая является подмножеством привязки процесса.
Просто посмотрите, что возвращаемое значение и проверяет, что это не 0, и необходимо быть в порядке.