0

私はクロム拡張機能を取得しました。新しいタブの場合、現在のウィンドウの場合、ウィンドウでウィンドウ ハンドルを取得したいと考えています。

イベントでタブオブジェクトを取得し、クロムの内部ウィンドウ ID を取得しましたが、これはウィンドウのハンドルではありません。

chrome.tabs.onCreated.addListener(
        function (tab)
        {
            var intMainWindowHwnd = 0; // how to get it? not tab.windowId…
        });

ありがとう!

4

1 に答える 1

0

まあ、誰かが同じ問題に遭遇した場合は、win32api にアクセスできる C++のNPAPIプラグインを使用して解決しました...

Invoke メソッドで、メソッド (GetProcessId) をチェックし、親プロセスを取得しました (アドオンが別のプロセスにあるため):

ULONG_PTR MyAddon::GetParentProcessId() // By Napalm @ NetCore2K
{
 ULONG_PTR pbi[6];
 ULONG ulSize = 0;
 LONG (WINAPI *NtQueryInformationProcess)(HANDLE ProcessHandle, ULONG ProcessInformationClass,
  PVOID ProcessInformation, ULONG ProcessInformationLength, PULONG ReturnLength); 
 *(FARPROC *)&NtQueryInformationProcess = 
  GetProcAddress(LoadLibraryA("NTDLL.DLL"), "NtQueryInformationProcess");
 if(NtQueryInformationProcess){
  if(NtQueryInformationProcess(GetCurrentProcess(), 0,
    &pbi, sizeof(pbi), &ulSize) >= 0 && ulSize == sizeof(pbi))
     return pbi[5];
 }
 return (ULONG_PTR)-1;
}

次に、このプロセスのメイン hwnd を取得し、それを js アドオンに返します。

于 2013-08-29T07:10:50.013 に答える