質問編集履歴

4

コードの修正

2019/10/16 00:23

投稿

nemui_00
nemui_00

スコア5

test CHANGED
File without changes
test CHANGED
@@ -44,33 +44,29 @@
44
44
 
45
45
  function inputData(arg1) {
46
46
 
47
- if (arg1 != null) {
47
+ var obj = new ActiveXObject("WScript.Shell");
48
48
 
49
- var winname = "データ入力画面";
49
+ obj.AppActivate("データ入力画面");
50
50
 
51
- var result = ActivateAndSendKeys(winname, arg1, 500);
51
+ sleep(1000);
52
52
 
53
- if (result) {
53
+ //キー・コードを送る。
54
54
 
55
- result = ActivateAndSendKeys(winname, "{ENTER}", 2000);
55
+ obj.SendKeys(arg1);
56
56
 
57
- }
57
+ sleep(2000);
58
58
 
59
- if (result) {
59
+ obj.SendKeys("{ENTER}");
60
60
 
61
- result = ActivateAndSendKeys(winname, "{F5}", 900);
61
+ sleep(900);
62
62
 
63
- }
63
+ obj.SendKeys("{F5}");
64
64
 
65
- if (result) {
65
+ sleep(2000);
66
66
 
67
- result = ActivateAndSendKeys(winname, "{ENTER}", 900);
67
+ obj.SendKeys("{ENTER}");
68
68
 
69
- }
70
-
71
- return result;
69
+ obj = null;
72
-
73
- }
74
70
 
75
71
  }
76
72
 
@@ -99,48 +95,6 @@
99
95
  obj.SendKeys("{ENTER}");
100
96
 
101
97
  obj = null;
102
-
103
- }
104
-
105
- function ActivateAndSendKeys(strTitle, strKey, intWait) {
106
-
107
- var obj = new ActiveXObject("WScript.Shell");
108
-
109
- var result = false;
110
-
111
- //3回試行する。
112
-
113
- for (var i = 1; i < 3; i++) {
114
-
115
- if(obj.AppActivate(strTitle)){
116
-
117
- //intWaitミリ秒待つ。
118
-
119
- sleep(intWait);
120
-
121
- //キー・コードを送る。
122
-
123
- obj.SendKeys(strKey);
124
-
125
- sleep(500);
126
-
127
- //成功を意味するTrueを返し、ループを抜ける。
128
-
129
- result = true;
130
-
131
- break;
132
-
133
- } else {
134
-
135
- sleep(1000);
136
-
137
- }
138
-
139
- }
140
-
141
- obj = null;
142
-
143
- return result;
144
98
 
145
99
  }
146
100
 

3

補足情報追加

2019/10/16 00:23

投稿

nemui_00
nemui_00

スコア5

test CHANGED
File without changes
test CHANGED
@@ -20,9 +20,9 @@
20
20
 
21
21
  ### 該当のソースコード
22
22
 
23
- 以下のhtmlファイルをIEで開き、データ入力画面というファイル名のテキストファイルをメモ帳で開いた状態で、
23
+ 以下のhtmlファイルをIEで開き、データ入力画面というファイル名のテキストファイルをメモ帳で開いた状態で、ブラウザのbuttonを押すと、事象を確認できます。
24
24
 
25
- ブラウザのボタンを押すと、事象を確認きます。
25
+ また、button2はRunで新規に開いたやり方で。これだうまくいくようです。
26
26
 
27
27
 
28
28
 
@@ -48,29 +48,57 @@
48
48
 
49
49
  var winname = "データ入力画面";
50
50
 
51
- var result = ActivateAndSendKeys(winname, arg1, 3000);
51
+ var result = ActivateAndSendKeys(winname, arg1, 500);
52
52
 
53
53
  if (result) {
54
54
 
55
- result = ActivateAndSendKeys(winname, "{ENTER}", 1000);
55
+ result = ActivateAndSendKeys(winname, "{ENTER}", 2000);
56
56
 
57
57
  }
58
58
 
59
59
  if (result) {
60
60
 
61
- result = ActivateAndSendKeys(winname, "{F5}", 1000);
61
+ result = ActivateAndSendKeys(winname, "{F5}", 900);
62
62
 
63
63
  }
64
64
 
65
65
  if (result) {
66
66
 
67
- result = ActivateAndSendKeys(winname, "{ENTER}", 1000);
67
+ result = ActivateAndSendKeys(winname, "{ENTER}", 900);
68
68
 
69
69
  }
70
70
 
71
71
  return result;
72
72
 
73
73
  }
74
+
75
+ }
76
+
77
+ function inputData2(arg1) {
78
+
79
+ var obj = new ActiveXObject("WScript.Shell");
80
+
81
+ obj.Run("notepad");
82
+
83
+ sleep(1000);
84
+
85
+ //キー・コードを送る。
86
+
87
+ obj.SendKeys(arg1);
88
+
89
+ sleep(2000);
90
+
91
+ obj.SendKeys("{ENTER}");
92
+
93
+ sleep(900);
94
+
95
+ obj.SendKeys("{F5}");
96
+
97
+ sleep(2000);
98
+
99
+ obj.SendKeys("{ENTER}");
100
+
101
+ obj = null;
74
102
 
75
103
  }
76
104
 
@@ -94,7 +122,7 @@
94
122
 
95
123
  obj.SendKeys(strKey);
96
124
 
97
- sleep(100);
125
+ sleep(500);
98
126
 
99
127
  //成功を意味するTrueを返し、ループを抜ける。
100
128
 
@@ -136,7 +164,9 @@
136
164
 
137
165
  <div>
138
166
 
139
- <button type="submit" onclick="inputData('test');">button</button>
167
+ <button type="submit" onclick="inputData('12345');">button</button>
168
+
169
+ <button type="submit" onclick="inputData2('12345');">button2</button>
140
170
 
141
171
  </div>
142
172
 
@@ -146,8 +176,6 @@
146
176
 
147
177
  </html>
148
178
 
149
-
150
-
151
179
  ```
152
180
 
153
181
 
@@ -156,7 +184,7 @@
156
184
 
157
185
 
158
186
 
159
- AppActivateでなくRunで新規に画面を起動した場合、うまくいくようです。
187
+ AppActivateでなくRunで新規に画面を起動した場合(button2のやり方)、うまくいくようです。
160
188
 
161
189
 
162
190
 

2

詳細に記載

2019/10/16 00:17

投稿

nemui_00
nemui_00

スコア5

test CHANGED
File without changes
test CHANGED
@@ -20,93 +20,133 @@
20
20
 
21
21
  ### 該当のソースコード
22
22
 
23
+ 以下のhtmlファイルをIEで開き、データ入力画面というファイル名のテキストファイルをメモ帳で開いた状態で、
24
+
25
+ ブラウザのボタンを押すと、事象を確認できます。
23
26
 
24
27
 
25
- ```javascript
26
28
 
27
- function inputData(arg1) {
29
+ ```html
28
30
 
29
- if (arg1 != null) {
31
+ <!DOCTYPE html>
30
32
 
31
- var winname = "データ入力画面";
32
33
 
33
- var result = ActivateAndSendKeys(winname, arg1, 5000);
34
34
 
35
- if (result) {
35
+ <html xmlns="http://www.w3.org/1999/xhtml">
36
36
 
37
- result = ActivateAndSendKeys(winname, "{ENTER}", 1000);
37
+ <head>
38
38
 
39
- }
39
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
40
40
 
41
- if (result) {
41
+ <title></title>
42
42
 
43
- result = ActivateAndSendKeys(winname, "{F5}", 1000);
43
+ <script type="text/javascript">
44
44
 
45
- }
45
+ function inputData(arg1) {
46
46
 
47
- if (result) {
47
+ if (arg1 != null) {
48
48
 
49
- result = ActivateAndSendKeys(winname, "{ENTER}", 1000);
49
+ var winname = "データ入力画面";
50
50
 
51
- }
51
+ var result = ActivateAndSendKeys(winname, arg1, 3000);
52
52
 
53
- return result;
53
+ if (result) {
54
54
 
55
- }
55
+ result = ActivateAndSendKeys(winname, "{ENTER}", 1000);
56
56
 
57
- }
57
+ }
58
58
 
59
- function ActivateAndSendKeys(strTitle, strKey, intWait) {
59
+ if (result) {
60
60
 
61
- var obj = new ActiveXObject("WScript.Shell");
61
+ result = ActivateAndSendKeys(winname, "{F5}", 1000);
62
62
 
63
- var result = false;
63
+ }
64
64
 
65
- //3回試行する。
65
+ if (result) {
66
66
 
67
- for (var i = 1; i < 3; i++) {
67
+ result = ActivateAndSendKeys(winname, "{ENTER}", 1000);
68
68
 
69
- if(obj.AppActivate(strTitle)){
69
+ }
70
70
 
71
- //intWaitミリ秒待つ。
71
+ return result;
72
72
 
73
- sleep(intWait);
73
+ }
74
74
 
75
- //キー・コードを送る。
75
+ }
76
76
 
77
- obj.SendKeys(strKey);
77
+ function ActivateAndSendKeys(strTitle, strKey, intWait) {
78
78
 
79
- sleep(100);
79
+ var obj = new ActiveXObject("WScript.Shell");
80
80
 
81
- //成功を意味するTrueを返し、ループを抜ける。
81
+ var result = false;
82
82
 
83
- result = true;
83
+ //3回試行する。
84
84
 
85
- break;
85
+ for (var i = 1; i < 3; i++) {
86
86
 
87
- } else {
87
+ if(obj.AppActivate(strTitle)){
88
88
 
89
- sleep(1000);
89
+ //intWaitミリ秒待つ。
90
90
 
91
- }
91
+ sleep(intWait);
92
92
 
93
- }
93
+ //キー・コードを送る。
94
94
 
95
- obj = null;
95
+ obj.SendKeys(strKey);
96
96
 
97
- return result;
97
+ sleep(100);
98
98
 
99
- }
99
+ //成功を意味するTrueを返し、ループを抜ける。
100
100
 
101
- function sleep(waitMsec) {
101
+ result = true;
102
102
 
103
- var startMsec = new Date();
103
+ break;
104
104
 
105
- // 指定ミリ秒間だけループさせる
105
+ } else {
106
106
 
107
- while (new Date() - startMsec < waitMsec);
107
+ sleep(1000);
108
108
 
109
- }
109
+ }
110
+
111
+ }
112
+
113
+ obj = null;
114
+
115
+ return result;
116
+
117
+ }
118
+
119
+ function sleep(waitMsec) {
120
+
121
+ var startMsec = new Date();
122
+
123
+ // 指定ミリ秒間だけループさせる
124
+
125
+ while (new Date() - startMsec < waitMsec);
126
+
127
+ }
128
+
129
+ </script>
130
+
131
+ </head>
132
+
133
+ <body>
134
+
135
+ <form id="form1">
136
+
137
+ <div>
138
+
139
+ <button type="submit" onclick="inputData('test');">button</button>
140
+
141
+ </div>
142
+
143
+ </form>
144
+
145
+ </body>
146
+
147
+ </html>
148
+
149
+
110
150
 
111
151
  ```
112
152
 

1

文法の修正

2019/10/15 23:33

投稿

nemui_00
nemui_00

スコア5

test CHANGED
@@ -1 +1 @@
1
- javascriptでActiveXObjectを使用し、SendKeysとsleepを交互に行う処理を行いたい
1
+ javascriptでActiveXObjectを使用し、SendKeysとsleepを交互に行いたい
test CHANGED
File without changes