ブラウザの URL を監視するアプリケーションがあります。現在、私はクロムを使用しています。私はこの答えから解決策に従いました:
public static string GetChromeUrl(Process process) {
if (process == null)
throw new ArgumentNullException("process");
if (process.MainWindowHandle == IntPtr.Zero)
return null;
AutomationElement element = AutomationElement.FromHandle(process.MainWindowHandle);
if (element == null)
return null;
AutomationElement edit = element.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Edit));
return ((ValuePattern)edit.GetCurrentPattern(ValuePattern.Pattern)).Current.Value as string;
}
次に、URL をテキスト ファイルに記録する次の方法があります (log4net を使用)。
while (true) {
foreach (Process process in Process.GetProcessesByName("chrome")) {
string url = GetChromeUrl(process);
if (url == null)
continue;
Console.WriteLine(url); //for viewing purpose, it actually logs in orig code
}
Thread.Sleep(1000);
}
それはかなりうまくいきます。しかし、どういうわけか方法に矛盾がありGetChromeUrl
ます。が返されることもありますがnull
、これが私の大きな問題です。誰かがより良い解決策を持っていますか?