-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPPCOMMON.H
1772 lines (1549 loc) · 75.5 KB
/
PPCOMMON.H
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 commom library header
UNICODE 定義してあるときは UNICODE 版
DEBUG 定義してあるときはデバッグコード
-----------------------------------------------------------------------------*/
#ifndef NODLL
#define NODLL 0
#define DLLDEFINED
#define DLLPARAM(value) = value
#else
#define DLLDEFINED extern
#define DLLPARAM(value)
#endif
#ifdef ONVFSDLL
#define ONPPXDLL
#endif
#if !NODLL && !defined(WINEGCC)
#define EXTDLL __declspec(dllexport)
#ifdef ONPPXDLL
#define PPXDLL __declspec(dllexport)
#else
#define PPXDLL __declspec(dllimport)
#endif
#else
#define EXTDLL
#define PPXDLL
#endif
#define PPXAPI WINAPI
#ifdef __cplusplus
extern "C" {
#endif
#define VFPS 600 // VFS パスのサイズ
#define OVER_VFPS_MSG "<too long>" // VFPS を越えたときに代わりに得られる内容
#define VFSGETFFINFO_TYPESIZE 10
#ifdef RELEASE
#define PPXSYNCDEBUG 0
#else
#define PPXSYNCDEBUG 0 // UsePPx での同期待ちダイアログで問題箇所を表示する
#endif
/*-----------------------------------------------------------------------------
PPx 本体, PPCOMMON, PPx Module 間の情報交換用構造体
Function の cmdID 割当て:記載がない限り、戻り値が 0 なら未実装
置き換え '0'→DLLのpath '1'→カレントディレクトリ
'F', 'X', 'T', 'R', 'Y', 't', 'L' → '1'と'C'から生成
*/
struct tagPPXAPPINFOA;
struct tagPPXAPPINFOW;
#define PPxInfoFunc(info, func, uptr) (info)->Function(info, func, (void *)uptr)
#define PPxInfoFunc32i(info, func, uptr) (int)(info)->Function(info, func, (void *)uptr)
#define PPxInfoFunc32u(info, func, uptr) (DWORD)(info)->Function(info, func, (void *)uptr)
#define PPxEnumInfoFunc(info, func, str, work) ((work)->buffer = str, PPxInfoFunc(info, func, work))
/* 0x0000~PPXCMDID_FILL: PPXCMDENUMSTRUCT を使用したやりとり用。
cmdid : 列挙対応版 'C', 'X', 'T'
非対応 '0', '1', '2', 'R', 'Y', 't', 'L'
uptr : PPXCMDENUMSTRUCT へのポインタ
未実装の場合でも、uptr->enums.buffer = '\0' の処理が必要
また、パラメータを有するマクロ文字の場合は、
そのパラメータへのポインタを buffer に格納する。
0-100:マクロ文字の展開用に用いられる
*/
//## 0x100-1ff : 非列挙版非マクロ文字
//## 0x200-3ff : 列挙処理、非マクロ文字
//#define PPXCMDID_ENUMCOUNT 0x0200 // マクロ文字による列挙処理/対象数
// 戻り値が 0:未実装、-1:対象無し 正:対象数
#define PPXCMDID_STARTENUM 0x0201 // マクロ文字による列挙処理/開始
// 戻り値が偽:列挙対象無し(PPcのマーク無しは該当しない)
#define PPXCMDID_NEXTENUM 0x0202 // マクロ文字による列挙処理/次へ
// 戻り値が偽:列挙対象無し
#define PPXCMDID_ENDENUM 0x0203 // マクロ文字による列挙処理/終了
#define PPXCMDID_STARTNOENUM 0x0204 // マーク無しはなしの列挙処理/開始
#define PPXCMDID_TRIMENUM 0x0205 // 処理済み(先頭)のマークを解除
#define PPXCMDID_ENUMFINDDATA 0x0300 // 該当エントリの WIN32_FIND_DATA
#define PPXCMDID_ENUMATTR 0x0301 // 該当エントリの属性(GetFileAttributes)
//#define PPXCMDID_ENUMSIZE 0x0302 // 該当エントリのファイルサイズ
//#define PPXCMDID_ENUMCOMMENT 0x0303 // 該当エントリのコメント
#define PPXCMDID_FILL 0x03ff // 必ず戻り値が必要なコマンドの上限値
//## 0x0400~0x07ff: 各種コマンド(PPCOMMON内で解釈/共用)。
#define PPXCMDID_COMMAND 0x0400 // 未定義 *command
#define PPXCMDID_EXECUTE 0x0401 // 指定文字列を実行
#define PPXCMDID_EXTRACT 0x0402 // 指定文字列を展開して再格納
#define PPXCMDID_FUNCTION 0x0403 // 未定義 %*function
#define PPXCMDID_GETKEYNAME 0x0404 // key が示すキー名称をstrに出力
#define PPXCMDID_LONG_EXTRACT 0x0405 // PPXCMDID_EXTRACT のover CMDLINESIZE
#define PPXCMDID_LONG_EXTRACT_E 0x0406 // PPXCMDID_LONG_EXTRACT のエラー出力版
#define PPXCMDID_MENUONMENU 0x0700 // メニュー上のメニューのトリガ
#define PPXCMDID_ADDEXMENU 0x0701 // ポップアップ用追加メニュー(?xxx)生成
typedef struct {
HMENU hMenu; // 追加元メニュー
const TCHAR *exname; // 拡張名
struct tagThSTRUCT *TH;
DWORD *index;
} ADDEXMENUINFO;
#define PPXCMDID_EXECEXMENU 0x0702 // ポップアップ用追加メニュー
typedef struct {
HMENU hMenu; // 追加元メニュー
int index;
} EXECEXMENUINFO;
#define PPXCMDID_GETTMPFILENAME 0x07ef // PP_ExtractMacro で %@ を使ったとき、その名前の通知時に使用
#define PPXCMDID_CHARTYPE 0x07fe // 使用文字コード 0:Multibyte 1:UNICODE
#define PPXCMDID_VERSION 0x07ff // PPx のバージョンを返す(10進 12300)
//## 0x0800~0x0bff: 各種コマンド(PPxで解釈)。
// 0x0800~0x09ff 取得系
// 窓情報 80x 82x 88x 89x 8ax
#define PPXCMDID_GETSUBID 0x0807 // 補助IDを取得
#define PPXCMDID_GETREQHWND 0x0808 // 呼び出し元HWND(PPvの依頼元)
#define PPXCMDID_GETFILEINFO 0x0820 // ファイル情報(VFSGetFileType)
#define PPXCMDID_WINDOWDIR 0x0881 // 連結状態における現在窓の位置
// PPc 84x 85x 86x (87x) 88x 89x 90x 91x 92x
// 880, 888, 889 使用済み
//#define PPXCMDID_PAIRWINDOWC 0x0882 // 反対窓の ID
#define PPXCMDID_PAIRWINDOW 0x0883 // 反対窓の HWND(PPc)
#define PPXCMDID_COMBOIDNAME 0x0884 // 一体化窓の親窓ID
#define PPXCMDID_COMBOWINDOW 0x0885 // 一体化窓の親窓HWND(PPc)
#define PPXCMDID_COMBOSHOWPANES 0x0886 // 一体化窓の表示ペイン数, 非一体化:0
#define PPXCMDID_COMBOITEMS 0x0887 // 一体化窓に登録された窓数, 非一体化:0
#define PPXCMDID_COMBOIDCOUNT 0x088a // 一体化窓の登録されたIDの窓数
#define PPXCMDID_COMBOGETPANE 0x088b // 指定IDタブのペインindexを検索
#define PPXCMDID_COMBOGETHWNDEX 0x088c // 指定IDタブのHWNDを取得
#define PPXCMDID_COMBOGROUPCOUNT 0x0890 // 指定ペインのタブグループの数
#define PPXCMDID_COMBOGROUPINDEX 0x0891 // 指定ペインのタブグループのindex
#define PPXCMDID_COMBOGROUPNAME 0x0892 // 指定ペインのタブグループ名
#define PPXCMDID_POPUPPOS 0x089f // メニュー表示等に使う表示座標(POINT)
#define PPXCMDID_CSRDISPW 0x08a0 // 幅方向の表示可能数(PPc, PPv)
#define PPXCMDID_CSRDISPH 0x08a2 // 高さ方向の表示可能数(PPc, PPv)
#define PPXCMDID_CSRDINDEX 0x08a3 // 表示開始インデックス(PPc)
// 現在窓の情報
#define PPXCMDID_DIRTOTAL 0x0840 // 全エントリ数(ファイルマスクなし状態)
#define PPXCMDID_DIRTTOTAL 0x0841 // 利用可能エントリ数(マスクあり)
#define PPXCMDID_DIRTTOTALFILE 0x0842 // 利用可能ファイル数(マスクあり)
#define PPXCMDID_DIRTTOTALDIR 0x0843 // 利用可能ディレクトリ数(マスクあり)
#define PPXCMDID_DIRMARKS 0x0844 // 選択エントリ数
#define PPXCMDID_DIRMARKSIZE 0x0845 // 選択エントリサイズ
#define PPXCMDID_DIRLOADCOUNT 0x0846 // 読み込み/更新カウンタ
#define PPXCMDID_DIRTYPE 0x0848 // 現在のディレクトリの形式
#define PPXCMDID_COMBOWNDTYPE 0x0850 // 一体化窓上の現在・反対・プレビュー
#define PPXCMDID_COMBOSHOWINDEX 0x0851 // 一体化窓上のペイン位置
#define PPXCMDID_COMBOTABPANE 0x0852 // タブのペイン
#define PPXCMDID_COMBOTABNAME 0x0853 // タブの表示名
#define PPXCMDID_COMBOTABIDNAME 0x0854 // 該当タブのID(C_x)
#define PPXCMDID_DIRLOCK 0x0855 // ロック状態
#define PPXCMDID_TABTEXTCOLOR 0x0856 // タブの文字色
#define PPXCMDID_TABBACKCOLOR 0x0857 // タブの背景色
#define PPXCMDID_COMBOTABINDEX 0x0858 // 一体化窓上のタブ位置
#define PPXCMDID_COMBOTABCOUNT 0x0859 // 一体化窓上の該当ペインのタブ数
#define PPXCMDID_COMBOGETTAB 0x085a // タブ位置取得
#define PPXCMDID_COMBOTABLONGID 0x085b // 該当タブのID(CZxxx対応)
#define PPXCMDID_COMBOTABHWND 0x085c // 該当タブのHWNDを取得
#define PPXCMDID_DRIVELABEL 0x085d // ドライブのボリュームラベル
#define PPXCMDID_DRIVETOTALSIZE 0x085e // ドライブの総容量
#define PPXCMDID_DRIVEFREE 0x085f // ドライブの空き容量
#define PPXCMDID_SYNCVIEW 0x0860 // 連動ビュー状態
//#define PPXCMDID_SYNCINFO 0x0861 // 連動情報表示
#define PPXCMDID_SLOWMODE 0x0862 // 低速モード
#define PPXCMDID_POINTINFO 0x0863 // マウスカーソルが示す場所の情報 type,index/X,Y
// 選択情報 8x(他使用済み)
#define PPXCMDID_CSRINDEX 0x0880 // 該当エントリのカーソルindex(PPc)
#define PPXCMDID_CSRX 0x0888 // カーソル X 位置(PPv ※現在未使用)
#define PPXCMDID_CSRY 0x0889 // カーソル Y 位置(PPv ※現在未使用)
#define PPXCMDID_CSRLOCATE 0x088e // カーソル位置 (x, y, w, h)
// PPc x,y カーソル位置 w,h
// PPv x,y カーソル位置 w,h 選択位置?
// PPe x,y カーソル・選択位置
#define PPXCMDID_CSRRECT 0x088f // メニュー表示用座標情報 (x, y, w, h)
// x,y メニュー表示スクリーン座標(ほぼ PPXCMDID_POPUPPOS)
// w,h PPc:エントリの幅、高さ PPv,PPe:基準フォントサイズ ※PPe x=1固定
// 選択物情報
// PPc
#define PPXCMDID_CSRATTR 0x0900 // 該当エントリの属性(GetFileAttributes
#define PPXCMDID_CSRMARK 0x0901 // 該当エントリのマーク
#define PPXCMDID_CSRMSIZE 0x0902 // 該当エントリのファイルサイズ
#define PPXCMDID_CSRCOMMENT 0x0903 // 該当エントリのコメント
#define PPXCMDID_CSRSTATE 0x0907 // 該当エントリの状態
#define PPXCMDID_CSREXTCOLOR 0x0908 // 該当エントリの拡張子色
// PPXCMDID_ENTRY* で文字列を扱うときの構造体
typedef union {
int index; /* in */
char path[MAX_PATH]; /* out */
} PPXUPTR_INDEX_UPATHA;
typedef union {
int index;
WCHAR path[MAX_PATH];
} PPXUPTR_INDEX_UPATHW;
typedef union {
int index; /* in */
char *result; /* out, HeapAlloc */
} PPXUPTR_ENTRYINFOA;
typedef union {
int index;
WCHAR *result;
} PPXUPTR_ENTRYINFOW;
#define PPXCMDID_ENTRYATTR 0x0910 // 指定エントリの属性(GetFileAttributes
#define PPXCMDID_ENTRYMARK 0x0911 // 指定エントリのマーク
#define PPXCMDID_ENTRYMSIZE 0x0912 // 指定エントリのファイルサイズ
#define PPXCMDID_ENTRYCOMMENT 0x0913 // 指定エントリのコメント
#define PPXCMDID_ENTRYMTIME 0x0914 // 指定エントリの更新時刻
#define PPXCMDID_ENTRYCTIME 0x0915 // 指定エントリの作成刻
#define PPXCMDID_ENTRYATIME 0x0916 // 指定エントリのアクセス時刻
#define PPXCMDID_ENTRYSTATE 0x0917 // 指定エントリの状態
#define PPXCMDID_ENTRYEXTCOLOR 0x0918 // 指定エントリの拡張子色
#define PPXCMDID_ENTRYNAME 0x0919 // 指定エントリの名前
#define PPXCMDID_ENTRYANAME 0x091a // 指定エントリの短い名前
#define PPXCMDID_ENTRYINFO 0x091b // 指定エントリの詳細情報(^[I])
#define PPXCMDID_ENTRY_HS_GETINDEX 0x091c // PPXCMDID_ENTRYMARKFIRST_HS の
// index からカーソル位置を得る
#define PPXCMDID_ENTRYEXTDATA_GETID 0x091d // SETDATA/GETDATAに使うIDを取得
// 指定エントリに関連づけたユーザデータを読み書きする
#define PPXCMDID_ENTRYEXTDATA_SETDATA 0x091e
#define PPXCMDID_ENTRYEXTDATA_GETDATA 0x091f
// 拡張コメント用ID ID1=DFC_COMMENTEX_MAX, ID2=DFC_COMMENTEX_MAX-1...
#define DFC_COMMENTEX_MAX 0x7f00 // PPX.H に他のIDを記載
#define DFC_COMMENTEX (DFC_COMMENTEX_MAX - 10 + 1)
typedef struct {
DWORD entry; // 対象となる entry を指定する。PPXCMDID_ENTRY_HS_GETINDEX で得た値を使用する
DWORD id; // 識別ID。PPXCMDID_ENTRYEXTDATA_GETID で得た値を使用する
SIZE32_T size; // dataの大きさ。64k - 1 以内の大きさまで対応
BYTE *data;
} ENTRYEXTDATASTRUCT;
#define PPXCMDID_ENTRYFROMNAME 0x0920 // 指定 result のエントリ index を取得
#define PPXCMDID_GETFGWND 0x09f0 // PPtray, 直前の前面hWnd取得
// 0x0a00~0x0bff 設定、実行系
// コマンド類
#define PPXCMDID_CHDIR 0x0a00 // %j コマンド、path ジャンプ
#define PPXCMDID_PATHJUMP 0x0a01 // %J コマンド、path+file+ext ジャンプ
#define PPXCMDID_ENTRYJUMP 0x0a02 // %J コマンド、file+ext ジャンプ
#define PPXCMDID_MOVECSR 0x0a03 // *cursor コマンド
#define PPXCMDID_PPXCOMMAD 0x0a04 // %K コマンド
// ※ 戻り値は、0:該当コマンドなし、1:正常実行完了 その他: (ERRORCODE ^ 1)
// ※ ERRORCODE ^ 1 で OK
#define PPXCMDID_SETPOPLINE 0x0a05 // PopLineMessageを登録
#define PPXCMDID_SETSTATLINE 0x0a06 // PopLineMessage(作業中状況)を登録
#define PPXCMDID_EXTREPORTTEXT 0x0a07 // 報告窓があればテキストをログ表示
#define PPXCMDID_EXTREPORTTEXT_CLOSE 0x0a071 // 戻値:報告窓は存在しない
#define PPXCMDID_EXTREPORTTEXT_LOG 0x0a072 // 戻値:報告窓に書き込んだ
#define PPXCMDID_GETWNDVARIABLESTRUCT 0x0a08 // ZStringVariable で使用する窓別の構造体のアドレスを取得
#define PPXCMDID_GETCONTROLVARIABLESTRUCT 0x0a09 // ZStringVariable で使用するEdit/Tree内構造体のアドレスを取得
#define PPXCMDID_REPORTTEXT 0x0a0a // テキストをログ表示
#define PPXCMDID_MESSAGE 0x0a0b // メッセージダイアログを表示
#define PPXCMDID_DEBUGLOG 0x0a0c // ログ記録(XM_DbgLOG)
//#define PPXCMDID_GETEXTRACTVARIABLESTRUCT 0x0a0b // ZStringVariable で使用するExract内構造体のアドレスを取得
#define PPXCMDID_SETPOPUPPOS 0x0a9f // メニュー表示等に使う表示座標(POINT)
// 以下は num[0]: pane, num[1]:tab
#define PPXCMDID_COMBOTABEXTRACTLONG 0x0a4d // 一体化窓の特定窓の取得(長文字列)
#define PPXCMDID_COMBOTABEXECUTE 0x0a4e // 一体化窓の特定窓で実行
#define PPXCMDID_COMBOTABEXTRACT 0x0a4f // 一体化窓の特定窓の取得
#define PPXCMDID_SETTABNAME 0x0a53 // タブの表示名 o
// 以下は PPXUPTR_TABINDEXSTR を使用
typedef struct {
int pane, tab;
char *str;
} PPXUPTR_TABINDEXSTRA;
typedef struct {
int pane, tab;
WCHAR *str;
} PPXUPTR_TABINDEXSTRW;
#define PPXCMDID_SETCOMBOWNDTYPE 0x0a50 // 一体化窓上の現在・反対・プレビュー
#define PPXCMDID_SETCOMBOTABPANE 0x0a52 // タブのペイン
#define PPXCMDID_SETDIRLOCK 0x0a55 // ロック状態
#define PPXCMDID_SETTABTEXTCOLOR 0x0a56 // タブの文字色
#define PPXCMDID_SETTABBACKCOLOR 0x0a57 // タブの背景色
// PPc
#define PPXCMDID_SETSYNCVIEW 0x0a60 // 連動ビュー状態
#define PPXCMDID_SETSYNCINFO 0x0a61 // 連動情報表示
#define PPXCMDID_SETSLOWMODE 0x0a62 // 低速モード
// 選択操作
#define PPXCMDID_CSRSETINDEX 0x0a80 // 該当エントリのインデックス(PPc)
#define PPXCMDID_CSRMARKFIRST 0x0a83 // 最初のマークエントリ
#define PPXCMDID_CSRMARKNEXT 0x0a84 // 次のマークエントリ
#define PPXCMDID_CSRMARKPREV 0x0a85 // 前のマークエントリ
#define PPXCMDID_CSRMARKLAST 0x0a86 // 最後のマークエントリ
//#define PPXCMDID_CSRSETX 0x0a88 // 該当エントリの X 位置(PPv)
//#define PPXCMDID_CSRSETY 0x0a89 // 該当エントリの Y 位置(PPv)
#define PPXCMDID_CSRSETLOCATE 0x0a8e // カーソル位置 (x, y, w, h)
#define PPXCMDID_SETCOMBOGROUPINDEX 0x0a91 // 指定ペインのタブグループのindex
#define PPXCMDID_SETCOMBOGROUPNAME 0x0a92 // 指定ペインのタブグループ名
#define PPXCMDID_ENTRYMARKFIRST 0x0a93 // 最初のマークエントリ
#define PPXCMDID_ENTRYMARKNEXT 0x0a94 // 次のマークエントリ
#define PPXCMDID_ENTRYINSERT 0x0a95 // エントリを挿入
#define PPXCMDID_ENTRYINSERTMSG 0x0a96 // メッセージを挿入
#define PPXCMDID_ENTRYHIDEENTRY 0x0a97 // エントリを隠す(除去)
#define PPXCMDID_ENTRYMARKFIRST_HS 0x0a98 // 最初のマークエントリ(高速版)
#define PPXCMDID_ENTRYMARKNEXT_HS 0x0a99 // 次のマークエントリ(高速版)
#define PPXCMDID_ENTRYMARKPREV_HS 0x0a9a // 前のマークエントリ(高速版)
#define PPXCMDID_ENTRYMARKLAST_HS 0x0a9b // 最後のマークエントリ(高速版)
#define PPXCMDID_CSRSETDINDEX 0x0aa3 // 表示開始インデックス(PPc)
// 選択物操作
//PPc
#define PPXCMDID_CSRSETMARK 0x0b01 // 該当エントリのマーク
#define PPXCMDID_CSRSETCOMMENT 0x0b03 // 該当エントリのコメント
#define PPXCMDID_CSRSETSTATE 0x0b07 // 該当エントリの状態
#define PPXCMDID_CSRSETEXTCOLOR 0x0b08 // 該当エントリの拡張子色
#define PPXCMDID_ENTRYSETMARK 0x0b11 // 指定エントリのマーク
#define PPXCMDID_ENTRYSETCOMMENT 0x0b13 // 指定エントリのコメント
#define PPXCMDID_ENTRYSETSTATE 0x0b17 // 指定エントリの状態
#define PPXCMDID_ENTRYSETEXTCOLOR 0x0b18 // 指定エントリの拡張子色
// 機能拡張・フック
#define PPXCMDID_CLOSE_MODELESS_DIALOG 0x0bef // モードレスダイアログの終了通知(hDlgWnd)
//機能差し替え(主にコンソール用との差し替え)
// #define PPXCMDID_HOOK_WAITSTATE 0x0bfa // 待機通知用
// #define PPXCMDID_HOOK_LINEINPUT 0x0bfb // tInputEx 差し替え用
#define PPXCMDID_HOOK_POPUPMENU 0x0bfc // TrackPopupMenu 差し替え用
// #define PPXCMDID_HOOK_MSGBOX 0x0bfd // PMessageBox 差し替え用
// #define PPXCMDID_HOOK_WAITKEY 0x0bfe // 1文字キー入力
// #define PPXCMDID_TEMP_WINDOW 0x0bff // フォーカス制御用ウィンドウを取得
//## 0x0c00~0x0fff: 各種コマンド(PPx Moduleとのやりとりに使用する)。
#define PPXCMDID_REPORTPPCCOLUMN 0x0c02 // PPcustにPPcの拡張書式を通知
#define PPXCMDID_REQUIREKEYHOOK 0x0c03 // KeyHookEntryを登録
#define PPXCMDID_REPORTSEARCH 0x0c04 // 検索結果を通知(属性不明)
#define PPXCMDID_REPORTSEARCH_FILE 0x0c05 // 検索結果を通知(ファイル)
#define PPXCMDID_REPORTSEARCH_DIRECTORY 0x0c06 // 検索結果を通知(ディレクトリ)
#define PPXCMDID_REPORTSEARCH_FDATA 0x0c07 // 検索結果を通知(FINDDATA)
#define PPXCMDID_GETCONTROLVARIABLEDATA 0x0c0e // Edit特殊環境変数の値を取得
#define PPXCMDID_SETCONTROLVARIABLEDATA 0x0c0f // Edit特殊環境変数の値を設定
#define PPXCMDID_GETWNDVARIABLEDATA 0x0c10 // 窓別特殊環境変数の値を取得
#define PPXCMDID_SETWNDVARIABLEDATA 0x0c11 // 窓別特殊環境変数の値を設定
#define PPXCMDID_LONG_RESULT 0x0c12 // CMDLINESIZE を越える結果の受付
#define PPXCMDID_PPLIBHANDLE 0x0c13 // PPLIBxx.DLLのHMODULEを取得
#define PPXCMDID_PPLIBPATH 0x0c14 // PPLIBxx.DLLのPATHを取得
#define PPXCMDID_GETPROCVARIABLEDATA 0x0c15 // プロセス特殊環境変数の値を取得
#define PPXCMDID_SETPROCVARIABLEDATA 0x0c16 // プロセス特殊環境変数の値を設定
#define PPXCMDID_NEWAPPINFO 0x0c17 // 新しいPPXAPPINFOを要求
typedef struct {
int flags, datasize;
void (PPXAPI *ThreadEntry)(struct tagPPXAPPINFOW *ppxa, void *data);
void *data;
} PPXCMDID_NEWAPPINFO_STRUCT;
#define NEWAPPINFO_SIMPLE 0 // PPXAPPINFOW のメモリ確保のみ(HeapFreeで解放)。ウィンドウの関連付けなし、既存スレッド、親とのやりとり不可(PP_ExtractMacro内機能に限定)
#define NEWAPPINFO_MESSAGE B0 // メッセージやりとりウィンドウ付き
#define NEWAPPINFO_PARENT B1 // NEWAPPINFO_MESSAGEの親の子ウィンドウ関連づけ
#define NEWAPPINFO_THREAD B2 // 新規スレッド
//#define PPXCMDID_FREE_PPLIBINFO 0x0c18 // PPLIBxx.DLLのPPXAPPINFOを解放
#define PPXCMDID_GETRAWPARAM 0x0c19 // PPXCMDID_COMMAND等の未加工パラメータを取得
#define PPXCMDID_REQUIRE_CLOSETHREAD 0x0c1a // PPXMEVENT_CLOSETHREAD を送信要求
//## 0xff000~0xfffff: 内部用
//-----------------------------------------------------------------------------
#define PPXARESULT(errorcode) ((errorcode) ^ 1) // errorcode を返す時用
#define PPXA_INVALID_FUNCTION PPXARESULT(ERROR_INVALID_FUNCTION) // 0
#define PPXA_NO_ERROR PPXARESULT(NO_ERROR) // 1
typedef struct {
char *buffer; // 展開に必要なパラメータ/展開内容
INT_PTR enumID; // enum処理用バッファ
} PPXCMDENUMSTRUCTA;
typedef struct {
WCHAR *buffer; // 展開に必要なパラメータ/展開内容
INT_PTR enumID; // enum処理用バッファ
} PPXCMDENUMSTRUCTW;
typedef struct {
const TCHAR *param; // コマンド名
TCHAR *dest; // 結果保存先(Max CMDLINESIZE)
const TCHAR *optparam; // パラメータ
} PPXMDLFUNCSTRUCT;
// モジュール共用体
typedef union tagPPXMODULEPARAM {
struct tagPPXMINFOSTRUCT *info;
struct tagPPXMCOMMANDSTRUCT *command;
struct tagPPXMFILEDRAWSTRUCT *draw;
struct tagPPXMKEYHOOKSTRUCT *keyhook;
struct tagPPXMSEARCHSTRUCT *search;
struct tagPPXMEXTLISTBOX *listbox;
} PPXMODULEPARAM;
typedef union {
char str[1];
WCHAR strW[1];
WORD key;
DWORD num;
DWORD nums[1];
int inums[1];
INTHL numhl;
UINTHL unumhl;
DWORD_PTR dptrs[1];
FILETIME ftime;
COLORREF color;
PPXMDLFUNCSTRUCT funcparam; // PPx独自のfunctionを処理するときに使用
PPXCMDENUMSTRUCTA enums; // 列挙処理用
PPXUPTR_INDEX_UPATHA indexpath;
PPXUPTR_ENTRYINFOA entryinfo;
PPXUPTR_TABINDEXSTRA tabidxstr;
} PPXAPPINFOUNIONA;
typedef union {
WCHAR str[1];
WCHAR strW[1];
WORD key;
DWORD num;
DWORD nums[1];
int inums[1];
INTHL numhl;
UINTHL unumhl;
DWORD_PTR dptrs[1];
FILETIME ftime;
COLORREF color;
PPXMDLFUNCSTRUCT funcparam;
PPXCMDENUMSTRUCTW enums;
PPXUPTR_INDEX_UPATHW indexpath;
PPXUPTR_ENTRYINFOW entryinfo;
PPXUPTR_TABINDEXSTRW tabidxstr;
} PPXAPPINFOUNIONW;
typedef DWORD_PTR(USECDECL * PPXAPPINFOFUNCTIONA)(struct tagPPXAPPINFOA *ppxa, DWORD cmdID, void *uptr);
typedef DWORD_PTR(USECDECL * PPXAPPINFOFUNCTIONW)(struct tagPPXAPPINFOW *ppxa, DWORD cmdID, void *uptr);
typedef struct tagPPXAPPINFOA {
PPXAPPINFOFUNCTIONA Function;
const char *Name; // "PPc", "PPv", "PPTray" 等
const char *RegID; // "C_A" 等
HWND hWnd; // この構造体を所有する窓
} PPXAPPINFOA;
typedef struct tagPPXAPPINFOW {
PPXAPPINFOFUNCTIONW Function;
const WCHAR *Name; // "PPc", "PPv", "PPTray" 等
const WCHAR *RegID; // "C_A" 等
HWND hWnd; // この構造体を所有する窓
} PPXAPPINFOW;
#ifdef UNICODE
typedef PPXAPPINFOW PPXAPPINFO;
typedef PPXCMDENUMSTRUCTW PPXCMDENUMSTRUCT;
typedef PPXAPPINFOUNIONW PPXAPPINFOUNION;
typedef PPXAPPINFOFUNCTIONW PPXAPPINFOFUNCTION;
typedef PPXUPTR_INDEX_UPATHW PPXUPTR_INDEX_UPATH;
typedef PPXUPTR_TABINDEXSTRW PPXUPTR_TABINDEXSTR;
typedef PPXUPTR_ENTRYINFOW PPXUPTR_ENTRYINFO;
#else
typedef PPXAPPINFOA PPXAPPINFO;
typedef PPXCMDENUMSTRUCTA PPXCMDENUMSTRUCT;
typedef PPXAPPINFOUNIONA PPXAPPINFOUNION;
typedef PPXAPPINFOFUNCTIONA PPXAPPINFOFUNCTION;
typedef PPXUPTR_INDEX_UPATHA PPXUPTR_INDEX_UPATH;
typedef PPXUPTR_TABINDEXSTRA PPXUPTR_TABINDEXSTR;
typedef PPXUPTR_ENTRYINFOA PPXUPTR_ENTRYINFO;
#endif
typedef struct { // %F で使用する構造体
const TCHAR *source;
TCHAR dest[VFPS];
} PPXCMD_F;
#define SetLongResult(ppxa, pxs, text) \
if ( 1 == (ppxa)->Function((ppxa), PPXCMDID_LONG_RESULT, (text)) ){ \
(pxs).command->resultstring[0] = '\0'; \
}else{ \
if ( wcslen(text) < CMDLINESIZE ){ \
wcscpy((pxs).command->resultstring, text); \
}else{ \
wcscpy((pxs).command->resultstring, L"#length over#"); \
} \
}
#define PPXRCDATA_CUSTOMIZE_LIST 10601 // モジュール毎の追加設定テキスト
#define TIMERID_TIMERMODULE 0xbf00 // - 0xbfff // timer module で使用
#define TIMERID_USER_MIN 0xC000
#define TIMERID_USER_MAX 0xDFFF
//===================================================================その他定数
/*-----------------------------------------------------------------------------
PPXCOMMAND_WM : PPx の RegisterWindowMessage 用文字
これによって、PPx にメッセージを送ることができる。
送信方法は、通常 PostMessage を使用すること。
ex)
WM_PPXCOMMAND = RegisterWindowMessage(PPXCOMMAND_WM);
PostMessage(hPPxWnd, WM_PPXCOMMAND, keyname, param);
keyname は tkey.h に定義された PPx のコマンド
param は keyname に対応したパラメータ(通常は 0)
-----------------------------------------------------------------------------*/
#define PPXCOMMAND_WM "PPxMess"
/*-----------------------------------------------------------------------------
ウィンドウの管理に用いられる定義済み ID。PPxRegist に用いる
ID は REGIDSIZE の char で、
ID[0], ID[1] は PPx の種類を表す文字。以下の define を参照。
ID[3] は 'A'~'Z' の同種 PPx の管理番号
ID[4] = '\0' 固定。
-----------------------------------------------------------------------------*/
#define REGIDSIZE 4
#define REGEXTIDSIZE 8 // 一体化窓の C_Zxyy / Zxyy 形式用(x:一体化窓ID, y:追加ID)
#define PPB_REGID "B_" // PPb
#define PPC_REGID "C_" // PPc
#define PPV_REGID "V_" // PPv
#define PPTRAY_REGID "TR" // PPtray
#define PPCUST_REGID "cs" // PPcust
// PPx の Window class
#ifdef UNICODE
#define PPCWinClass "PaperPlaneCUIW"
#define PPVWinClass "PaperPlaneVUIW"
#define PPTrayWinClass "PPtrayW"
#define PPeditWinClass "PPeditW"
#else
#define PPCWinClass "PaperPlaneCUI"
#define PPVWinClass "PaperPlaneVUI"
#define PPTrayWinClass "PPtray"
#define PPeditWinClass "PPedit"
#endif
#define PPx_DIRECTORY_COMMENTFILE "00_INDEX.TXT"
/*============================================================ Stack Heap 関連
Heap 領域にデータを積み重ねて保管する関数群。
一度に ThSTEP 分だけ確保するため、数K 単位の確保なら有利
・void ThInit(ThSTRUCT *TH); 構造体の初期化を行う
・BOOL ThFree(ThSTRUCT *TH); 確保メモリを解放
・BOOL ThAppend(ThSTRUCT *TH, void *data, SIZE32_T size); データを追加する
data 追加するデータへのポインタ
size 追加するデータの大きさ
・BOOL ThAddString(ThSTRUCT *TH, char *data); 文字列を追加する
data 追加する文字列へのポインタ
・BOOL ThCatString(ThSTRUCT *TH, char *data); 文字列を連結する
data 追加する文字列へのポインタ
※ThAddStringはASCIIZが列挙された形。
※ThCatStringはThAppend/ThAddStringと混同して使用できない
-----------------------------------------------------------------------------*/
#define ThSTEP 4096 // メモリの確保単位
#define ThSTRUCT_InitData {NULL, 0, 0}
typedef struct tagThSTRUCT { // Stack Heap 管理構造体
char *bottom; // 確保したメモリの先頭
DWORD top; // 使用中のメモリの末端
SIZE32_T size; // 確保量
} ThSTRUCT;
extern PPXDLL void PPXAPI ThInit(ThSTRUCT *TH);
extern PPXDLL BOOL PPXAPI ThFree(ThSTRUCT *TH);
extern PPXDLL BOOL PPXAPI ThAppend(ThSTRUCT *TH, const void *data, SIZE32_T size);
extern PPXDLL BOOL PPXAPI ThAddString(ThSTRUCT *TH, const TCHAR *data);
extern PPXDLL BOOL PPXAPI ThCatString(ThSTRUCT *TH, const TCHAR *data);
extern PPXDLL BOOL PPXAPI ThSize(ThSTRUCT *TH, SIZE32_T size);
#define ThPointer(TH, offset) ((char *)((TH)->bottom + (offset)))
#define ThPointerT(TH, offset) ((TCHAR *)(char *)((TH)->bottom + (offset)))
#define ThLast(TH) ((char *)((TH)->bottom + (TH)->top))
#define ThNextAllocSizeS(maxsize) ThSTEP
// 16k
#define ThNextAllocSizeM(maxsize) ( (((maxsize) / 4) + ThSTEP) & ~(ThSTEP - 1) )
// 256k
#define ThNextAllocSizeL(maxsize) ( (((maxsize) / 2) + ThSTEP) & ~(ThSTEP - 1) )
#ifdef UNICODE
// extern PPXDLL BOOL PPXAPI ThAddStringA(ThSTRUCT *TH, const char *data);
extern PPXDLL BOOL PPXAPI ThCatStringA(ThSTRUCT *TH, const char *data);
#else
// #define ThAddStringA ThAddString
#define ThCatStringA ThCatString
#endif
extern PPXDLL BOOL PPXAPI ThSetString(ThSTRUCT *TH, const TCHAR *name, const TCHAR *str);
extern PPXDLL TCHAR * PPXAPI ThAllocString(ThSTRUCT *TH, const TCHAR *name, SIZE32_T strsize);
extern PPXDLL const TCHAR * PPXAPI ThGetString(ThSTRUCT *TH, const TCHAR *name, TCHAR *str, SIZE32_T strlength);
extern PPXDLL TCHAR * PPXAPI ThGetLongString(ThSTRUCT *TH, const TCHAR *name, TCHAR *str, SIZE32_T strlength);
extern PPXDLL BOOL PPXAPI ThEnumString(ThSTRUCT *TH, int index, TCHAR *name, TCHAR *str, SIZE32_T strlength);
// PP_ExtractMacro 内のThGetString (%so) で取得可能な文字列
#define StringVariable_Command_Title "title" // %" の内容
#define StringVariable_Command_Response "response" // %@, %a で生成したパス
#define StringVariable_Command_EditCache "EditText" // %$ で編集した内容
//#define StringVariable_Command_MenuCacheItem "MenuCache1" // %M で選択した項目
//#define StringVariable_Command_MenuCacheText "MenuCache2" // %M で選択した内容
//============================================================== その他
// PPx に SendMessage
#define PPxSendCommand(hWnd, wParam, lParam) SendMessage(hWnd, WM_PPXCOMMAND, wParam, lParam)
/* テンポラリを作成する
attribute:
0 : パスのみ %temp%\ppxtemp\
FILE_ATTRIBUTE_NORMAL : 0bytes ファイル作成 %temp%\ppxtemp\filename
FILE_ATTRIBUTE_DIRECTORY : ディレクトリ作成 %temp%\ppxtemp\dirname
FILE_ATTRIBUTE_LABEL : パスの決定のみ %temp%\ppxtemp\name
FILE_ATTRIBUTE_COMPRESSED : %extracttemp% があれば %temp% の代わりに使用
*/
extern PPXDLL BOOL PPXAPI MakeTempEntry(SIZE32_T bufsize, TCHAR *tempath, DWORD attribute);
// レジストリの文字列を取得する
_Success_(return)
extern PPXDLL BOOL PPXAPI GetRegString(HKEY hKey, const TCHAR *path, const TCHAR *name, _Out_ TCHAR *dest, SIZE32_T destlen);
// PPX.HLP を開く
extern PPXDLL void PPXAPI PPxHelp(HWND hWnd, UINT command, DWORD_PTR data);
// ダイアログで Help 等の補助処理を行う
extern PPXDLL INT_PTR PPXAPI PPxDialogHelper(HWND hDlg, UINT iMsg, WPARAM wParam, LPARAM lParam);
// 同期オブジェクトに付加する文字列を返す(マルチユーザで同時実行するため)
extern PPXDLL const TCHAR * PPXAPI PPxGetSyncTag(void);
// param の算術を行う
#define GetCalc_ResultMaxLength 64
extern PPXDLL BOOL PPXAPI GetCalc(const TCHAR *param, TCHAR *resultstr, int *resultnum);
// CommonControls を使う前に呼び出す
extern PPXDLL HANDLE PPXAPI LoadCommonControls(DWORD usecontrol);
// PPx版 DialogBoxParam。ダイアログのフォント設定を行う
extern PPXDLL INT_PTR PPXAPI PPxDialogBoxParam(HANDLE hinst, const TCHAR *lpszTemplate, HWND hwndOwner, DLGPROC dlgprc, LPARAM lParamInit);
// ダイアログフォント設定済みの DLGITEMTEMPLATE を得る
extern PPXDLL LPDLGTEMPLATE PPXAPI GetDialogTemplate(HWND hParentWnd, HANDLE hinst, LPCTSTR lpszTemplate);
// RunAs 経由で起動していたら、ユーザ名を返す。そうでなければ NULL
extern PPXDLL const TCHAR * PPXAPI CheckRunAs(void);
// WINAPI をまとめて読み込む
typedef struct {
void (WINAPI **APIptr)(); // 取得したAPIへのポインタ(最終なら NULL)
const char *APIname; // 取得するAPIの名前
} LOADWINAPISTRUCT;
// LoadWinAPI mode に使用する値
#define LOADWINAPI_HANDLE 0 // HANDLE を使って読み込み
#define LOADWINAPI_LOAD 1 // LoadLibrary を使って DLL をロード
#define LOADWINAPI_GETMODULE 2 // GetModuleHandle を使って DLL を取得
#define LOADWINAPI_LOAD_ERRMSG 3 // エラーメッセージ付き LOADWINAPI_LOAD
#define LOADWINAPI(ptr, name) {(void (WINAPI **)())&ptr, name}
#define LOADWINAPI1(name) {(void (WINAPI **)())&(D ## name), #name}
#define LOADWINAPI1ND(name) {(void (WINAPI **)())&name, #name}
#define LOADWINAPI1T(name) {(void (WINAPI **)())&(D ## name), #name TAPITAIL}
extern PPXDLL HMODULE PPXAPI LoadWinAPI(const char *DLLname, HMODULE hDLL, LOADWINAPISTRUCT *apis, int mode);
enum {
SYSTEMDLL_COMDLG32 = 0,
SYSTEMDLL_COMCTL32,
SYSTEMDLL_OLEAUT32,
SYSTEMDLL_MPR,
SYSTEMDLL_WINMM,
SYSTEMDLL_IMAGEHLP,
SYSTEMDLL_PSAPI,
SYSTEMDLL_SHCORE,
SYSTEMDLL_SHLWAPI,
SYSTEMDLL_RSTRTMGR,
SYSTEMDLL_ATL,
SYSTEMDLL_ATL100,
SYSTEMDLL_UXTHEME,
SYSTEMDLL_DWMAPI,
SYSTEMDLL_MLANG,
};
PPXDLL HMODULE PPXAPI LoadSystemDLL(DWORD dllID);
extern PPXDLL int PPXAPI GetAccessApplications(const TCHAR *checkpath, TCHAR *text);
//============================================================== 文字列操作関連
// マルチバイト判定 Is????? 用のテーブルを初期化する
extern PPXDLL void PPXAPI FixCharlengthTable(char *table);
// str からオプションを一つ抽出する
// extern PPXDLL UTCHAR PPXAPI GetOption(LPCTSTR *str, TCHAR *param); 1.17 移行, 1.86 廃止
extern PPXDLL UTCHAR PPXAPI GetOptionParameter(LPCTSTR *commandline, TCHAR *optionname, TCHAR **optionparameter);
// str から1パラメータ分を抽出する
extern PPXDLL UTCHAR PPXAPI GetLineParam(LPCTSTR *str, TCHAR *param); // 1.86 移行
extern PPXDLL UTCHAR PPXAPI GetLineParamS(LPCTSTR *str, TCHAR *param, size_t length);
extern PPXDLL void PPXAPI GetQuotedParameter(LPCTSTR *commandline, TCHAR *param, TCHAR *parammax);
// 空白などを読み飛ばす
extern PPXDLL UTCHAR PPXAPI SkipSpace(LPCTSTR *str);
// , / 空白区切りを検出する
extern PPXDLL BOOL PPXAPI NextParameter(LPCTSTR *str);
// 数値を取得する。成功したかどうかは ptr が変化したかで判定する
extern PPXDLL INT_PTR PPXAPI GetNumber(LPCTSTR *ptr);
#define GetDwordNumber(ptr) (DWORD)GetNumber(ptr)
#define GetIntNumber(ptr) (int)GetNumber(ptr)
// 単位付きで取得する
extern PPXDLL BOOL PPXAPI GetSizeNumber(LPCTSTR *ptr, DWORD *Low, DWORD *High);
// 数値を文字列に変換する
// length は最低4+1文字(123k\0)確保する必要あり
#define XFN_SEPARATOR B0 // 区切り文字「,」を追加
#define XFN_RIGHT B1 // 右づめ
#define XFN_LEFT B2 // 左づめ
#define XFN_UNITSPACE B3 // 単位用に1桁確保する
#define XFN_HEXUNIT B4 // 1024単位
#define XFN_MUL B5 // low * high の値を用いる
#define XFN_MINKILO B6 // 少なくとも「k」が付く
#define XFN_DECIMALPOINT B9 // 単位使用時小数点を使用(6桁=小数1桁,7以上=小2桁)
#define XFN_MINUNITMASK (B6 | B7 | B8) // 1:k 2:M 3:G 4:T 5:P 6:E
#define XFN_MINUNITSHIFT 6
#define XFNW_FULL_SEP 26 // 64bit全桁 + XFN_SEPARATOR 12,345,678,901,234,567,890
#define XFNW_FULL_NOSEP 20 // 64bit全桁 12345678901234567890
#define XFNW_FULL32_SEP 13 // 32bit全桁 + XFN_SEPARATOR 1,234,567,890
#define XFNW_FULL32_NOSEP 10 // 32bit全桁 1234567890
extern PPXDLL void PPXAPI FormatNumber(TCHAR *str, DWORD flags, int length, DWORD low, DWORD high);
extern PPXDLL COLORREF PPXAPI GetColor(LPCTSTR *linesrc, BOOL usealias);
// 全角・半角変換 -
extern PPXDLL TCHAR * PPXAPI Strsd(TCHAR *dststr, const TCHAR *srcstr); // 半角→全角
extern PPXDLL TCHAR * PPXAPI Strds(TCHAR *dststr, const TCHAR *srcstr); // 全角→半角
// 大小変換 -------
extern PPXDLL TCHAR * PPXAPI Strupr(TCHAR *str); // 英大文字
extern PPXDLL TCHAR * PPXAPI Strlwr(TCHAR *str); // 英小文字
// Key Code 変換 --
// 「\, ^, &, @」を文字列化
extern PPXDLL TCHAR * PPXAPI PutShiftCode(TCHAR *str, int key);
extern PPXDLL int PPXAPI GetKeyCode(LPCTSTR *ptr); // 文字列からkeycodeを得る
extern PPXDLL void PPXAPI PutKeyCode(TCHAR *str, int key); // keycodeを文字列にする
extern PPXDLL int PPXAPI CheckRegistKey(const TCHAR *src, TCHAR *dest, const TCHAR *type); // キーの正当性をチェックして正規化する
#define CHECKREGISTKEY_RELOADKEY 2
#define CHECKREGISTKEY_OK 1
#define CHECKREGISTKEY_BADNAME -1
#define CHECKREGISTKEY_WARNKEY 0
// テキストからウィンドウハンドルを求める(*focus等で使用)。ないなら NULL
extern PPXDLL HWND PPXAPI GetWindowHandleByText(PPXAPPINFO *ppxa, const TCHAR *param);
//====================================================== 拡張エディットボックス
typedef struct tagTINPUT {
HWND hOwnerWnd; // 親のウィンドウハンドル
WORD hRtype; // 読込ヒストリの種類
WORD hWtype; // 書込ヒストリの種類
const TCHAR *title; // タイトルバーの内容
TCHAR *buff; // 編集文字列格納
SIZE32_T size; // 最大入力文字数
int flag;
#define TIEX_USEREFLINE B0 // 参照行を使う。参照行の内容は"buff"を使用
#define TIEX_USESELECT B1 // 選択範囲の指定を使う
#define TIEX_USEPNBTN B2 // Prev/Nextボタンを使う。要TIEX_USEREFLINE
#define TIEX_ID B3 // %si"Input_ID" が ID
#define TIEX_EXECPRECMD B4 // 予め %si"Input_FirstCmd" を実行する
#define TIEX_REFMODE B5 // Refを始めから使用する
#define TIEX_TOP B6 // 強制前面(SetForegroundWindowを明示指定)
#define TIEX_USEINFO B7 // infoを使用する
#define TIEX_REFTREE B8 // Refは Dir Tree(PPXEDIT_REFTREEと同じ)
#define TIEX_SINGLEREF B9 // Refは すべていれかえ(PPXEDIT_SINGLEREFと同じ)
#define TIEX_REFEXT B10 // 拡張子分離処理有り
#define TIEX_USEOPTBTN B11 // Option Button を用意する
#define TIEX_INSTRSEL B12 // "|"による範囲指定を有効にする(PPXEDIT_INSTRSELと同じ)
#define TIEX_NCHANGE B13 // 更新通知有り。更新があったらK_EDITCHANGEが送信
#define TIEX_LINE_MULTI B14 // 1行編集の複数行版(PPXEDIT_LINE_MULTIと同じ)
#define TIEX_LEAVECANCEL B15 // 非アクティブでキャンセル
#define TIEX_FIXFORPATH B16 // ファイル名に使用できない文字を除去する
#define TIEX_FIXFORDIGIT B17 // 全角数字を半角数字に
#define TIEX_LINE_MULTILINE B18 // 改行を含むテキストの編集
int firstC; // 選択開始位置
int lastC; // 選択終了位置
PPXAPPINFO *info; // TIEX_USEINFOで有効 ( flag !TIEX_USEINFO のとき、tInputExで値がNULLに変更される) (0.37追加)
ThSTRUCT *StringVariable; // TIEX_EXECPRECMD で使用する文字列変数領域(1.64追加)
} TINPUT;
extern PPXDLL int PPXAPI tInput(HWND hWnd, const TCHAR *title, TCHAR *string, int maxlen, WORD readhist, WORD writehist);
extern PPXDLL int PPXAPI tInputEx(TINPUT *tinput);
/*-----------------------------------------------------------------------------
エディットボックスを拡張する
hED 拡張するエディットボックス/コンボボックスのハンドル
maxlen 最大文字列数
defstr 初期文字列
rHist Edit Boxのときに設定するヒストリの内容
wHist Edit Boxのときに設定するヒストリの内容(優先)
flags 下記フラグを使用可能 */
#define PPXEDIT_COMBOBOX B0 // 0:対象はEditBox 1:ComboBox
#define PPXEDIT_USEALT B1 // Alt系の拡張コマンドを使用できるようにする
#define PPXEDIT_TABCOMP B2 // TAB による補完を有効
#define PPXEDIT_JOINTTREE B3 // Dir Tree は 一体型
#define PPXEDIT_NOINCLIST B4 // 自動補完リストを無効にする
// B5 未使用
#define PPXEDIT_WANTENTER B6 // Enter/ESCでWM_COMMANDに キーコード を通知
#define PPXEDIT_WANTEVENT B7 // Event実行有り
#define PPXEDIT_REFTREE B8 // Refは Dir Tree(TIEX_REFTREE)
#define PPXEDIT_SINGLEREF B9 // Refは すべていれかえ(TIEX_SINGLEREF)
#define PPXEDIT_PANEMODE B10 // マウスによるアクティブ時の動作を変える
#define PPXEDIT_WANTALLKEY B11 // ダイアログ用のキーを無効にする
#define PPXEDIT_INSTRSEL B12 // "|"による範囲指定を有効にする(TIEX_INSTRSEL)
#define PPXEDIT_NOWORDBREAK B13 // ES_MULTILINE時に、単語の途中で改行する(Vista以降)
#define PPXEDIT_LINE_MULTI B14 // 1行編集の複数行版(要ES_MULTILINE)(TIEX_LINE_MULTI)
#define PPXEDIT_ENABLE_WIDTH_CHANGE B15 // サイズ変更キー(&\←→)を有効に
#define PPXEDIT_ENABLE_HEIGHT_CHANGE B16 // サイズ変更キー(&\↑↓)を有効に
#define PPXEDIT_ENABLE_SIZE_CHANGE (B15 | B16) // サイズ変更キーを有効に
#define PPXEDIT_DISABLE_CHECKSAVE B17 // (PPe)終了時の保存確認を無効にする
#define PPXEDIT_SAVE_BYCLOSE B18 // (PPe)PPXEDIT_DISABLE_CHECKSAVE有効時、終了時に保存する
#define PPXEDIT_LINE_MULTILINE B19 // 1行編集の複数行編集(要ES_MULTILINE)
// B20 以降は内部で利用
//-----------------------------------------------------------------------------
extern PPXDLL HWND PPXAPI PPxRegistExEdit(PPXAPPINFO *info, HWND hED, int maxlen, const TCHAR *defstr, WORD rHist, WORD wHist, int flags);
//---------------------------------------------------- ファイル検索
#define EXTPATHEXT ".COM;.EXE;.BAT;.CMD"
// flags に指定する値
// 実行ファイル優先処理の方法
#define CMDSEARCH_OFF 0 // 優先なし
#define CMDSEARCH_CURRENT B0 // カレントファイルを優先
// 動作指定
#define CMDSEARCH_MAKELIST B6 // 一覧生成モード
#define CMDSEARCH_NOADDSEP B7 // ディレクトリのとき、「\」を付加しない
#define CMDSEARCH_EDITBOX B8 // エディットボックス用処理
#define CMDSEARCH_MULTI B9 // 複数パラメータ指定のため「"」が必要
#define CMDSEARCH_DIRECTORY B10 // ディレクトリ限定
#define CMDSEARCH_ONE B11 // ループしない
#define CMDSEARCH_FLOAT B12 // 部分一致検索
#define CMDSEARCH_NOUNC B13 // UNCは検索しない
#define CMDSEARCH_ROMA B14 // ローマ字検索(要 romahandle = 0 に初期化)
#define CMDSEARCH_WILDCARD B15 // 「.」区切り検索(要 romahandle = 0 に初期化)
#define CMDSEARCH_REGEXP B5 // 正規表現検索(要 romahandle = 0 に初期化)
// B16 以降は内部で使用する
typedef struct { // 編集処理共通構造体
// 要設定
PPXAPPINFO *info;
HANDLE hF; // ファイル検索用ハンドル
// 設定不要
int cmdsearch; // コマンド検索モード CMDSEARCH_
TCHAR Fsrc[VFPS + 4]; // ファイル検索・連続検索用検索文字列
TCHAR Fname[VFPS]; // ファイル検索・連続検索用キャッシュ
TCHAR *FnameP; // ファイル検索・連続検索用書込位置
TCHAR *Fword;
DWORD_PTR romahandle; // CMDSEARCH_ROMA/CMDSEARCH_WILDCARD 指定時要 0 設定
} ESTRUCT;
typedef struct {
DWORD start, end;
} ECURSOR;
#define GWSF_SPLIT_PARAM B0
#define GWS_BRAKET_NONE 0
#define GWS_BRAKET_LEFT 1
#define GWS_BRAKET_LEFTRIGHT 2
extern PPXDLL int PPXAPI GetWordStrings(TCHAR *line, ECURSOR *cursor, DWORD flags);
extern PPXDLL TCHAR * PPXAPI SearchFileIned(ESTRUCT *ED, TCHAR *line, ECURSOR *cursor, int flags);
// テキストスタック
extern PPXDLL void PPXAPI PushTextStack(TCHAR mode, TCHAR *text);
extern PPXDLL void PPXAPI PopTextStack(TCHAR *mode, TCHAR *text);
// システムフック
extern PPXDLL BOOL PPXAPI PPxHookEdit(int local);
// local: -1:フック解放、0:グローバルフック、1:プロセス内フック
//======================================================== 外部プロセス実行関連
//------------------------------ 実行関係のオプション( %O )
// 0 1 2 3
// 012345678 9012345678901234567890
#define XEO_STRINGS "ABbkcCem\6EOsRrTWpDuPIiNSqxndalv"
#define XEO_STRLENGTH 31 // \0 除く
// B6 が未使用
// マクロ文字展開制御
#define XEO_DIRWILD B0 // A:ディレクトリの末尾を \*.*
#define XEO_NOEXECMARK B12 // R: r オプションを無効にする
#define XEO_EXECMARK B13 // r:マーク全てを対象
#define XEO_DISPONLY B17 // D:メニュー表示用処理
#define XEO_UTF8 B18 // u:レスポンスファイル等でutf-8を使用する
//#define XEO_PATHLHA // :UNLHA32.DLL向けに先頭「-」を変換
#define XEO_PATHSLASH B23 // S:パス区切りを「/」に変更
#define XEO_PATHESCAPE B16 // p:[,]を\[,\]にエスケープ
// 編集制御
#define XEO_INRETURN B5 // C:改行をパラメータに含める
//#define XEO_NOEDITR B6 // e:連続実行時に編集しない
#define XEO_NOEDIT B22 // N:編集しない
// PP_ExtractMacro の extract パラメータ使用時の動作
#define XEO_EXTRACTLONG B8 // -: LONGEXTRACTPARAM を使用している
#define XEO_EXTRACTEXEC B9 // E:展開時に *command を実行する
// ファイル実行時制御
//起動時ウィンドウ
#define XEO_MAX B25 // x:最大化状態で実行
#define XEO_MIN B26 // n:最小化状態で実行
#define XEO_HIDE B27 // d:表示しない
#define XEO_NOACTIVE B28 // a:フォーカス変更無し
#define XEO_LOW B29 // l:実行優先度がLOW
//コンソール関連
#define XEO_USEPPB B1 // B:必ずPPBを使用
#define XEO_NOUSEPPB B2 // b:PPBは使用しない
//コマンドラインシェル関連
#define XEO_NOCMDCMD B3 // k:不明なコマンドをコマンドライン実行しない
#define XEO_USECMD B4 // c:コマンドラインシェルを使用する
#define XEO_NOPIPERDIR B19 // P:パイプ・リダイレクト処理を無効にする
//待機・実行後処理
#define XEO_EXTRACTLOG B7 // m:展開結果をログ出力する
#define XEO_SEQUENTIAL B11 // s:順次実行する
#define XEO_DOWNCSR B10 // O:実行後カーソル移動
#define XEO_DELTEMP B14 // T:レスポンスファイルを削除
#define XEO_WAITKEY B15 // W:キー入力待ち
#define XEO_IGNOREERR B20 // I:エラーを無視して続行する
#define XEO_WAITIDLE B21 // i:起動が完了するまで待つ
#define XEO_WAITQUIET B24 // q:待機中にダイアログを表示しない
//その他
//#define XEO_BATCH B3 // :バッチ実行
#define XEO_NOSCANEXE B30 // v:X_execsによるチェックを行わない
#define XEO_CONSOLE B31 // -:コンソール上で実行(PPb内部用)
extern PPXDLL BOOL PPXAPI ComExec(HWND hOwner, const TCHAR *line, const TCHAR *path);
// GetExecType の戻り値
enum {
GTYPE_ERROR, // 0:ファイルがない等のエラー
GTYPE_GUI, // 1:Win32 GUI
GTYPE_CONSOLE, // 2:Win32 Console/DOS
GTYPE_DATA, // 3:Data/Dir
GTYPE_SHELLEXEC // 4:ShellExe
};
extern PPXDLL int PPXAPI GetExecType(LPCTSTR *name, TCHAR *fpath, const TCHAR *path);
extern PPXDLL ERRORCODE PPXAPI GetExecuteErrorReason(const TCHAR *filename, TCHAR *reason);
extern PPXDLL BOOL PPXAPI CheckExebin(const TCHAR *path, int type);
/*-----------------------------------------------------------------------------
ShellExecute を実行し、エラーがでたら文字列を取得する。
失敗したら NULL を返す ※HINSTANCE は解放不要である
-----------------------------------------------------------------------------*/
extern PPXDLL HANDLE PPXAPI PPxShellExecute(HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFile, LPCTSTR lpParameters, LPCTSTR lpDirectory, int flag, TCHAR *ErrMsg);
//================================================================== マクロ関連
#define CMDLINESIZE 0x400 // コマンドラインの文字数
#define MAXCMDLINESIZE 0x8000 // OSが受付可能なコマンドラインの最大文字数
#define CMDEXE_LENGTH 8000 // CME.EXE の受付可能な文字数
typedef union tagLONGEXTRACTPARAM { // XEO_EXTRACTLONG が有効のときに使用
TCHAR text[CMDLINESIZE]; // CMDLINESIZE を越えない場合の保存先
struct { // 戻り値が ERROR_PARTIAL_COPY のときに使用する
union tagLONGEXTRACTPARAM *id; // 自分自身を示すポインタ(union有効id)
ThSTRUCT th; // 展開先
} longtext;
} LONGEXTRACTPARAM;
#define PP_InitLongParam(param) (((LONGEXTRACTPARAM *)(param))->longtext.id = ((LONGEXTRACTPARAM *)(param)))
#define PP_GetLongParamRAW(param) ((TCHAR *)((LONGEXTRACTPARAM *)(param))->longtext.th.bottom)
#define PP_GetLongParam(param, result) ( ((result) != ERROR_PARTIAL_COPY) ? (param) : PP_GetLongParamRAW(param) )
#define PP_FreeLongParamRAW(param) {ThFree(&((LONGEXTRACTPARAM *)(param))->longtext.th);}
#define PP_FreeLongParam(param, result) {if ( (result) == ERROR_PARTIAL_COPY ) PP_FreeLongParamRAW(param);}
extern PPXDLL void PPXAPI PPxRegGetIInfo(PPXAPPINFO *ptr);
extern PPXDLL ERRORCODE PPXAPI PP_ExtractMacro(HWND hWnd, PPXAPPINFO *ParentInfo, POINT *pos, const TCHAR *param, TCHAR *extract, int flag);
extern PPXDLL LRESULT PPXAPI AnswerExtractCall(PPXAPPINFO *info, WPARAM wParam, LPARAM lParam);
extern PPXDLL const TCHAR * PPXAPI SendExtractCall(HWND hTargetWnd, const TCHAR *src);
// PP_GetExtCommand 戻値
// -1 以外の負の値は、PPEXTRESULT_xxx において、該当実行内容がない場合
#define PPEXTRESULT_NONE -1 // 該当無し
#define PPEXTRESULT_FILE 0
#define PPEXTRESULT_DIR 1 // PP_GetExtCommand では未使用
#define PPEXTRESULT_VFSDIR 2
#define PPEXTRESULT_LINK 3
#define PPEXTRESULT_CLSID 4
extern PPXDLL int PPXAPI PP_GetExtCommand(const TCHAR *src, const TCHAR *ID, TCHAR *cmdbuf, TCHAR *TypeName);
//================================================================ ヒストリ管理
// 書込み指定用
#define PPXH_GENERAL B0 // g 汎用
#define PPXH_NUMBER B1 // n 数字
#define PPXH_COMMAND B10 // h コマンドライン
#define PPXH_DIR B2 // d ディレクトリ
#define PPXH_FILENAME B12 // c ディレクトリ無しのファイル名
#define PPXH_PATH B11 // f フルパスファイル名
#define PPXH_SEARCH B9 // s 検索用文字列
#define PPXH_MASK B13 // m エントリ名マスク(PPCの[F])