teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

内容の補足

2019/10/30 02:53

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,9 +1,11 @@
1
- IEが将来使われなくなることから、現在、IEベースで動かしているjsファイルを
1
+ IEが将来使われなくなることから、現在、IEベース(ActiveX)で動かしているjsファイルを
2
2
  修正しようと思い質問いたしました。
3
3
 
4
- 内容とましては、
4
+ ■ 実現たいこと
5
+  JSファイルのみで、以下のことを行いたいです。
5
- 指定URLをchromeで開き、
6
+  1.指定URL(OAuth認証URL)jsファイルの引数に持たせてchromeで開
6
- その後chromeで開かれているURLを全て取得し、chromeを閉じたいです。
7
+  2.chromeで開かれているURL(開かれているタブの数だけ)を全て取得
8
+  3.chromeを閉じる
7
9
 
8
10
  色々、Googleで
9
11
  「javascriptでchromeを動かす」「javascript chrome 動かす」
@@ -11,9 +13,75 @@
11
13
  などで調べてみましたが見つからなかった為、皆さんの知恵をお貸しください。
12
14
  また、出来れば極力、プラグインなどは使わずに作りたいです。
13
15
 
14
- 追記
16
+ 環境
15
- 環境teratailタグと同様
17
+ 検証用(ローカル)windows10 64bit
18
+ 本番用(クラウドサーバ):windows server 2016
16
19
 
17
- 場所:「デスクトップ」/「プロジェクトフォルダ」/「リソースフォルダ」直下
20
+ jsファイル実行場所:「動かしている4Dサーバフォルダ」/「リソースフォルダ」/GetURL.js
18
21
  実行詳細:4D(フランス社製)から「LAUNCH EXTERNAL PROCESS」コマンドを使い、
19
-      cscript //nologo+実行ファイル(絶対パス)+OAuth認証URLを引数に持たせて実行
22
+      cscript //nologo+実行ファイル(絶対パス)+OAuth認証URL(jsファイルの引数)コマンド引数に持たせて実行
23
+
24
+ IEベース(ActiveX)で実行していた際のjsファイルを記載します。
25
+ ```js
26
+ test();
27
+ function test() {
28
+ var READYSTATE_UNINITIALIZED=0;
29
+ var READYSTATE_LOADING=1;
30
+ var READYSTATE_LOADED=2;
31
+ var READYSTATE_INTERACTIVE=3;
32
+ var READYSTATE_COMPLETE=4;
33
+ var ieAPP = new ActiveXObject("InternetExplorer.Application");
34
+ ieAPP.visible = true;
35
+ var url = WScript.Arguments(0);
36
+ ieAPP.Navigate(" https://google.com");var startMsec = new Date();while (new Date() - startMsec < 5000);ieAPP.Navigate(url);
37
+ while (ieAPP.Busy || ieAPP.ReadyState!=4){WScript.Sleep(500)};
38
+ var sh = WScript.CreateObject("Shell.Application");
39
+ var array = [];
40
+ var pattern = 'ドメイン/';
41
+ for (var i = 0; i < sh.Windows().Count; i++) {
42
+ var a = "";
43
+ try {a = sh.Windows(i).document.URL;}
44
+ catch(e) {}
45
+ if(a) {array.push(a);}
46
+ }
47
+ var fileName = "";
48
+ var filesh = new ActiveXObject("WScript.Shell");
49
+ var desktopPath = filesh.SpecialFolders("Desktop");
50
+ var absoluteFilePath = "";
51
+ var create = true;
52
+ var iomode = 1;
53
+ var format = -2;
54
+ var fs = new ActiveXObject("Scripting.FileSystemObject");
55
+ for (var i = 0; i < array.length; i++) {
56
+ if(array[i].indexOf(pattern) > -1){
57
+ var start = 0;
58
+ var end = 0;
59
+ var code = "";
60
+ start = array[i].indexOf("code=") + 5;
61
+ end = array[i].indexOf("&",start) - 1;
62
+ if (end > 0) {
63
+ end = end - start + 1;
64
+ code = array[i].substr(start,end);
65
+ }else {
66
+ code = "notfind"
67
+ }
68
+ fileName = "code_" + code;
69
+ absoluteFilePath = desktopPath + "\" + fileName;
70
+ var file = fs.OpenTextFile(absoluteFilePath,iomode,create,format);
71
+ }else {
72
+ fileName = "Error"
73
+ absoluteFilePath = desktopPath + "\" + fileName;
74
+ var file = fs.OpenTextFile(absoluteFilePath,iomode,create,format);
75
+ }
76
+ file.Close();
77
+ }
78
+ if (array.length==0){
79
+ fileName="ReferenceError";
80
+ absoluteFilePath = desktopPath + "\" + fileName;
81
+ var file=fs.OpenTextFile(absoluteFilePath,iomode,create,format);
82
+ file.Close();
83
+ }
84
+ ieAPP.Quit();
85
+ }
86
+
87
+ ```

1

内容の補足

2019/10/30 02:53

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -9,4 +9,11 @@
9
9
  「javascriptでchromeを動かす」「javascript chrome 動かす」
10
10
  「javascript chrome 操作」「javascript chrome 開いてからURLを取得」
11
11
  などで調べてみましたが見つからなかった為、皆さんの知恵をお貸しください。
12
- また、出来れば極力、プラグインなどは使わずに作りたいです。
12
+ また、出来れば極力、プラグインなどは使わずに作りたいです。
13
+
14
+ 【追記】
15
+ 環境:teratailタグと同様
16
+
17
+ 場所:「デスクトップ」/「プロジェクトフォルダ」/「リソースフォルダ」直下
18
+ 実行詳細:4D(フランス社製)から「LAUNCH EXTERNAL PROCESS」コマンドを使い、
19
+      cscript //nologo+実行ファイル(絶対パス)+OAuth認証URLを引数に持たせて実行