-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathppxqjs.txt
1572 lines (1090 loc) · 50.7 KB
/
ppxqjs.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
------------------------------------------------------------------------------
Paper Plane xUI QuickJS Script Module R1 Copyright (c)2024 TORO
------------------------------------------------------------------------------
QuickJS ( https://bellard.org/quickjs/ ) を利用して PPx 上で
Javascript を実行するPPx Module です。
WSH の JScript とある程度の互換性を備え、WSH Script Module と
スクリプトを共有しやすくなっています。
WSH 版との性能の比較としては、実行速度が jscript.dll と
jscript9.dll との中間程度であって、最初の初期化に掛かる時間が
多少遅い、となります。
●現在の仕様
・QuickJS (2024-01-13) を使用しています。
・32bit版では Date オブジェクトを使用すると異常終了します。
●Javascript の挙動について
・スクリプトファイルを実行した時(*script 等)の import の基準バスは、
そのスクリプトファイルがあるパスになります。
スクリプトを直接実行したとき(*js 等)は PPx のパス(%0)になります。
・*scriptm で実行するときのみ、静的 import が使用できます。
また、*scriptm では、import の有無にかかわらずエラーや例外が
あっても Script Module 側に通知されないため、エラー表示が
できません。サンプル(sample_import.js)のように自前で
try - catch によるエラー処理が必要です。
●WSH版 Script Module(PPXSCR.DLL / PPXSCR64.DLL)との違い
・WSH版の JScript は ECMAScript 2015/ES6 以前でしたが、QuickJS 版は
ECMAScript 2023 になります。また、V8 版は ECMAScript 2021 以降です。
・大文字小文字を区別します (例: PPx.entry でエラー)。
ただし、一部の名前(Index, Item 等)は頭小文字版も用意してあります。
・数値と文字列が厳密に区別されます (例: PPx.Clipboard=123 でエラー)。
数値は文字列にしたり、toString() を適宜追加してください。
(例: PPx.Clipboard="123";
var num = 123; PPx.Clipboard = num.toString(); )
・PPx.Entry(n), PPx.Pane(m).Tab(n) 等の Item() 省略記載はできません。
PPx.Entry.Item(n), PPx.Pane.Item(m).Tab.Item(n) にしてください。
・PPx.Arguments の引数記載 "PPx.Arguments(n)" ができなくなりました。
PPx.Argument(n) に変更が必要です。
・new Enumerator() の代わりに for ( of ) を使用してください。
WSH版と共通化したい場合は、PPx.Enumerator() を使用するか、
PPxの列挙可能オブジェクトに用意されている atEnd / moveNext を
使用してください。
・日時を扱う以下のプロパティが返す型が異なります。WSH版と共通の
ソースにする場合は、Date オブジェクトを使用してください。
PPx.Entry.DateCreated, PPx.Entry.DateLastAccessed,
PPx.Entry.DateLastModified, Scripting.FileSystemObject の各種日時
使用例) var value = new Date(PPx.Entry.DateCreated);
・PPx.GetComboItemCount()はプロパティ記載ができず、関数のみに
なりました。
・PPx.CreateObjectは、現在配列を扱えません。
PPx.emuole = 1 を指定していると、Scripting.FileSystemObject と
ADODB.stream が OLE オブジェクトを使わずに組み込みオブジェクトを
使用するようになります。組み込みオブジェクトの詳細は以下の通りです。
組み込み Scripting.FileSystemObject の実装内容
BuildPath, CreateFolder, DeleteFile, FileExists, FolderExists,
GetTempName
CopyFile ( %Obn cmd.exe /c copy /Y %("src" "dest"%) を実行 )
CopyFolder ( %Obn xcopy.exe /Y %("src" "dest"%) を実行 )
DeleteFolder ( %Obn cmd.exe /c rd /S /Q %("src"%) を実行 )
MoveFile ( %Obn cmd.exe /c move /Y %("src" "dest"%) を実行 )
GetAbsolutePathName ( %*name(DC,%(src%)) を実行 )
GetBaseName ( %*name(C,%(src%)) を実行 )
GetDriveName ( %*name(H,%(src%)) を実行 )
GetExtensionName ( %*name(T,%(src%)) を実行 )
GetFile, GetFolder
組み込み ADODB.stream の実装内容
CharSet, Close, EOS, LineSeparator, LoadFromFile, Open,
Position, Read, ReadText, SaveToFile, SetEOS, Size, Write,
WriteText
・テキストファイルのみ対応しています(Type=2)。
・文字コードは、utf-8, unicode/utf-16le と現在のコードページ
のみ対応しています。_autodetect はこれらのコードベージの
判別のみ行います。
・内部テキスト形式は utf-8 です。Position, Size は utf-8 の
文字数と異なります。
・ファイルサイズは最大 2Gbyte です。またファイルの全内容を
常時メモリに展開した状態になります。
・ファイルの読み書きは、LoadFromFile / SaveToFile を実行
したときに行います。
・改行コードは、読み込んだときの改行コードをそのまま
保持します。LineSeparator は、WriteText( ,1) としたときに
文字列の最後に付与する改行コードのみ反映します。
●スクリプトの実行方法
ppxqjs32.dll / ppxqjs64.dll を PPx があるディレクトリ内に用意します。
script module (WSH) と同じように使いたい場合は、コマンド・関数名として
script / js、script module (WSH) と区別したい場合は scriptq / jsq を
使ってください。
・スクリプトファイル実行(文字コードが UTF-8 のみ)
*scriptq スクリプトファイル名[,パラメータ[,パラメータ]...]
*scriptm スクリプトファイル名[,パラメータ[,パラメータ]...]
*script スクリプトファイル名[,パラメータ[,パラメータ]...]
%*scriptq(スクリプトファイル名[,パラメータ[,パラメータ]...])
%*scriptm(スクリプトファイル名[,パラメータ[,パラメータ]...])
%*script(スクリプトファイル名[,パラメータ[,パラメータ]...])
スクリプトファイル名のカレントディレクトリは、実行時のカレント
ディレクトリです。PPx のパスを基準にしたいときは、
「*script "%0\スクリプトファイル名"」等とします。
script / scriptq は同じ機能です。スクリプトを WSH, V8 版と共通化 /
使い分けするかどうかで、どちらかの名前にするかを決めてください。
scriptm では、スクリプトをモジュールとして扱うため、import が
使用できます。ただし、エラーや例外があっても Script Module 側に
通知されないため、エラー表示ができません。
サンプル(sample_import.js)のように自前で try - catch による
エラー処理が必要です。
・インラインスクリプト実行
*jsq "スクリプト"[,パラメータ[,パラメータ]...]
*js "スクリプト"[,パラメータ[,パラメータ]...]
%*jsq("スクリプト"[,パラメータ[,パラメータ]...])
%*js("スクリプト"[,パラメータ[,パラメータ]...])
js / jsq は同じ機能です。スクリプトを WSH, V8 版と共通化 / 使い分け
するかどうかで、どちらかの名前にするかを決めてください。
●コマンド型スクリプトの例
例えば、PPcのハードリンク作成 \[F12] を使って、一定の条件で
加工した名前をダイアログに予め表示するコマンドを [@] に
登録する場合は次のようになります。
PPx のカスタマイズ:
KC_main = {
'@' , %k"\F12 &'@'" ; スクリプトを登録した &[@] を押す
}
K_edit = {
&'@' , *script %0editname.js
}
※ 上記例はカレントディレクトリ上の editname.js を実行します。
editname.js: ※ PPxの実行ファイルがあるディレクトリに保存
//!*script
var filename = PPx.Extract("%R"); // ここで "%{%|%Y%|.%t%}" 等として編集も可
(ここで名前を加工)
PPx.Execute("*replace \"" + filename + "\"");
また、次のようにカスタマイズに埋め込むことができます。
K_edit = {
; " " で括った範囲がスクリプトです。更に %( %) で括ることで、
; % → %% と " → "" のエスケープ記載と、複数行用の設定が不要になります。
; 複数行にわたるときは行頭にタブや空白が必要です。
&'@' , *js "%(
var filename = PPx.Extract("%R");
(ここで名前を加工)
PPx.Execute("*replace \"" + filename + "\""); %)"
}
●関数型スクリプトの例
上記コマンド型スクリプトと同じ内容を関数型スクリプトでおこなう
場合は次のようになります。
PPx のカスタマイズ:
KC_main = {
'@' , %k"\F12 &'@'" ; スクリプトを登録した &[@] を押す
}
K_edit = {
&'@' , *replace "%*script(%0editname2.vbs)"
}
editname2.js: ※ PPxの実行ファイルがあるディレクトリに保存
'!*script
var filename = PPx.Extract("%R");
filename = PPx.Extract("%R"); // ここで "%{%|%Y%|.%t%}" 等として編集も可
(ここで名前を加工)
PPx.result = filename;
●スクリプトの実行を簡単にするための設定(通常は設定済みです)
・各スクリプトの最初の行に「//!*script」を記載すると、PPx
Script と認識するため、後述のカスタマイズで判別実行することが
できます。
※記載が無くても判別実行ができなくなるだけで実行可能です。
※このカスタマイズが無くても *script コマンドで実行することが
できます。
・以下の設定をすると、PPc 等の Enter のみで PPx Script と判別して
スクリプトを実行することができます。
E_cr = {
:XJS ,%"Script" *script %{%R%|%}
}
●スクリプトの実装内容(オブジェクト PPx の一覧)
PPx QuickJS Script Module はオブジェクト「PPx」を用意しています。
・WSH 互換系
args = PPx.Arguments (.Count,.Item(n)等) オブジェクト
string = PPx.Argument(n) 関数
object = PPx.CreateObject("objectname"[,"Prefix"]) 関数
PPx.ConnectObject(object, "Prefix") 関数
PPx.DisconnectObject(object) 関数
object = PPx.Enumerator(collection) 関数
PPx.Echo("strings") 関数
PPx.Quit([result]) 関数
PPx.Sleep(time) 関数
name = PPx.ScriptName プロパティ(R)
・args = PPx.Arguments オブジェクト
スクリプトの引数に関するオブジェクトです。
例) PPx.Echo("数:\t" + PPx.Arguments.Count + "\n引数1:\t" + PPx.Arguments.Item(1));
.Item([n]) n番目(0からカウント)の引数を示す関数です。
-1 を指定するとパース前の引数が取得できます。
.Count 引数の数を示す関数です。
.length 引数の数を示す読み込み専用プロパティです。
.atEnd(), .moveNext(), .Reset(), .value WSH版でも使える列挙機能です。
・反復可能オブジェクトです。
Array.from や for ( ... of PPx.Arguments ) が使えます。
例1) PPx.Echo(Array.from(PPx.Arguments).join(','));
例2) for ( var v of PPx.Arguments ){ PPx.Echo(v); }
・Itemを省略した記載方法(例) PPx.Arguments(n) )はWSH版と違い、
指定できません。PPx.Argument(n) に変えてください。
例) string = PPx.Argument(1);
・args = PPx.Argument(n) 関数
n番目(0からカウント)のスクリプトの引数を取得する関数です。
-1 を指定するとパース前の引数が取得できます。
・object = PPx.CreateObject("ADODB.stream"[,"Prefix"]) 関数
Script Module 組み込みオブジェクトや、OS に登録された ActiveX
オブジェクトを作成します。
Prefix を記載したときは、イベント発生時に Prefix + イベント名 の
メソッド(例) PrefixOnVisible(e) )を実行します。
得られたオブジェクトは、オブジェクト自身のメソッド・プロパティの他、
_free_() と _() が用意されています。
object._free_() このオブジェクトを解放する
object._("info") メソッド・プロパティの一覧を表示する
object._("info","name") メソッド・プロパティ「name」の情報を表示する
object._("event") オブジェクトのイベントの一覧を表示する
object._("event","name") イベントの「name」の情報を表示する
object._("functon","name"[,param...]) メソッド「name」を実行する
object._("get","name") プロパティ「name」の get を行う
object._("set","name",param) プロパティ「name」の set(put) を行う
object._("trace"[,false]) イベントの prefix 指定時、イベントが
発生したら全種類を「[prefixイベント名]」の形式で表示する。
false で表示を終了
これらメソッドは、オブジェクトから得られたオブジェクトにも用意
されています。オブジェクト以外には用意されていません。
例) var fso = PPx.CreateObject('Scripting.FileSystemObject');
fso._("info"); // fso のメソッド等一覧
// OpenTextFile のメソッド等一覧
fso.OpenTextFile('filename')._("info");
fso.GetTempName()._("info"); // string なのでエラー
PPx.emuole = 1 を指定しているときは、WSH の同名オブジェクト
(Scripting.FileSystemObject と ADODB.stream のみ)のサブセットを
使用できます。
・PPx.ConnectObject(object, "Prefix") 関数
PPx.CreateObject で作成したオブジェクトのイベントを実行可能にします
・PPx.DisconnectObject(object) 関数
PPx.CreateObject で作成したオブジェクトのイベント実行を終了します
・object = PPx.Enumerator(collection) 関数
JScript の new Enumerator がないと列挙できない collection(※1) を
列挙するためのオブジェクトを作成します。WSH版とのソース互換用です。
通常は for ( of ) を使います。
使い方は object = new Enumerator(collection) と同じであり、
関数として .atEnd(), .moveNext(), .moveFirst(), .item() が
用意されています。
例) for (var v = PPx.Enumerator(collection); !v.atEnd(); v.moveNext()){
PPx.report(v.item().member + '\r\n');
}
※1 IEnumVARIANT のみ用意されており、IDispatch がないオブジェクト
・PPx.Echo("strings") 関数
指定した内容をポップアップウィンドウで表示します。
尚、出力先、出力方法が違う、PPx.linemessage, PPx.report, PPx.log が
あります。
入力待ちをしたくない場合は、PPx.linemessage 等を使用してください。
・PPx.Sleep(time) 関数
指定ミリ秒の間、待機します。尚、1 ms 等、極端に短い時間を指定し
ても実際に待つのは 10 ms 等となるので注意。また 0ms を指定すると、
時間待ちはしませんが、別スレッド・別プロセスに即座にタスク
スイッチします(*wait time 相当)。
メッセージループを回す場合は、*wait time,1/2 を PPx.Execute で
実行してください。
・PPx.Quit([result]) 関数
スクリプトの実行を中止します。スクリプトの実行を中止してもPPxは
終了しません。 PPx を終了する場合は %K"@&F4" 等を実行してください。
result は 1 (正常終了) か -1 (実行中止) を通常指定します。
指定が無いときは 1 に相当します。
「PPx.Quit(-1)」と result に -1 を指定すると、*script コマンド以降の
コマンド実行を中止します。
「PPx.Quit 0」と result に 0 を指定すると、「コマンド*scriptはあ
りません」エラーになるので、指定しないでください。
例) *script sample.js %: explorer
sample.js 内で PPx.Quit()を実行すると explorer が実行される
sample.js 内で PPx.Quit(-1)を実行すると explorer が実行されない
例) echo %*script(sample.js) %: explorer
sample.js 内で PPx.Quit(-1) を実行すると echo, explorer が
実行されない
・name = PPx.ScriptName プロパティ、読み込み専用
実行中のスクリプトの名前(ファイル名)を返します。
現在、*script で指定した内容がそのまま入ります。
・PPx 系
既存のコマンドで実行不可能なものや、マクロ文字「%?」で取得できない
ものを優先して実装しています。コマンドで実行可能なものは、
「PPx.Execute("command")」で実行し、マクロ文字で取得可能なものは
「value = PPx.Extract("%?")」で取得してください。
*PPx共用
type = PPx.CodeType プロパティ(R)
version = PPx.ModuleVersion プロパティ(R)
version = PPx.PPxVersion プロパティ(R)
name = PPx.ScriptEngineName プロパティ(R)
version = PPx.ScriptEngineVersion プロパティ(R)
res = PPx.result プロパティ(R/W)
count = PPx.ReentryCount プロパティ(R)
res = PPx.StayMode プロパティ(R/W)
PPx.Execute("commands") 関数
res = PPx.Extract("commands") 関数
PPx.SetPopLineMessage("message") 関数
PPx.linemessage("message") 関数
PPx.report("message\r\n") 関数
PPx.log("message") 関数
res = PPx.GetFileInformation("filename"[,mode]) 関数
res = PPx.Clipboard プロパティ(R/W)
PPx.setValue("key","value") 関数
value = PPx.getValue("key") 関数
PPx.setProcessValue("key", value) 関数
value = PPx.getProcessValue("key") 関数
PPx.setIValue("key", value) 関数
value = PPx.getIValue("key") 関数
PPx.Include("filename") 関数
*窓情報(PPx共用)
idname = PPx.WindowIDName プロパティ(R)
*窓情報(PPc専用)
dir = PPx.WindowDirection プロパティ(R)
index = PPx.EntryDisplayTop プロパティ(R)
width = PPx.EntryDisplayX プロパティ(R)
height = PPx.EntryDisplayY プロパティ(R)
count = PPx.GetComboItemCount([n]) 関数
id = PPx.ComboIDName プロパティ(R)
*窓設定(PPc専用)
mode = PPx.SlowMode プロパティ(R/W)
mode = PPx.SyncView プロパティ(R/W)
*ドライブ情報(PPc専用)
label = PPx.DriveVolumeLabel プロパティ(R)
size = PPx.DriveTotalSize プロパティ(R)
size = PPx.DriveFreeSize プロパティ(R)
*ディレクトリ情報(PPc専用)
type = PPx.DirectoryType プロパティ(R)
count = PPx.LoadCount(n) 関数
entries = PPx.EntryAllCount プロパティ(R)
entries = PPx.EntryDisplayCount プロパティ(R)
entries = PPx.EntryMarkCount プロパティ(R)
size = PPx.EntryMarkSize プロパティ(R)
dirs = PPx.EntryDisplayDirectories プロパティ(R)
files = PPx.EntryDisplayFiles プロパティ(R)
PPx.EntryInsert(index, "filename") 関数
*カーソル上のエントリの情報(PPc専用)
index = PPx.EntryIndex プロパティ(R/W)
mark = PPx.EntryMark プロパティ(R/W)
name = PPx.EntryName プロパティ(R)
attributes = PPx.EntryAttributes プロパティ(R)
size = PPx.EntrySize プロパティ(R)
state = PPx.EntryState プロパティ(R/W)
color = PPx.EntryExtColor プロパティ(R/W)
highlight = PPx.EntryHighlight プロパティ(R/W)
comment = PPx.EntryComment プロパティ(R/W)
res = PPx.EntryFirstMark 関数
res = PPx.EntryNextMark 関数
res = PPx.EntryPrevMark 関数
res = PPx.EntryLastMark 関数
*マウスカーソル上のエントリの情報(PPc専用)
type = PPx.PointType プロパティ(R)
index = PPx.PointIndex プロパティ(R)
*指定位置のエントリの情報(PPc専用)
entry = PPx.Entry オブジェクト
entry = entry.Item([n]) 関数
count = entry.Count プロパティ(R)
count = entry.length プロパティ(R)
index = entry.index プロパティ(R/W)
result = entry.IndexFrom(Name) 関数
mark = entry.Mark プロパティ(R/W)
result = entry.FirstMark プロパティ(R)
result = entry.NextMark プロパティ(R)
result = entry.PrevMark プロパティ(R)
result = entry.LastMark プロパティ(R)
name = entry.Name プロパティ(R)
name = entry.ShortName プロパティ(R)
attributes = entry.Attributes プロパティ(R)
size = entry.Size プロパティ(R)
date = entry.DateCreated プロパティ(R)
date = entry.DateLastModified プロパティ(R)
date = entry.DateLastAccessed プロパティ(R)
state = entry.State プロパティ(R/W)
color = entry.ExtColor プロパティ(R/W)
comment = entry.Comment プロパティ(R/W)
comment = entry.GetComment(id) 関数
entry.SetComment(id,text) 関数
text = entry.Information プロパティ(R)
entry.Hide プロパティ(R)
highlight = entry.Highlight プロパティ(R/W)
entry = entry.AllEntry プロパティ(R)
entry = entry.AllMark プロパティ(R)
endstate = entry.atEnd() 関数
entry.moveNext() 関数
entry.Reset() 関数
*一体化時の各ペインの情報(PPc,一体化時専用)
vpane = PPx.Pane オブジェクト
vpane = vpane.Item([n]) 関数
count = vpane.Count プロパティ(R)
count = vpane.length プロパティ(R)
index = vpane.index プロパティ(R/W)
result = vpane.IndexFrom(IDName) 関数
tab = vpane.Tab オブジェクト
endstate = vpane.atEnd() 関数
vpane.moveNext() 関数
vpane.Reset() 関数
g_index = vpane.GroupIndex プロパティ(R/W)
count = vpane.GroupCount プロパティ(R)
str_array = vpane.GroupList プロパティ(R)
name = vpane.GroupName プロパティ(R/W)
*一体化時の各タブの情報(PPc,一体化時専用,タブがないときは該当ペインの情報)
tab = PPx.Pane.Tab オブジェクト
tab = tab.Item([n]) 関数
count = tab.Count プロパティ(R)
count = tab.length プロパティ(R)
index = tab.index プロパティ(R/W)
result = tab.IndexFrom(IDName) 関数
index = tab.Pane プロパティ(R)
id = tab.IDName プロパティ(R)
caption = tab.Name プロパティ(R)
type = tab.Type プロパティ(R)
lock = tab.Lock プロパティ(R/W)
color = tab.Color プロパティ(R/W)
color = tab.BackColor プロパティ(R/W)
tab.Execute("commands") 関数
res = tab.Extract("commands") 関数
endstate = tab.atEnd() 関数
tab.moveNext() 関数
tab.Reset() 関数
*PPx共用
・type = PPx.CodeType プロパティ、読み込み専用
PPx の使用文字コードの種類を取得します。MultiByte版なら 0、
UNICODE版なら 1 の値になります。
・version = PPx.ModuleVersion プロパティ、読み込み専用
Script Module のバージョンを取得します。R3 なら 3 の整数になります。
・version = PPx.PPxVersion プロパティ、読み込み専用
PPx のバージョンを取得します。Version 1.23 なら 12300 の整数に
なります。
・name = PPx.ScriptEngineName プロパティ、読み込み専用
使用しているスクリプト言語の名前("QuickJS")を取得します。
・version = PPx.ScriptEngineVersion プロパティ、読み込み専用
使用しているスクリプト言語のバージョン("2024-01-13")を取得します。
・result = PPx.result プロパティ、読み書き可能
関数の戻値を指定します。PPx.result がないときの関数の戻値は、
最後に記載された式の値が使われます。
%*js8(" %(PPx.Result="result"; 12345; %)") → 戻値: は result
%*js8(" %(12345; %)") → 戻値: は 12345
・count = PPx.ReentryCount プロパティ、読み込み専用
スクリプト常駐時の再入回数です。再入が起きていないときは 0 です。
・result = PPx.StayMode プロパティ、読み書き可能
スクリプトを常駐させます。常駐させることによって、スクリプトの実行
完了後もオブジェクトが維持されたインスタンスとして残ります。
そして、ソース名かインスタンス番号の指定により、維持されている
インスタンスのオブジェクトを使用できます。
これにより読み込み処理を省略して高速に実行させたり、処理を続行させ
たりすることができ、より高度な処理をおこなうことができます。
常駐時の挙動については、「●常駐時の挙動について」を参照してください。
・次の値を指定することができます。
0 スクリプトソースは毎回読み込まれる(WSH版, QuickJS版初期値)
常駐時にこの値を指定すると常駐の解除ができます。
1 ソースをキャッシュ ※ QuickJS版はキャッシュ機能がありません。
2 スクリプトを常駐。1 に加えて、実行したスクリプトの状態が
終了後も維持されます。インスタンス番号は自動割当てです。
10000~9999999 指定した番号のインスタンスを使用します。
別ソースのスクリプトを同じインスタンスで使用するときの
指定です。各スクリプトに記載したグローバルオブジェクト
(変数やメソッド等)が全て1つのインスタンスに入るため、
注意が必要です。
尚、窓・スレッドが別の場合は同じ番号を指定しても
別インスタンスになります。
・値を取得したときは次の値になります。値は特殊環境変数等に記憶して
次回の呼び出しに使用できます。
0 常駐していない
1 ソースをキャッシュしている。※QuickJS版では使われません。
10000~9999999 手動指定した時のインスタンス番号
1000000000~ 2を指定したときの自動割当てインスタンス番号
・常駐したインスタンスを呼び出すときは次の記載になります。
*script / *js は同機能の別コマンド・関数と置き換え可能です。
関数名を指定して実行した関数の戻り値は、PPx.result ではなく、
関数の結果(JavaScript の場合、return 値)が値になります。
1) *script スクリプトファイル名 [,パラメータ1[,パラメータ2...]]
*js スクリプト [,パラメータ1[,パラメータ2...]]
上記のように、通常のスクリプトの実行時の記載と同じ場合は、
常駐しているインスタンスの ppx_resume([パラメータ]) を実行します。
スクリプト名・スクリプトはインスタンスの識別に使われるため、
前回実行したスクリプトと同一にする必要があります。
2) *script :関数名, スクリプトファイル名 [,パラメータ1...]
*js :関数名, スクリプト [,パラメータ1...]
常駐しているインスタンスの指定関数([パラメータ])を実行します。
スクリプト名・スクリプトはインスタンスの識別に使われ、
前回実行したスクリプトと同一にする必要があります。
※ let / const の関数は扱えません。
3) *script :インスタンス番号, [スクリプトファイル名] [,パラメータ1...]
*js :インスタンス番号, [スクリプト] [,パラメータ1...]
指定インスタンス番号のインスタンスでスクリプトを実行します。
インスタンスがない場合は、常駐も行われます。
スクリプトがない場合、またはスクリプトファイル名が常駐した
スクリプトのファイル名と同じ場合は、常駐しているインスタンスの
ppx_resume([パラメータ]) を実行します。
スクリプトファイル名が常駐したスクリプトのファイル名と異なる
場合は、同じインスタンスで今回のスクリプトを実行します。
また、「*script %si"insno","%1%\script.js"」といったコマンド
ラインとして、script.js 中で、PPx.setIValue = ":12345" と
インスタンス番号を指定することもできます。
このとき、%si"insno" の中身が空でも script.js を実行できます。
4) *script ":インスタンス番号,関数" [,パラメータ1...]
*js ":インスタンス番号,関数" [,パラメータ1...]
指定インスタンス番号のインスタンスの指定関数を実行します。
※ let / const の関数は扱えません。
・result = PPx.Execute("commands")
指定されたコマンドを実行します。
ex) PPx.Execute("explorer /e,%1")
PPx.Execute("command %: *closeppx")
オブジェクトに登録されていない機能を使いたいときはこの Execute を
使えば大抵実行できます。
実行後のエラーコードを得ることもできます。正常に実行した
場合は 0 を、途中でキャンセル操作をした場合(1223)や
エラーになった場合は 0 以外の値になります。
エラー番号は Win32APIのエラーコードです。
「Win32 エラーコード 一覧」などでWWWの検索をすると詳細が分かります。
また、%*errormsg() でエラーメッセージにすることができます。
ex) var errorcode = PPx.Execute("%Q");
PPx.Echo(PPx.Extract("%*errormsg("+errorcode+")");
・result = PPx.Extract("commands") 関数
マクロ文字の展開内容を求めます。%C 等が展開された結果を
得ることができます。マクロ文字にはあるが、プロパティ等では
提供されていない内容を取得するために用います。
また、メニュー(%Mxxx)を表示させたり、ファイル判別処理(%ME_xxx)を
行い、その結果を得ることにも用いることができます。
%: で区切った場合は順次実行して最後の文の展開結果が得られます。
ex) var path = PPx.Extract("%1");
展開中にエラーが生じたり、キャンセル操作をした場合は、結果が空に
なります。このとき、続いて引数なしで実行すると、Win32API の
エラーコードが得られます。正常終了のときは 0 になります。
ex) PPx.Echo(PPx.Extract("%*input") + " / " + PPx.Extract());
※ %*input で入力をキャンセルすると「 / 1223」になる。
・PPx.SetPopLineMessage("message") 関数
・PPx.linemessage("message")
PPc : ステータス行に一行メッセージを表示します。
ログ窓がある場合はログ窓に表示します。常にステータス行に
表示したい場合は、次のように頭に「!"」を追加してください。
PPx.linemessage("!\"test")
PPv : 情報行に一行メッセージを表示します。
PPb : ターミナルに表示します。
一行編集 : タイトルバーに表示します。
その他 : ポップアップウィンドウに表示します。
どちらのコマンドも同じ動作です。
必ず入力待ちをしたい場合は、PPx.Echoを使用してください。
・PPx.report("message\r\n") 関数
PPc : ログ窓にメッセージを表示します。
PPb : ターミナルに表示します(PPx 1.97以降)。
その他 : ポップアップウィンドウに表示します。
※自動改行はしませんので適宜改行コード("\r\n")が必要です。
・PPx.log("message") 関数
「ステータス行などのログをファイルに保存する」(X_log)を有効に
しているとき、ログファイルにメッセージを出力します。
・text = PPx.GetFileInformation("filename"[,mode]) 関数
指定したファイルの中身からファイルの種類を判定します。
ファイルの読み込みに失敗したり、該当種類がない場合は空欄です
mode によって結果が変わります(PPx 1.97以降)。
指定無し or 0 ファイル判別で使用される名前(:JPEG)
1 種類名(JPEG image)
2 規定の拡張子(jpg)
・result = PPx.Clipboard プロパティ、読み書き可能
クリップボード内のテキストです。中にUNICODEテキスト以外の形式が
入っていた場合は参照できません。
・value = PPx.getValue("key") 関数
・ PPx.setValue("key","value") 関数
スクリプトを終了しても内容が維持される文字列のコレクションです。
(V8 Module では任意オブジェクトが保存できます。)
スクリプトを実行しているプロセスが終了するまで
(ppxqjs.dllが解放されるまで)記憶したい内容があるときに使用します。
例) 状態の記憶、大きなファイルのキャッシュ等
ただし、窓別・スクリプト別に用意された場所ではないので、
IDname やスクリプト名などを含んだ名前を key として、
名前が重複しないようにする必要があります。
・value = PPx.getProcessValue("key") 関数
・PPx.setProcessValue("key", value) 関数
・value = PPx.getIValue("key") 関数
・PPx.setIValue("key", value) 関数
%*sp/i と *string p/i と同様に特殊環境変数の読み書きを行います。
ProcessValue はプロセス用特殊環境変数、
IValue は各PPx内用特殊環境変数(PPc以外は、ProcessValueと同じ内容)です。
尚、WSH・QuickJS 版は PPx.getValue/setValue と PPx.getProcessValue/
setProcessValue が同じ特殊環境変数を参照します。
・PPx.Include("filename") 関数
スクリプトファイルを追加で読み込み・実行します。eval() 関数と
同等の効果が得られ、更に、filename 内でエラーが起きたときに、
ソース名として filename が表示できます。
スクリプトがモジュールでないときの import の代用となります。
*窓情報(PPx共用)
・idname = PPx.WindowIDName プロパティ、読み込み専用
呼び出し元 PPx の IDName(文字列, CA~CZ~CZaa~)を返します
始めの1文字が種類(PPc なら "C"、PPv なら "V")
2文字目以降が A~Z~Zaa~Zzzz の割当て番号になります。
*窓情報(PPc専用)
・dir = PPx.WindowDirection プロパティ、読み込み専用
PPc を2画面で連結しているときに、現在窓の位置関係を得るための
プロパティです。なお、連結していないときでも 1 以上の値を返し
ます。
dir = 0 1画面のみ表示
1 左/上側
2 右/下側
・index = PPx.EntryDisplayTop プロパティ、読み書き可能
エントリの表示開始位置(0~)です。例えば 100 の場合は、先頭から
101 番目のエントリが最初の表示項目になります。
・width = PPx.EntryDisplayX プロパティ、読み込み専用
エントリの幅方向の表示数です。例えば 2 だと2列表示ということ
になります。
・height = PPx.EntryDisplayY プロパティ、読み込み専用
エントリの高さ方向の表示数です。例えば 10 だと10行表示という
ことになります。
・count = PPx.GetComboItemCount([mode]) 関数
一体化窓に登録されている PPc の数です。
PPx.GetComboItemCount(1)で、*capturewindowで登録された窓も
数に含むようになります。
※ script module ではプロパティでしたが関数に変更しています。
・id = PPx.ComboIDName プロパティ、読み込み専用
実行元の一体化窓のIDName(文字列)を返します。
IDName は CBA~CBZ になります。
*窓設定(PPc専用)
・mode = PPx.SlowMode プロパティ、読み書き可能
低速モード(X_Slow)の状態取得・設定をおこないます。
0 なら通常モード、1 なら低速モードです。
・mode = PPx.SyncView プロパティ、読み書き可能
連動ビュー(\[Y])の状態取得・設定をおこないます。
0 なら off、1 なら on です。
また、使用する PPv の ID を固定しているときは
( *ppvoption sync ID )、その ID を表す値が文字コード
( 65 なら A )で入ります。
※上記理由により、連動ビューが有効化の判断は、0 か 0以外かで
行う必要があります。
*ドライブ情報(PPc専用)
・label = PPx.DriveVolumeLabel プロパティ、読み込み専用
現在ドライブのボリュームラベルです。
・size = PPx.DriveTotalSize プロパティ、読み込み専用
現在ドライブの総容量です。ディスククォータを使用しているときは、
ユーザの割当量になります。
・size = PPx.DriveFreeSize プロパティ、読み込み専用R)
現在ドライブの空き容量です。ディスククォータを使用しているときは、
ユーザの残り容量になります。
*ディレクトリ情報(PPc専用)
・type = PPx.DirectoryType プロパティ、読み込み専用
現在のディレクトリの種類を表します。値は次の通りです。
この一覧にない場合は、PPx ソースの VFS.H の VFSDT_xxx を参照して
ください。
0 不明
1 path(drive/unc)
2 Drive list
3 SHN/Shell's Namespace
4 list file
5 FAT disk image file
6 FAT disk raw access
7 CD-ROM image file
8 CD-ROM raw access
9 shell: 等
10 / (Wine版で使用)
11 aux: ※DirectoryTypeでは使用されず、読込方法(1,4)になる
21 FTP
61 cab folder
62 lzh folder
63 zip folder
64 Susie Plug-in
80 HTTP
96 UNxxx
・count = PPx.LoadCount(n) 関数
ディレクトリを読み込み([F5]相当)、更新(^[F5]相当)する度に
値が変化するカウンタの値を取得します。この値を監視することで
扱っているデータの鮮度を管理し、読み込みや更新によって
再作成が必要なデータの判断や、以前のディレクトリ向けの処理を
別個のディレクトリで実施したりすることを防止できます。
n = 0 のときは読み込みのみの値、n = 1 のときは読み込み+更新の値です。
尚、count の値はオーバーフローが起きるため、値の大小比較ではなく、
一致・不一致の比較をしてください。
・entries = PPx.EntryAllCount プロパティ、読み込み専用
現在のディレクトリの全てのエントリ数を表します。
ファイルマスクなどによって隠されているエントリも含まれます。
・entries = PPx.EntryDisplayCount プロパティ、読み込み専用
現在のディレクトリの全てのエントリ数を表します。
表示中のエントリ(ファイルとディレクトリ)に限られます。
・entries = PPx.EntryMarkCount プロパティ、読み込み専用
選択したエントリ数を表します。
未選択の場合は 0 になります。
・size = PPx.EntryMarkSize プロパティ、読み込み専用
選択したエントリの総サイズを表します。
ディレクトリのサイズが計算されているとそのサイズも加算されます。
未選択の場合は 0 になります。
・dirs = PPx.EntryDisplayDirectories プロパティ、読み込み専用
現在のディレクトリの全てのディレクトリ数を表します。
表示可能であり、「.」「..」を含まないディレクトリが対象です。
・files = PPx.EntryDisplayFiles プロパティ、読み込み専用
現在のディレクトリの全てのファイルを表します。
表示可能なファイルが対象です。
・PPx.EntryInsert(index, "filename") 関数
indexが示すカーソル位置に指定したfilenameのメッセージエントリを
挿入します。
*カーソル上のエントリの情報(PPc専用)
・index = PPx.EntryIndex プロパティ、読み書き可能
現在窓のカーソル位置が取得できます。先頭のカーソル位置は 0 です。
また、代入を行うとカーソル位置を変更できます。代入時、表示範囲や
実体範囲外となっても、適当に丸められます。
・mark = PPx.EntryMark プロパティ、読み書き可能
カーソル上のマーク状態です。マーク無しは 0、有りは 1 です。
また、代入時に -1 を指定するとマークが反転します。
・name = PPx.EntryName プロパティ、読み込み専用
現在のカーソル上のエントリ名が取得できます。
・attributes = PPx.EntryAttributes プロパティ、読み込み専用
カーソル上のエントリの属性です。属性は、Scripting.
FileSystemObject.Attributes で得られる値と同じく、以下の値の
総和です。
Bit 10進数 16進数
0 1 1 読み込み専用