投稿者 でふぁいあんと  (社会人) 投稿日時 2022/12/22 14:32:11
お世話になります。
事情があって、vbプログラム上から、win10「既定のブラウザ」をIEに切り替える必要があります。
最初はレジストリ操作を試みました。レジストリの変更はできましたが、
実際のブラウザはかわらずじまい。
そこで、「設定」アプリから、「既定のアプリ」->webブラウザをUIAutomationにて切り替える
ことをチャレンジしています

webBrowserのボタンを捕まえるところはうまく行ったのですが、
invokeしても「設定アプリ」が反応しません

ちなみに、Inspect.exeにて、
webbrowser,internet Explorer buttonにaction->invoke.invokeすると、きちんとポップアップを開きます。

このinvokeの方法、その後のポップアップの処理について
何かヒントでもありますでしょうか



'設定アプリを起動する
strCMD = "start ms-settings:defaultapps"
Set objExec = WSH.Exec("cmd.exe /c" & strCMD)
'ハンドル
hWwnd = FindWindow(vbNullString, "設定")

'ウィンドウハンドルからエレメントを取得
Set uiElm = uiAuto.ElementFromHandle(ByVal hwnd)

'以下冗長ですが、webbrowserのボタンまで下ります
Set uiCnd = uiAuto.CreatePropertyCondition(UIA_ClassNamePropertyId,"Windows.UI.Core.CoreWindow")
Set uiElm = uiElm.FindFirst(TreeScope_Children, uiCnd)


Set uiCnd = uiAuto.CreatePropertyCondition(UIA_ClassNamePropertyId, "LandmarkTarget")
Set uiElmAr = uiElm.FindAll(TreeScope_Children, uiCnd)
'2番めの"group"
Set uiElm = uiElmAr.GetElement(1)

Set uiCnd = uiAuto.CreatePropertyCondition(UIA_ClassNamePropertyId, "ScrollViewer")
Set uiElm = uiElm.FindFirst(TreeScope_Children, uiCnd)

Set uiCnd = uiAuto.CreatePropertyCondition(UIA_ClassNamePropertyId, "GroupItem")
Set uiElm = uiElm.FindFirst(TreeScope_Children, uiCnd)

Set uiCnd = uiAuto.CreatePropertyCondition(UIA_ClassNamePropertyId, "Button")
Set uiElmAr = uiElm.FindAll(TreeScope_Children, uiCnd)
'Buttonの6番目
Set uiElm = uiElmAr.GetElement(5)

'**********ここ
Set uiInvoke = uiElm.GetCurrentPattern(UIA_InvokePatternId)
uiInvoke.Invoke