質問編集履歴

3

タグ修正

2017/12/17 13:10

投稿

MagiSystem
MagiSystem

スコア10

test CHANGED
File without changes
test CHANGED
File without changes

2

誤記修正

2017/12/17 13:10

投稿

MagiSystem
MagiSystem

スコア10

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  ・ターミナル機能を持つアプリ(別アプリ)は外部で作成されたソフトのためソースコード等はありません。
8
8
 
9
- ・別アプリはターミナル機能で、端末状態の設定コマンド、取得コマンドが利用可能で、C#のアプリ仕様として、C#のアプリが端末に対して直接ではなく、別アプリのターミナル機能を経由して、設定コマンド発行、取得コマンド発行による情報取得を行うがあります。
9
+ ・別アプリはターミナル機能で、端末状態の設定コマンド、取得コマンドが利用可能で、C#のアプリ仕様として、C#のアプリが端末に対して直接ではなく、別アプリのターミナル機能を経由して、設定コマンド発行、取得コマンド発行による情報取得を行う必要があります。
10
10
 
11
11
 
12
12
 

1

記載間違いの修正

2017/12/17 13:07

投稿

MagiSystem
MagiSystem

スコア10

test CHANGED
File without changes
test CHANGED
@@ -2,9 +2,15 @@
2
2
 
3
3
 
4
4
 
5
- C#で別アプリ(スコードがない)のRICHTEXTBOXの
5
+ ・ある端末に接続されたターミナル機能を持つアプリ(ミナル部はRICHTEXTBOXコントロール)に対して、設定コマンド、取得コマンドを発行するC#アプリを作っています。
6
6
 
7
- 最終行(指定行)のみを取得する方法はありますでしょうか?
7
+ ・ターミナル機能を持つアプリ(別アプリ)は外部で作成されたソフトためソースコード等はありません。
8
+
9
+ ・別アプリはターミナル機能で、端末状態の設定コマンド、取得コマンドが利用可能で、C#のアプリ仕様として、C#のアプリが端末に対して直接ではなく、別アプリのターミナル機能を経由して、設定コマンド発行、取得コマンド発行による情報取得を行うがあります。
10
+
11
+
12
+
13
+ ・そのため、C#のアプリから別アプリのRICHTEXTBOXに対して、設定コマンドの文字列の送信、取得コマンドの文字列の送信と、取得コマンドによってターミナル部に出力された文字列結果の読込みが必要ですが、文字列の送信はできており、文字列結果の読込みは最終行もしくは指定行の読込みを行いたいです。
8
14
 
9
15
 
10
16
 
@@ -12,12 +18,26 @@
12
18
 
13
19
 
14
20
 
15
- 現在、C#から別アプリのRICHTEXTBOXのウィンドウハンドルを取得して、
21
+ 現在、C#から別アプリのRICHTEXTBOXのウィンドウハンドルを取得して、WM_GETTEXTで指定した文字数分を取得することは可能なのですが、別アプリのRICHTEXTBOX側の行数が時間と共に増えていくため、
16
22
 
17
- GetWindowTextで全ての行を取得すること可能すが、
23
+ 指定するサイズも読めず、C#から別アプリのRICHTEXTBOX最終(指定行)のみを取得するなど、何か方法はなしょうか?
18
24
 
19
- 別アプリのRICHTEXTBOX側の行数が時間と共に増えていくため、
20
25
 
21
- C#から取得する度に全ての行を取得するのは処理コストが増えていくので、
22
26
 
27
+ ###該当のソースコード
28
+
29
+ 別アプリのRICHTEXTBOXのウィンドウハンドル(hWnd)を取得して、WM_GETTEXTで指定した文字数分を取得することは可能だが、ターミナル部なので何行なのか、何文字なのか分からない。
30
+
23
- 最終行(指定行)だけ取得する方法ないか知りたいです。
31
+ 最終行指定行などで部分的に読み出しできなどよい方法ないでしょう
32
+
33
+
34
+
35
+ ```C#
36
+
37
+ uint WM_GETTEXT = 0x000D;
38
+
39
+ StringBuilder sb = new StringBuilder(256);
40
+
41
+ SendMessage((IntPtr)hWnd, (UInt32)WM_GETTEXT, (int)255, sb);
42
+
43
+ ```