質問編集履歴

6

進捗晒し

2019/07/08 09:52

投稿

退会済みユーザー
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

方針を追加。文章にまとめると状況が理不尽すぎて冷静でいられない。

2019/07/08 09:52

投稿

退会済みユーザー
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

無造作になってた表記を丁寧に修正

2019/07/05 08:57

投稿

退会済みユーザー
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()`で起動させられず代替案と`Accessibility`を利用した方法を試そうとしています。
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
- |列1|列2|
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

タグ追加

2019/07/04 04:28

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
File without changes

2

コードの見た目

2019/07/03 04:22

投稿

退会済みユーザー
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
- var accessibleObj = AccessibleObjectExtractor.ExtractAccessibleObjectFromWindow(dataGridViewHandler);
61
+ = AccessibleObjectExtractor.ExtractAccessibleObjectFromWindow(dataGridViewHandler);
60
62
 
61
63
  string msg;
62
64
 

1

// テストコードの概要

2019/07/03 02:15

投稿

退会済みユーザー
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で表示させる