質問編集履歴
6
進捗晒し
test
CHANGED
File without changes
|
test
CHANGED
@@ -2,6 +2,20 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
+
### 進捗
|
6
|
+
|
7
|
+
IAccesibleで検索して来た方ごめんなさい。UIAutomationでやってます。C#なので・・・。
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
[現状のコードはこんな感じ](https://qiita.com/it_dokata_bottomline/items/741ce0cabded499d2581)というのをQiitaに投げつけときました。見やすいかなあと思って。
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
今のところ`CacheRequest`してから値を取ろうとすると上手くいっていないのでそこらへんにも取り組んでみます。
|
16
|
+
|
17
|
+
|
18
|
+
|
5
19
|
### 前提・実現したいこと
|
6
20
|
|
7
21
|
|
5
方針を追加。文章にまとめると状況が理不尽すぎて冷静でいられない。
test
CHANGED
File without changes
|
test
CHANGED
@@ -282,6 +282,18 @@
|
|
282
282
|
|
283
283
|
|
284
284
|
|
285
|
+
### 方針
|
286
|
+
|
287
|
+
|
288
|
+
|
289
|
+
- UIAutomationを利用
|
290
|
+
|
291
|
+
- AutomationIDプロパティ経由でのAutomationElement取得はしない
|
292
|
+
|
293
|
+
できればAutomationIDを取得したいが開発環境では肝心の対象プログラムが動かず、開発用に提供された本番機にはWindowsSDKを入れるなとの指示が降りている。(開発機では環境上の都合でソフト自体が起動しない。)
|
294
|
+
|
295
|
+
|
296
|
+
|
285
297
|
### 補足情報(FW/ツールのバージョンなど)
|
286
298
|
|
287
299
|
|
4
無造作になってた表記を丁寧に修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -6,13 +6,13 @@
|
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
-
他のアプリケーションのFormに実装された`DataGridView`の`DataGridViewCell`の値を`IAccesible`オブジェクト
|
9
|
+
他のアプリケーションのFormに実装された`DataGridView`の`DataGridViewCell`の値を`IAccesible`オブジェクトを利用して取得したい。
|
10
10
|
|
11
11
|
[以前の質問](https://teratail.com/questions/194548)で提案してもらった`Accessiblity`を利用したアプリケーションの外部操作を実現しようとしています。
|
12
12
|
|
13
13
|
|
14
14
|
|
15
|
-
`Reflection`なる仕組みが.NETで構築したアプリでは有効らしく実際自作の`DataGridView`にいい加減な値が入ってるだけのバカチョンアプリを外部操作できたのですが、対象アプリは起動時に何らかの引数を必要としているためにそもそも`Assembly.LoadFrom()`で起動させられず
|
15
|
+
`Reflection`なる仕組みが.NETで構築したアプリでは有効らしく実際自作の`DataGridView`にいい加減な値が入ってるだけのバカチョンアプリを外部操作できたのですが、対象アプリは起動時に何らかの引数を必要としているためにそもそも`Assembly.LoadFrom()`で起動させられず頓挫したので今度は`Accessibility`を利用した方法を試そうとしています。
|
16
16
|
|
17
17
|
- 対象アプリはC#で作られたマルチウィンドウアプリ
|
18
18
|
|
@@ -24,24 +24,16 @@
|
|
24
24
|
|
25
25
|
|
26
26
|
|
27
|
-
|
28
|
-
|
29
27
|
現状`IAccessible.accName`とか`IAccessible.accValue`とかの値を覗き見ることが出来てはいるのですが、以下の問題が発生しています。
|
30
28
|
|
31
29
|
|
32
30
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
31
|
### 発生している問題・エラーメッセージ
|
38
32
|
|
39
33
|
|
40
34
|
|
41
35
|
`DataGridViewCell`にあたるオブジェクトを抜き出せていない。
|
42
36
|
|
43
|
-
全ての`DataGridViewCell`の内容を取得できず1行目の内容のみ取得している。
|
44
|
-
|
45
37
|
|
46
38
|
|
47
39
|
### 該当のソースコード
|
@@ -240,7 +232,9 @@
|
|
240
232
|
|
241
233
|
### 対象のDataGridViewと現状の出力
|
242
234
|
|
235
|
+
対象のDataGridViewの状態
|
236
|
+
|
243
|
-
|
|
237
|
+
|||
|
244
238
|
|
245
239
|
|:--|:--|
|
246
240
|
|
@@ -250,6 +244,8 @@
|
|
250
244
|
|
251
245
|
|
252
246
|
|
247
|
+
出力
|
248
|
+
|
253
249
|
```
|
254
250
|
|
255
251
|
name = "DataGridView" , value = "" , type = "System.__ComObject"
|
3
タグ追加
test
CHANGED
File without changes
|
test
CHANGED
File without changes
|
2
コードの見た目
test
CHANGED
File without changes
|
test
CHANGED
@@ -56,7 +56,9 @@
|
|
56
56
|
|
57
57
|
{ // DataGirdViewのハンドラを渡して、IAccessibleのaccNameとかaccValueの内容を列挙したものをMessageBoxで表示させる
|
58
58
|
|
59
|
+
var accessibleObj
|
60
|
+
|
59
|
-
|
61
|
+
= AccessibleObjectExtractor.ExtractAccessibleObjectFromWindow(dataGridViewHandler);
|
60
62
|
|
61
63
|
string msg;
|
62
64
|
|
1
// テストコードの概要
test
CHANGED
File without changes
|
test
CHANGED
@@ -50,6 +50,8 @@
|
|
50
50
|
|
51
51
|
```cs
|
52
52
|
|
53
|
+
// テストコードの概要
|
54
|
+
|
53
55
|
private void ReadDataGirdView(IntPtr dataGridViewHandler)
|
54
56
|
|
55
57
|
{ // DataGirdViewのハンドラを渡して、IAccessibleのaccNameとかaccValueの内容を列挙したものをMessageBoxで表示させる
|