oleacc.dll を使用して、実行中の他の Windows アプリケーション テキストを取得するアプリケーションがあります。私のクライアントでは、oleacc.dll へのアクセスが拒否または失敗し、アプリケーションが実行中のアプリケーション テキストを取得できないというケースが見つかりました。クライアント エンドで oleacc.dll へのアクセスが拒否される理由が正確にはわかりません。
OLEACC.DLL を調査した結果、oleacc.dll エラーの原因として次のことが判明しました。
- Windows アップデートによりこの dll が削除される可能性があります。この問題の原因となっている特定のアップデートを正確に見つけることができませんでした。
- ウイルス対策ソフトウェア、レジストリ クリーナーまたはブースターは、この dll を破損または削除する可能性があります。AVG、Zone Alarm Internet Security Suite のインストール
- それを破損または削除したウイルス、トロイの木馬、およびマルウェア感染。トロイの木馬: Win 32/Agent E マルウェア: Win32/Cnzz
- 無効または破損した oleacc.dll レジストリ エントリ
- oleacc.dll ファイルが破損したハード ドライブの不良など、Microsoft のハードウェア障害
- 別のプログラムが必要なバージョンの oleacc.dll を上書きしました
- 別のプログラムが、故意または誤って oleacc.dll ファイルを削除しました
- 別のプログラムが oleacc.dll ファイルをアンインストールしました。
私のアプリケーションの主な欠点は、oleacc.dll へのアクセスに問題がないかどうかを認識できないことです。そのため、アプリケーションは実行されますが、取得できず、ユーザーはテキストを取得しているかどうかを知ることができませんでした。
そこで、oleacc.dll へのアクセスが失敗したかどうかを確認する方法があるかどうかを知りたいと思いました。検出されると、アプリケーションはユーザーに警告を発し、アプリケーションから (regsvr32 コマンドを使用して) oleacc.dll を自動的に登録することができます。
コード:
IAccessible acc = null;
int retval = AccessibleObjectFromWindow( hWnd, 0, IID_IAccessible.ToByteArray(), ref acc );
ありがとうプラカシュ