2016-04-25 14 views
3

Ich versuche, die Prozess-ID mit aktuellen Registerkarte durch Chrome-Erweiterung verknüpft.Holen Sie sich Chrome-Tab pid von Chrome-Erweiterung

Ich habe es geschafft, es durch chrome.processes experimentelle API zu bekommen.

Gibt es eine Möglichkeit, den Tab pid mit Standard-API (nicht experimentell) zu bekommen?

Antwort

5

Wenn Sie den realen Prozess-ID (dh eine, die von anderen Programmen verwendet werden können, Prozesse zu identifizieren) erhalten möchten, dann ist Ihre einzige Option chrome.processes, aber diese API ist nur auf der Dev channel (also nicht für Chrome stabil noch Beta) verfügbar.

Wenn Sie nur eine Kennung benötigen, um Prozesse eindeutig zu identifizieren, können Sie über die API chrome.webNavigation die "Prozess-ID einer Registerkarte" abrufen. Diese ID ist nur in Chrome sinnvoll. Bevor ich auf die Details eingehe, lassen Sie uns zunächst sagen, dass mehrere Registerkarten dieselbe Prozess-ID verwenden können und dass diese eine Registerkarte mehrere Prozesse enthalten kann (wenn Site isolation project aktiviert ist).

Mit "Registerkarte PID" nehme ich an, dass Sie sich auf den Prozess beziehen, der den Frame der obersten Ebene hostet. Dann können Sie eine Liste der Bilder abrufen und die Prozess-ID für die Registerkarte extrahieren wie folgt:

background.js

'use strict'; 
chrome.browserAction.onClicked.addListener(function(tab) { 
    chrome.webNavigation.getAllFrames({ 
     tabId: tab.id, 
    }, function(details) { 
     if (chrome.runtime.lastError) { 
      alert('Error: ' + chrome.runtime.lastError.message); 
      return; 
     } 
     for (var i = 0; i < details.length; ++i) { 
      var frame = details[i]; 
      // The top-level frame has frame ID 0. 
      if (frame.frameId === 0) { 
       alert('Tab info:\n' + 
         'PID: ' + frame.processId + '\n' + 
         'URL: ' + frame.url); 
       return; // There is only one frame with ID 0. 
      } 
     } 
     alert('The top-level frame was not found!'); 
    }); 
}); 

manifest.json

{ 
    "name": "Show tab PID", 
    "version": "1", 
    "manifest_version": 2, 
    "background": { 
     "scripts": ["background.js"], 
     "persistent": false 
    }, 
    "browser_action": { 
     "default_title": "Show tab PID" 
    }, 
    "permissions": [ 
     "webNavigation" 
    ] 
} 
+0

Danke, aber ich brauche das Betriebssystem PID für den Einsatz außerhalb von Chrom. – AK87

3

Nein, es gibt keine andere Möglichkeit, außer experimentelle API chrome.processes

Verwandte Themen