掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
UIAutomationのInvokeを使いボタンをクリックした際に入力待機になるのを防ぎたい (ID:151313)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>HFUKUSHIさん 返信ありがとうございます。 はい、マウスやキーボードイベントだと問題ないのですがUIAutomationで行う必要がありまして、、 代替え案として、Invokeで開いたダイアログ上でElementFromPointを行ってもハングしてエラーにならなければ良さそうですが (エラーになりそうな対象だったらElementFromPointを行わない)これも対象Windowが入力待ち状態である事の調べ方にたどり着けず、、 Invokeについて調べていたところ https://learn.microsoft.com/ja-jp/windows/win32/winauto/uiauto-implementinginvoke#required-members-for-iinvokeprovider もしかしたらUIA_Invoke_InvokedEventIdというものを投げれば・・・とも考えましたが投げる前に失敗してしまってます。 function UiaHostProviderFromHwnd(hwnd: HWND; provider: IRawElementProviderSimple): LRESULT; stdcall; external 'UIAutomationCore.dll' name 'UiaHostProviderFromHwnd'; function UiaRaiseAutomationEvent(provider: IRawElementProviderSimple; eventId: SYSINT): LRESULT; stdcall; external 'UIAutomationCore.dll' name 'UiaRaiseAutomationEvent'; var pWHndl: Pointer; EelemPv: IRawElementProviderSimple; //////////////////////////////////////////////////// //UIA_Invoke_InvokedEventIdを発生させてみようと試みましたがUiaHostProviderFromHwndがうまくいかず・・・ UIAElem.Get_CurrentNativeWindowHandle(pWHndl); if HWND(pWHndl) <> 0 then begin iResult := UiaHostProviderFromHwnd(HWND(pWHndl),EelemPv); <--iResultはオブジェクトが見つからないエラーが返り、EelemPvはnilのまま if iResult = S_OK then begin UiaRaiseAutomationEvent(EelemPv, UIA_Invoke_InvokedEventId); end; end; 藁をもすがる思いで色々と試しておりまして、そもそもアプローチが間違っている可能性が大きいのですが なんとかスッキリとした解決方法にたどり着きたく、何かしらヒントでもいただければ幸いです。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.