2011-12-09 20 views
5

Tôi có ứng dụng của mình sẽ kích hoạt Trình duyệt web với URL cụ thể. Sau khi chương trình của tôi kết thúc, tôi muốn đóng các trang web/tab mà tôi đã mở.Làm cách nào để lấy URL của các tab khám phá Internet với PID của mỗi tab?

Bằng cách gọi tệp EXE có tham số a. Tên quy trình b. Chuỗi hiện diện trong URL

vấn đề chi tiết How to kill firefox child process/tab from Java/C++

tôi đã sử dụng cách tiếp cận C# ...

Tôi có thể tìm thấy quá trình ID của tất cả các tab ..

foreach (Process theprocess in processlist) { 
    if (theprocess.ProcessName == "iexplore") { 
     Console.WriteLine("Process: {0}\tID: {1}\tWindow name: {2}", 
      theprocess.ProcessName, theprocess.Id, theprocess.MainWindowTitle 
     ); 
    } 
} 

Hiện nay tôi chỉ có thể nhận được Tiêu đề Cửa sổ của tiến trình .... và trong IE8 chỉ có một tiêu đề cửa sổ của quy trình chính được hiển thị ..

ided i có pids của mỗi tab, Làm thế nào để tìm URL của tab ... và chỉ giết tab đó ??

tôi đã trợ giúp này từ Access is denied - when trying to get the url (text) from address bar's handle

sử dụng SHDocVw; . .

foreach (InternetExplorer ieInst trong ShellWindowsClass mới()) Console.WriteLine (ieInst.LocationURL);

Trả lời

8

Trong các phiên bản IE7 và sau đó, mã dưới đây sẽ chỉ giết tab có chuỗi phù hợp trong URL của nó.

foreach (SHDocVw.InternetExplorer ieInst in new SHDocVw.ShellWindows()) 
    { 
     String url = ieInst.LocationURL; 
     if (url.Contains("google")) 
     { 
      ieInst.Quit(); 
     } 
    } 

Tập trung một tab cụ thể mã là:

foreach (SHDocVw.InternetExplorer ieInst in new SHDocVw.ShellWindows()) 
    { 
     String url = ieInst.LocationURL; 
     if (url.Contains("google")) 
     { 
      int val = ieInst.HWND; 
      IntPtr hwnd = new IntPtr(val); 
      ShowWindow(hwnd, SW_MAXIMISE); 
      SetForegroundWindow(hwnd); 
     } 
    } 
+0

vĩ đại thông tin, nhưng tại sao bạn nói chuyện với chính mình? : o/ –

+2

Coz evryon xem nó và không có nội dung trả lời :) cho đến khi tôi tìm thấy giải pháp bản thân mình và chia sẻ tat là tốt: P –

+2

Sử dụng mã này sẽ ném hai lỗi. Người ta nên sử dụng "ShellWindows()" thay vì "ShellWindowsClass()". –

3

Có cách lấy URL của mỗi cá thể IExplorer !!

Thêm tham chiếu "Điều khiển Internet của Microsoft" vào dự án.

Các đoạn mã là

**foreach (SHDocVw.InternetExplorer ieInst in new SHDocVw.ShellWindowsClass()) 
     { 
      System.Console.WriteLine(ieInst.LocationURL); 
     }** 

Tạo exe và Interop.SHDocVw.dll

Nó sẽ làm việc ... :)

Các vấn đề liên quan