Получить id процесса COM объекта (C#)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by nc.STRIEM, 28 Apr 2010.

  1. nc.STRIEM

    nc.STRIEM Members of Antichat

    Joined:
    5 Apr 2006
    Messages:
    1,036
    Likes Received:
    347
    Reputations:
    292
    Пишу на c#, через COM запускаю IE
    IE = new SHDocVw.InternetExplorer();
    Проблема в том что завершение работы браузера через IE.Quit() не всегда происходит коректно, иногда окно всеравно не закрывается, например в случае когда выскакивает какое либо диалоговое окно на сайте. Вопрос в следуюшем как получить id процесса который создается при запуске IE? используя его хочу убивать IE
     
  2. Sunstrider

    Sunstrider Banned

    Joined:
    9 Apr 2010
    Messages:
    152
    Likes Received:
    10
    Reputations:
    4
    http://msdn.microsoft.com/en-us/library/ms633522.aspx если я понял что ты спрашиваеш
     
    1 person likes this.
  3. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    IE = new SHDocVw.InternetExplorer();

    у этого объекта должен быть handle.

    дальше Process.GetProcessByName("iexplore").First(a => a.Id == IE.Handle).Kill()
     
  4. Sunstrider

    Sunstrider Banned

    Joined:
    9 Apr 2010
    Messages:
    152
    Likes Received:
    10
    Reputations:
    4
    я спрашивал,не подходит т.к. будет много окон многопоточно
     
  5. nc.STRIEM

    nc.STRIEM Members of Antichat

    Joined:
    5 Apr 2006
    Messages:
    1,036
    Likes Received:
    347
    Reputations:
    292
    IE.HWND и a.Id это разные вещи, а подвисший IE через Kill() не убивается, его нужно только с принудительным завершением
     
    #5 nc.STRIEM, 28 Apr 2010
    Last edited: 28 Apr 2010
  6. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    да посмотрел. Как вариант искать по заголовку.
    a.MainForm.Title (что-то в таком духе)
     
    2 people like this.
  7. Sunstrider

    Sunstrider Banned

    Joined:
    9 Apr 2010
    Messages:
    152
    Likes Received:
    10
    Reputations:
    4
    ты не понял он хочет искать id процесса exploer и гасить его,заголовки не помогут тут ченить другое надо
     
  8. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    бл**ь иногда лучше промолчать
     
  9. scrat

    scrat кодер

    Joined:
    8 Apr 2007
    Messages:
    625
    Likes Received:
    541
    Reputations:
    3
    Может для реализации не подойдёт, но может проще делать через компонент WebBrowser?
     
  10. nc.STRIEM

    nc.STRIEM Members of Antichat

    Joined:
    5 Apr 2006
    Messages:
    1,036
    Likes Received:
    347
    Reputations:
    292
    проблема не в том как завершить процесс, а в том как получить его id
     
  11. nc.STRIEM

    nc.STRIEM Members of Antichat

    Joined:
    5 Apr 2006
    Messages:
    1,036
    Likes Received:
    347
    Reputations:
    292
    Это в случае если он 1, в моем случае их много
     
  12. BrainDeaD

    BrainDeaD Elder - Старейшина

    Joined:
    9 Jun 2005
    Messages:
    774
    Likes Received:
    292
    Reputations:
    214
    ну ты же его всёравно убиваешь. тогда в цикле при следующем GetProcessesByName ты получаешь id очередного процесса и т.д.

    Edit:в дополнение к W!z@rD
    Code:
    [DllImport("user32.dll", CharSet=CharSet.Auto, SetLastError=true)]
    public static extern int GetWindowThreadProcessId(HandleRef handle, out int processId);
     
    #12 BrainDeaD, 29 Apr 2010
    Last edited: 29 Apr 2010
  13. nc.STRIEM

    nc.STRIEM Members of Antichat

    Joined:
    5 Apr 2006
    Messages:
    1,036
    Likes Received:
    347
    Reputations:
    292
    работает много IE мне нужно убить только некоторые из них. Для этого нужно знать конкретные id, чтоб не все подряд рубить, а только то что надо
     
  14. RexTiam

    RexTiam Member

    Joined:
    2 Nov 2009
    Messages:
    117
    Likes Received:
    45
    Reputations:
    5
    а не проще сделать тот же самое через бат? Оо чтоб гнал ие