Merhaba,
Test edilmiş tüm tarayıcılar için çözüm şu şekilde (
Yandex (krom tabanlı) Chrome ve Firefox üçünde de çalışır).
İlk önce kullanmakta olduğun
System.Windows.Automation değiştirmen gerekiyor. Çünkü
IUIAutomation gerçekten yavaş.
İşlem için, önce bağımlılıklara git ve bağımlılıklara sağ tıkla, ardından "
COM Referansı Ekle .." ye bas:
Ekli dosyayı görüntüle 77207
Ardından,
UIAutomationClient'i bul, daha kolay erişmek için sağ üstteki arama çubuğuna
UI koyabilirsin:
Ekli dosyayı görüntüle 77208
Ekledikten sonra bu kodu yaz:
C#:
private readonly CUIAutomation _automation;
public YourMainClass()
{
_automation = new CUIAutomation();
_automation.AddFocusChangedEventHandler(null, new FocusChangeHandler(this));
}
public class FocusChangeHandler : IUIAutomationFocusChangedEventHandler
{
private readonly YourMainClass _listener;
public FocusChangeHandler(YourMainClass listener)
{
_listener = listener;
}
public void HandleFocusChangedEvent(IUIAutomationElement element)
{
if (element != null)
{
using (Process process = Process.GetProcessById(element.CurrentProcessId))
{
try
{
IUIAutomationElement elm = this._listener._automation.ElementFromHandle(process.MainWindowHandle);
IUIAutomationCondition Cond = this._listener._automation.CreatePropertyCondition(30003, 50004);
IUIAutomationElementArray elm2 = elm.FindAll(TreeScope.TreeScope_Descendants, Cond);
for (int i = 0; i < elm2.Length; i++)
{
IUIAutomationElement elm3 = elm2.GetElement(i);
IUIAutomationValuePattern val = (IUIAutomationValuePattern)elm3.GetCurrentPattern(10002);
if (val.CurrentValue != "")
{
Debug.WriteLine("URL found: " + val.CurrentValue);
}
}
}
catch { }
}
}
}
}
Ve en üste bu iki satırı koymalısın;
using UIAutomationClient;
using TreeScope = UIAutomationClient.TreeScope;
Ayrıca "
YourMainClass" ı gerektiği gibi kendi sınıfınla değiştirmelisin.
İyi forumlar dilerim.