mirror of
https://github.com/reactos/reactos
synced 2025-10-06 08:22:58 +02:00
Compare commits
1920 Commits
shell32_19
...
hbelusca/s
Author | SHA1 | Date | |
---|---|---|---|
|
8dde8f19e7 | ||
|
7e89227a00 | ||
|
5f26356079 | ||
|
2aad6b133f | ||
|
fc7a74506b | ||
|
d23d61b63f | ||
|
4879915e54 | ||
|
d24675b63d | ||
|
df5affedce | ||
|
2cdd5eca7b | ||
|
a2777cd828 | ||
|
63935f857f | ||
|
674136bcd0 | ||
|
75db8c633a | ||
|
7b7c378188 | ||
|
9cf9126191 | ||
|
99f0937fd0 | ||
|
cd88a97115 | ||
|
3fe12f1a7c | ||
|
5e3f3f59df | ||
|
85d338ed65 | ||
|
29a56f326a | ||
|
55898a7ffd | ||
|
91af99323f | ||
|
99c0d53413 | ||
|
32d615fc10 | ||
|
0abd920db9 | ||
|
c43a638fc1 | ||
|
18a3d21dd7 | ||
|
6aed3b5117 | ||
|
9164419c9c | ||
|
6190a97df4 | ||
|
365c2c1ce3 | ||
|
e8b88cf879 | ||
|
3e6f65ffcd | ||
|
2d9a4b4a87 | ||
|
8398c9fcfb | ||
|
48c036e7e7 | ||
|
ab0e04c81d | ||
|
50271949e7 | ||
|
6cd97d8423 | ||
|
113b3d6261 | ||
|
cbb6603460 | ||
|
67d5a53839 | ||
|
7c3d3851b8 | ||
|
d73a838245 | ||
|
4321c975c7 | ||
|
13b6972500 | ||
|
3123589edd | ||
|
dc97c0d109 | ||
|
ed27d733f7 | ||
|
7930bed0a1 | ||
|
0d36818422 | ||
|
e47d08fc5a | ||
|
e80cd6760c | ||
|
3d26d76a4c | ||
|
33ac3578fd | ||
|
2d6bbdc6ed | ||
|
ba6e9a09be | ||
|
8ba5f1c1db | ||
|
b4cfc4c1ad | ||
|
bc6c731db3 | ||
|
4fe33fe9d5 | ||
|
e1094e6f8a | ||
|
b84f2a1cdc | ||
|
0a8b421d53 | ||
|
0b366ea122 | ||
|
c752e8c0be | ||
|
ae27ffcddc | ||
|
ca4faec8a3 | ||
|
40955b447c | ||
|
ecb5cae48f | ||
|
3f6af8b848 | ||
|
7e2cd98688 | ||
|
6c7974d91f | ||
|
5a159ad1cc | ||
|
8079fa1a3d | ||
|
77d05dd552 | ||
|
a061747295 | ||
|
82721de625 | ||
|
ee92f4b28e | ||
|
c97c1ad4c5 | ||
|
ad73e17418 | ||
|
063997f2e0 | ||
|
0d10fb814f | ||
|
01fbf25dab | ||
|
1cd08eee52 | ||
|
b631c5d3b1 | ||
|
b399f7d5b4 | ||
|
a01cbc3ac2 | ||
|
4ad83ef095 | ||
|
94a25e66de | ||
|
580574fba8 | ||
|
890b9c0b93 | ||
|
51f3cf0509 | ||
|
abd34b6d90 | ||
|
fe23a4aaeb | ||
|
5d0117de90 | ||
|
a55e9ce19c | ||
|
9046cc97ee | ||
|
e1db293f12 | ||
|
3cc4361cca | ||
|
b50ab0dc68 | ||
|
c3ec1b9ac6 | ||
|
3da9e7e251 | ||
|
6d7648d723 | ||
|
dc0ed6de1e | ||
|
a541a468ba | ||
|
817f89466d | ||
|
c8a3c919e5 | ||
|
4225717dc9 | ||
|
20f1bb4ab8 | ||
|
522c02f335 | ||
|
47d17f59bf | ||
|
1e75ea8a82 | ||
|
38b7a6816c | ||
|
4696996ee2 | ||
|
1bc6c90086 | ||
|
cdb970b653 | ||
|
d56e507e95 | ||
|
ef693390ef | ||
|
4988de4b1d | ||
|
70e8653f23 | ||
|
61fe74030b | ||
|
8df5aac9ba | ||
|
6338913f26 | ||
|
50d260a7f0 | ||
|
ce0460b131 | ||
|
327b6c64a6 | ||
|
eb43a803bd | ||
|
ed7c23fc41 | ||
|
af03438aba | ||
|
e582ca4ad6 | ||
|
4fb2fdbac6 | ||
|
da64119fe6 | ||
|
53518bbab3 | ||
|
f69e256376 | ||
|
0b97a997d2 | ||
|
677f190f4c | ||
|
e0495079cb | ||
|
60f4493a68 | ||
|
bc2621812f | ||
|
8204c6e2fd | ||
|
d7be7486c9 | ||
|
11ea1d6198 | ||
|
a25a4eb7b8 | ||
|
a549a9d8e4 | ||
|
43b3280f69 | ||
|
a6298b5c7a | ||
|
2198247bdf | ||
|
108db8f007 | ||
|
09965760e0 | ||
|
18877737af | ||
|
5246c2cc56 | ||
|
6c2d1c31dd | ||
|
ae02934445 | ||
|
a0eec982ce | ||
|
f22704ad4f | ||
|
503e68f2c9 | ||
|
3285f698fd | ||
|
e0ba2f3372 | ||
|
15c42f3ef8 | ||
|
965230ded4 | ||
|
48a0d8e012 | ||
|
0f81f46387 | ||
|
ac0bcf4a90 | ||
|
96acfcb3dc | ||
|
2b0d1faaa9 | ||
|
a64cccd711 | ||
|
3e97f76a33 | ||
|
a0776922f4 | ||
|
1a162375f9 | ||
|
044f181950 | ||
|
5db69da46b | ||
|
a3d9d0e592 | ||
|
ede7389fb6 | ||
|
06e89b2e81 | ||
|
7c5a8c7a07 | ||
|
762d042a15 | ||
|
bc59daf3d5 | ||
|
2c96a6b614 | ||
|
c2931ef23d | ||
|
2667f238ce | ||
|
7fe8512f4f | ||
|
fda81eea50 | ||
|
3b99e294f5 | ||
|
c2d4acf5ca | ||
|
750bf12256 | ||
|
daf806802a | ||
|
9e8214fa13 | ||
|
190b3da95d | ||
|
57b775ef6e | ||
|
ad8392602e | ||
|
f6f5835d45 | ||
|
a7cbb60ebf | ||
|
cf9f7548d5 | ||
|
0c0062ac9a | ||
|
d234dc2d52 | ||
|
2b43390d04 | ||
|
5a287473fd | ||
|
c0e31793c9 | ||
|
d076146f4e | ||
|
e79c896592 | ||
|
cadfdc554d | ||
|
c7295b2cdf | ||
|
d1b8feb690 | ||
|
9b563d32d2 | ||
|
68c2a28973 | ||
|
e8e770fd14 | ||
|
67c28b723e | ||
|
f4a9f9cde3 | ||
|
521eb0c7c0 | ||
|
0056313e15 | ||
|
69ebfd671d | ||
|
28eb4e726a | ||
|
e151ef9ae1 | ||
|
b9ca9b0061 | ||
|
817c27a54e | ||
|
cb6fc76b8b | ||
|
347ca5f859 | ||
|
2d442956b4 | ||
|
cbc78e0629 | ||
|
603fd832d0 | ||
|
35d46b23f1 | ||
|
8e799e2d3e | ||
|
565a4b359a | ||
|
7bee32d237 | ||
|
2f4bb4084d | ||
|
29235147e2 | ||
|
30226f834d | ||
|
a69532ec4a | ||
|
7ce96fd364 | ||
|
6f83cdfdb3 | ||
|
bd9bb36b18 | ||
|
c08580dee3 | ||
|
90c0562935 | ||
|
b46bf67c2e | ||
|
a8d367089c | ||
|
535fffd824 | ||
|
544f114459 | ||
|
a3102dc0dd | ||
|
6f4d2924f0 | ||
|
8c0ffa6f18 | ||
|
f70a1d03b0 | ||
|
b01b6926a4 | ||
|
98c4379291 | ||
|
3016060883 | ||
|
2d4d5b6359 | ||
|
c908716094 | ||
|
c04377bf03 | ||
|
bbb3b00398 | ||
|
07d55ce1cf | ||
|
ef80b3dde4 | ||
|
515f998f0d | ||
|
db93cb1709 | ||
|
5c3b1c78a7 | ||
|
4bc591c6f0 | ||
|
dc3b208625 | ||
|
b388cb66de | ||
|
76d33ee7f2 | ||
|
0f9bf6abb4 | ||
|
e77da17f68 | ||
|
bebf99aaf1 | ||
|
35dc2f2410 | ||
|
06a35089eb | ||
|
6e277fc0c0 | ||
|
f9d3a50ee3 | ||
|
ad5d8bb477 | ||
|
55f4e2a581 | ||
|
1a6dc01f69 | ||
|
41ff75ce36 | ||
|
e46364314b | ||
|
86e28b67ce | ||
|
be76eb7c91 | ||
|
37b2e791ee | ||
|
49ed915759 | ||
|
3b9b26f912 | ||
|
9d8ea85398 | ||
|
eb39c408af | ||
|
7586fe5c1d | ||
|
a706f6ba78 | ||
|
d4ca55f65e | ||
|
f9325370f5 | ||
|
c9864da823 | ||
|
24a56f89ab | ||
|
116c0cd9a5 | ||
|
ff12fc9fb9 | ||
|
ffd060295d | ||
|
ab72bc06d6 | ||
|
b8e50f787d | ||
|
701b0a3f24 | ||
|
dcf9eb060a | ||
|
45aa8f8111 | ||
|
6beff505d7 | ||
|
cd0bb1af07 | ||
|
6d16d27462 | ||
|
018264f38f | ||
|
1331e2fb02 | ||
|
3693d55404 | ||
|
1f49173f82 | ||
|
3c55252828 | ||
|
f319538d98 | ||
|
0ea48e79fc | ||
|
43beb913da | ||
|
d55f49978d | ||
|
91acf823d8 | ||
|
c0c270e90e | ||
|
75cc5b2b1c | ||
|
8337df2bd1 | ||
|
24e088daa8 | ||
|
d23573beed | ||
|
25e2f5f277 | ||
|
6ac260dcec | ||
|
72fd54a7f4 | ||
|
9229709312 | ||
|
af2ce4d08f | ||
|
1d289fec77 | ||
|
d96f01b5dc | ||
|
1dc8d80ca1 | ||
|
a8ece7e81a | ||
|
565828127f | ||
|
fd331f1494 | ||
|
8b9bf3369c | ||
|
0240a87618 | ||
|
68a8619b7b | ||
|
62c30d1f93 | ||
|
dacdd80390 | ||
|
5f3554a40c | ||
|
5949c20d97 | ||
|
ad9c634efa | ||
|
dd6c1c8843 | ||
|
6d853be981 | ||
|
359c9c7b42 | ||
|
605fa32d45 | ||
|
2a2556c5d0 | ||
|
9452b29c7f | ||
|
21a9f78b2d | ||
|
d383b20b01 | ||
|
7b4f42470f | ||
|
e5517176b8 | ||
|
c25a0e1919 | ||
|
c044201472 | ||
|
93245d385d | ||
|
5b2dcdd03d | ||
|
6cb18bc6a4 | ||
|
95bf896b10 | ||
|
1b85a5fa06 | ||
|
ea34ecc9ec | ||
|
b1de3bfb2b | ||
|
63e5885b37 | ||
|
8feb078692 | ||
|
8d459f2820 | ||
|
05456808e8 | ||
|
83e741c643 | ||
|
ba170757d6 | ||
|
78dc504e72 | ||
|
b8abfa76ca | ||
|
fc6e23d6b8 | ||
|
bb444b93d9 | ||
|
ff282894a8 | ||
|
7fdec96009 | ||
|
f61e14f554 | ||
|
14beaec1d9 | ||
|
76290a6696 | ||
|
31ce37da2a | ||
|
64a59a17b5 | ||
|
938a39aee9 | ||
|
12b3272d9e | ||
|
d72d61fe47 | ||
|
7a810c17e7 | ||
|
c69371cced | ||
|
bedc16d46d | ||
|
f5e54015ee | ||
|
109b84826e | ||
|
d05dcf6a02 | ||
|
e85ef799fe | ||
|
2d79b751a4 | ||
|
ff531eaade | ||
|
0cfc9aba05 | ||
|
608ed5619f | ||
|
3e4d8e6f6c | ||
|
5eea72f61b | ||
|
713a360c74 | ||
|
7589238b68 | ||
|
c4498d751d | ||
|
85fc290bb7 | ||
|
43b181309e | ||
|
34576c7015 | ||
|
9238a1762f | ||
|
91be8bf0a1 | ||
|
ea28951607 | ||
|
a771729e69 | ||
|
b6987d1463 | ||
|
8841e3d7ba | ||
|
5b82ada2ed | ||
|
24b4026ce8 | ||
|
88e24bc463 | ||
|
5329e475db | ||
|
588449c364 | ||
|
6dcf70f398 | ||
|
5070e8960a | ||
|
1538712c0b | ||
|
fc6bf61e4c | ||
|
1cf8759d69 | ||
|
a68406bccf | ||
|
43fc73207d | ||
|
8ba6c66890 | ||
|
84f15b15fb | ||
|
5442f87080 | ||
|
2ed8541dc8 | ||
|
558ab78fc5 | ||
|
0c612980ac | ||
|
fec827eeef | ||
|
36fa628605 | ||
|
e3bfcdf9e2 | ||
|
a9d9f0de86 | ||
|
72a27e6d45 | ||
|
f9a5585870 | ||
|
00c4b3d99f | ||
|
ee0329e0e2 | ||
|
f92972efca | ||
|
6ac153632f | ||
|
a83e40f6d1 | ||
|
f6cf6954eb | ||
|
7dd8a30cf9 | ||
|
f1d2a44859 | ||
|
2449ed5d85 | ||
|
373816c729 | ||
|
54df31ccac | ||
|
752c64d152 | ||
|
5869af7821 | ||
|
1408de02ce | ||
|
f9c93888b7 | ||
|
8d36ad1de6 | ||
|
8eb80987e4 | ||
|
50a15424c8 | ||
|
269907e44c | ||
|
54c816d1f3 | ||
|
d0ce13a0e1 | ||
|
9b1d21dfa0 | ||
|
5e31354ff6 | ||
|
ef4a2497d7 | ||
|
d1207f6f47 | ||
|
f9d2f84d4b | ||
|
0c2cc368e2 | ||
|
202114f3ae | ||
|
7d45bb2a21 | ||
|
c9bab6be25 | ||
|
3b62a89d4d | ||
|
ff790a9111 | ||
|
a8c52fa165 | ||
|
17b0623cf8 | ||
|
2ec785b1ee | ||
|
de5c472033 | ||
|
3be8934107 | ||
|
436cfa94c9 | ||
|
ad748b0b3b | ||
|
2f03b146da | ||
|
d45876b810 | ||
|
2185848fc8 | ||
|
7fff216bed | ||
|
01c05f33dc | ||
|
e27f06b889 | ||
|
10d9e9de05 | ||
|
1ad90967d7 | ||
|
6af1813fda | ||
|
c5e6456377 | ||
|
1af0dbe36e | ||
|
1fbf09f531 | ||
|
dc4992ce4a | ||
|
73d0d24d67 | ||
|
fd9666630e | ||
|
4854a1d7b6 | ||
|
cbad6cef24 | ||
|
c6b8638815 | ||
|
2f6b17593f | ||
|
ab4c0d6afd | ||
|
f132020d8b | ||
|
9ae73010c2 | ||
|
458ca7766f | ||
|
52d0494242 | ||
|
b4c77d377c | ||
|
78f6179051 | ||
|
9c8924c173 | ||
|
bbc455f77c | ||
|
afd39cbc06 | ||
|
88e1675ace | ||
|
5aaead3fdb | ||
|
7b304b5b86 | ||
|
57592b7e22 | ||
|
7f8c502901 | ||
|
bbce6c3fdf | ||
|
64155019df | ||
|
dad056e06a | ||
|
50e5f76212 | ||
|
9a707af2e3 | ||
|
61c4b5f615 | ||
|
b790cfcef1 | ||
|
c8c32db8c5 | ||
|
f4ff0aba2f | ||
|
1e409e6902 | ||
|
6185c66c61 | ||
|
c17a6542ac | ||
|
acb01cf568 | ||
|
8bd071a51e | ||
|
0241b5c4e9 | ||
|
71285dff48 | ||
|
4e10ebed40 | ||
|
5daab33c59 | ||
|
ede65b88bc | ||
|
3e3594e3aa | ||
|
5a30c71e70 | ||
|
56baf8e2e8 | ||
|
352b7f6785 | ||
|
cec7adb97f | ||
|
bf9cac8a67 | ||
|
e6c0081c28 | ||
|
0c65ceca3c | ||
|
fcbcc5b30c | ||
|
e25d7d724d | ||
|
efa86fff9f | ||
|
1ee014525c | ||
|
299abf7c87 | ||
|
b383b70089 | ||
|
0709dff84c | ||
|
e1d334794a | ||
|
def2fe5dc3 | ||
|
c5f93c50dd | ||
|
a69b0c9fd5 | ||
|
3a49e26f13 | ||
|
c0dbde0436 | ||
|
361bf39872 | ||
|
1cc721e6d5 | ||
|
0d43ce7879 | ||
|
c30b284373 | ||
|
4dc4ec2fe4 | ||
|
49b2b1dab1 | ||
|
bb297bc351 | ||
|
de8e1553ec | ||
|
eb96d377d1 | ||
|
bbbcd8ed68 | ||
|
5627da4205 | ||
|
b2d56cf364 | ||
|
24fb46c405 | ||
|
79aaee6aac | ||
|
d1c118b371 | ||
|
2ce5d43a33 | ||
|
2320c37151 | ||
|
c07eb9fb1b | ||
|
0a587b9ccd | ||
|
d325c67223 | ||
|
ea3e66d748 | ||
|
9513d18f93 | ||
|
ea8ce25944 | ||
|
52dd07febd | ||
|
72b405549c | ||
|
fc1712e494 | ||
|
ac870f986d | ||
|
b944563c7b | ||
|
d0e29248e3 | ||
|
e341162dd1 | ||
|
f9a5344254 | ||
|
45321706dc | ||
|
29a5108a4d | ||
|
91caceaf02 | ||
|
0d8a6a30cc | ||
|
e928b42758 | ||
|
f0e45f07e1 | ||
|
f53d7eeb4c | ||
|
059fd8e551 | ||
|
1d1472c78e | ||
|
776c3a3495 | ||
|
d634ef54e4 | ||
|
d1ac33a9bd | ||
|
281f7c4e38 | ||
|
8209aa528b | ||
|
a08b83a90b | ||
|
ed7dc31103 | ||
|
c0b4db14de | ||
|
3768f0893d | ||
|
febb589e00 | ||
|
980ebf0694 | ||
|
69b08be0e0 | ||
|
353edbd3f4 | ||
|
14d3b53cc6 | ||
|
59f8611321 | ||
|
2c0af91ba1 | ||
|
e5db85276e | ||
|
047f1c3d55 | ||
|
9262df661e | ||
|
7d0b5482f6 | ||
|
f53f1334ed | ||
|
0086d05007 | ||
|
a55345be29 | ||
|
b7ad4a2298 | ||
|
b2ec78673d | ||
|
0610bcb3f9 | ||
|
e706083d50 | ||
|
6bc40d36f8 | ||
|
6f91b6c0fe | ||
|
b02dd8eb22 | ||
|
fc3eeb61f3 | ||
|
21e139d1d1 | ||
|
d8adb84641 | ||
|
d11582f0e2 | ||
|
e6cd9de3f1 | ||
|
20efea8fa4 | ||
|
398201dca4 | ||
|
e0b67a2990 | ||
|
fa29a61271 | ||
|
118869f69c | ||
|
8ea93d2ab2 | ||
|
bdcfc6bc8e | ||
|
d8d4d8fa4e | ||
|
16c6f9ecb9 | ||
|
64f0423904 | ||
|
61abe81c2e | ||
|
0ac79d7c45 | ||
|
019872dd12 | ||
|
a7ef18303a | ||
|
e7ac792b11 | ||
|
179c29dc08 | ||
|
b4217c1db4 | ||
|
7d7ea3d43c | ||
|
0a4ed87751 | ||
|
8ceb3e6d33 | ||
|
0e933b7e71 | ||
|
c8fbd6d303 | ||
|
cb3b5272a0 | ||
|
07ec501d69 | ||
|
2f1c6c02c1 | ||
|
9caa57b81c | ||
|
f65bb1fbf2 | ||
|
753f812477 | ||
|
feabd323a2 | ||
|
027bd7a0e3 | ||
|
0dedd17da0 | ||
|
ac72fa9d0d | ||
|
c33cbb2d51 | ||
|
17a7e8bb7c | ||
|
8ad62af971 | ||
|
3fa8e4ca82 | ||
|
8f0657a33b | ||
|
21587a0e32 | ||
|
1ea13606c4 | ||
|
3ed8b90e47 | ||
|
874b5a4e00 | ||
|
edf3cc7a7a | ||
|
a1756b347e | ||
|
46831c537f | ||
|
adf534b284 | ||
|
f4a38a05ec | ||
|
f8cb6458e4 | ||
|
23db429e42 | ||
|
eb55d984c0 | ||
|
24dea07c3c | ||
|
b548b05e89 | ||
|
152af475b1 | ||
|
463fec0503 | ||
|
a6ab8ca780 | ||
|
c6ceae3440 | ||
|
5974982d9c | ||
|
6f874a4656 | ||
|
d18b6fc437 | ||
|
88891d2ce7 | ||
|
c26a2e89eb | ||
|
f0a1d766f1 | ||
|
51a446f966 | ||
|
51f3ef04f2 | ||
|
f0faa45159 | ||
|
475098c8b1 | ||
|
3b60f4fa13 | ||
|
d1b3115afa | ||
|
17c59456cd | ||
|
08afb1f4b4 | ||
|
ee2e256ebf | ||
|
afaa05e366 | ||
|
f8b62abf16 | ||
|
87df3b548e | ||
|
bff31569e6 | ||
|
864aed6bcd | ||
|
362804169d | ||
|
5901716c07 | ||
|
3581a79ebf | ||
|
1f28f715ba | ||
|
7dd3308828 | ||
|
c9c5b3d3ae | ||
|
2bc44bf95c | ||
|
0bce79a50b | ||
|
8bf0854c8e | ||
|
8bfebdf444 | ||
|
34705d1a5d | ||
|
9e43518da5 | ||
|
dff8b93ee2 | ||
|
0be4e4aa6d | ||
|
c858429fb1 | ||
|
290221ef5b | ||
|
913235952c | ||
|
7f1025dcce | ||
|
6b5ee5ccc7 | ||
|
385ac5d4d2 | ||
|
c1dfd580ab | ||
|
5e4fe2cf40 | ||
|
1311537435 | ||
|
934cd46df5 | ||
|
1001b59a06 | ||
|
c0020b6821 | ||
|
b50dfbcee4 | ||
|
883863fa50 | ||
|
d6caac3056 | ||
|
deee8aaec1 | ||
|
c9985e48d3 | ||
|
889cfee653 | ||
|
e480a7d17c | ||
|
6b0ee735c7 | ||
|
a88c85259b | ||
|
6634f66e0e | ||
|
5abf0c76b7 | ||
|
927b183aa9 | ||
|
3ac5de4102 | ||
|
76c898ca8e | ||
|
3056f253e4 | ||
|
f465035cd9 | ||
|
21e759735e | ||
|
f170276fd2 | ||
|
f3ae595df9 | ||
|
062890ac5f | ||
|
e4344ad152 | ||
|
62f645b753 | ||
|
7d77a9713e | ||
|
d3d67bf5bd | ||
|
835942fbf6 | ||
|
85ad46099c | ||
|
92a36b3613 | ||
|
15beb9d754 | ||
|
189e81d131 | ||
|
735b06bf0a | ||
|
bc326b966a | ||
|
9e03f07a71 | ||
|
46edca2036 | ||
|
0b22bf25fc | ||
|
bff61ed75f | ||
|
f805438e70 | ||
|
aa8069b0f8 | ||
|
b9de02ceec | ||
|
a62cc5f9da | ||
|
846980f299 | ||
|
cb97d8eaef | ||
|
559933d6de | ||
|
1c5b5ce8a4 | ||
|
a0d7030a06 | ||
|
82e6688e4d | ||
|
34d63501ba | ||
|
748a2e1655 | ||
|
ab528ac6ae | ||
|
f72d6dd4c5 | ||
|
3306a16e84 | ||
|
9c1cfe0587 | ||
|
619ff7c429 | ||
|
73ba03add1 | ||
|
feb67576dd | ||
|
793ee786cd | ||
|
76f1da5631 | ||
|
d41dec2e07 | ||
|
fb43301bad | ||
|
2505489d29 | ||
|
d4a453ca2e | ||
|
89d8b472af | ||
|
ae54529024 | ||
|
823fdb19d7 | ||
|
96d5b6281d | ||
|
1ee23d33ac | ||
|
a175a88fcb | ||
|
e084cbc7c3 | ||
|
d1097a2b16 | ||
|
fe4a7918d3 | ||
|
bfe233912d | ||
|
cb53a0df1b | ||
|
cd4c1c563b | ||
|
7cf14d6d34 | ||
|
ea06bf8cb1 | ||
|
d089dccdde | ||
|
fd573dee26 | ||
|
c54f935918 | ||
|
10e6061bb9 | ||
|
703e2cd1bb | ||
|
6f90b43f8a | ||
|
293aa53c62 | ||
|
0830e7a445 | ||
|
744c1395fd | ||
|
12056e88eb | ||
|
8080492b39 | ||
|
6294f5b3ff | ||
|
1156249d63 | ||
|
922757e2e3 | ||
|
2c895c986f | ||
|
cbc3ee2287 | ||
|
92db51883a | ||
|
d52b70a73e | ||
|
382836f087 | ||
|
89b685007a | ||
|
3e3d34d97b | ||
|
4c9037fff1 | ||
|
d6b5c19233 | ||
|
fa2715fb6b | ||
|
286d460b45 | ||
|
c8aba5a172 | ||
|
4490a053d0 | ||
|
f51258ae51 | ||
|
4287f07c75 | ||
|
5391eaadff | ||
|
8d1beca119 | ||
|
2f2167abb0 | ||
|
74ff3844cc | ||
|
5719896650 | ||
|
e694e24720 | ||
|
d3ae8258c2 | ||
|
9a9b22aac1 | ||
|
8b5c5fb913 | ||
|
3299e96e91 | ||
|
f105b50c4f | ||
|
22ca537be3 | ||
|
114ef5f14a | ||
|
fe2f718bf2 | ||
|
30ded664fc | ||
|
7aa48a3824 | ||
|
290f6a5ad0 | ||
|
8f62437352 | ||
|
ba7c50edce | ||
|
cf2c1e93a5 | ||
|
97e45e2ad1 | ||
|
5bc6fe88e8 | ||
|
3f6c57279d | ||
|
25ca5ea537 | ||
|
22719c8097 | ||
|
9b2627f4ba | ||
|
5adb252fea | ||
|
84de569349 | ||
|
4d0080db9b | ||
|
8a5fe3818e | ||
|
0b3756044f | ||
|
55a5d7a177 | ||
|
7c2e8c67f1 | ||
|
710df1361c | ||
|
4ee54e2519 | ||
|
7898297c53 | ||
|
9be24a9d51 | ||
|
469e7c6d4e | ||
|
55bc06fa7a | ||
|
0103c55fa8 | ||
|
d882d57046 | ||
|
048ea61adb | ||
|
f320804f24 | ||
|
166d9c8ac1 | ||
|
eba2a77baf | ||
|
7ce3f91993 | ||
|
37344a6dfc | ||
|
4a68b08198 | ||
|
acf170c95d | ||
|
44fa14b337 | ||
|
7c5204b9b2 | ||
|
bf92fa2386 | ||
|
afb132a90b | ||
|
46cf45414c | ||
|
d689cfe158 | ||
|
8d7a8f0ec1 | ||
|
267a1c9cda | ||
|
6df2af2610 | ||
|
90ed686209 | ||
|
90432c1a4c | ||
|
77c5aea41f | ||
|
35f83286c5 | ||
|
b48e77e15b | ||
|
6cde331a89 | ||
|
0e9939bd42 | ||
|
b59bf8a3f4 | ||
|
006bdfa234 | ||
|
f9489f4876 | ||
|
88107adc92 | ||
|
e5548aa501 | ||
|
d6c70f0864 | ||
|
a842a92260 | ||
|
a70ce994f0 | ||
|
f5346cbc1b | ||
|
10bb50b456 | ||
|
86b82e4ce7 | ||
|
40131fd1ca | ||
|
9cfd8dd918 | ||
|
d8108a64a4 | ||
|
8e01ab830b | ||
|
1aeac0bf24 | ||
|
d46d3167a3 | ||
|
b5f9e1c2dc | ||
|
6c93f3ca6b | ||
|
73a1c9d418 | ||
|
d528cc4013 | ||
|
b9e8fb9ea4 | ||
|
cfff2dbd12 | ||
|
ec0695c26b | ||
|
7f1df040ed | ||
|
6e5fde7ebb | ||
|
449a08a6a8 | ||
|
07a22af58b | ||
|
4293704ecb | ||
|
69a925cae8 | ||
|
bfa3e554d4 | ||
|
a8a4703699 | ||
|
434ac241df | ||
|
f4460c3fcd | ||
|
5d9f622eeb | ||
|
6d265d1fd8 | ||
|
0f3da97456 | ||
|
7b410fb8ca | ||
|
81dc30a434 | ||
|
7aec73a76c | ||
|
7b956a0a1f | ||
|
3812996042 | ||
|
f74a2aac8c | ||
|
758fff284d | ||
|
4a3a78857f | ||
|
932aef40f7 | ||
|
fcaa38c705 | ||
|
83bc98f96a | ||
|
48909364db | ||
|
df81dadd9c | ||
|
ffc99d08e8 | ||
|
8943354d17 | ||
|
74a82c831b | ||
|
ffb20d3330 | ||
|
f380a51040 | ||
|
3558b7b985 | ||
|
77653462a9 | ||
|
f2d34ab4c9 | ||
|
eb72347672 | ||
|
50755684cf | ||
|
ac1a96477b | ||
|
19f3d6bd8d | ||
|
1726ee83e7 | ||
|
91b740f900 | ||
|
eaa975c54e | ||
|
c4308d1e49 | ||
|
96d525959b | ||
|
986809c719 | ||
|
4514e91dd6 | ||
|
979551e33e | ||
|
26f8b97886 | ||
|
34068456a5 | ||
|
df9c535542 | ||
|
7d6fc57ec9 | ||
|
814cb188c6 | ||
|
533d877aaf | ||
|
f5b0c66a05 | ||
|
3401a99e0f | ||
|
e6cb6d257a | ||
|
ee73267db8 | ||
|
9277f5352a | ||
|
92942fbbd8 | ||
|
c03899fc7f | ||
|
71df39b027 | ||
|
954598037f | ||
|
209e9a7c1d | ||
|
9d495475f0 | ||
|
0d8e6e781c | ||
|
0b7405abf2 | ||
|
f889c29af6 | ||
|
a449125692 | ||
|
6c438e4530 | ||
|
dfd6d7f32a | ||
|
e0eab48aee | ||
|
5197d36839 | ||
|
52bd0c0c18 | ||
|
6d100d5b29 | ||
|
64378a88ba | ||
|
084fae1eb4 | ||
|
53cc92613f | ||
|
32b81a9157 | ||
|
1d92196d2a | ||
|
f8569465ce | ||
|
7f8d2d14b7 | ||
|
67ca439d06 | ||
|
454901ab0b | ||
|
e638ff59d1 | ||
|
d566273583 | ||
|
1831bc6add | ||
|
e6201ea61e | ||
|
0db5d8a388 | ||
|
eef22cc036 | ||
|
d28bbf458a | ||
|
a3288862e1 | ||
|
ec0a300f2b | ||
|
8f8db4ddb6 | ||
|
54adb5e45c | ||
|
1061ed4d28 | ||
|
1df5225708 | ||
|
b6274fdde1 | ||
|
e8f9564c20 | ||
|
b8cdd1a879 | ||
|
0ba94c83b5 | ||
|
e1c68dcba0 | ||
|
c1f9ea10aa | ||
|
5be53f553c | ||
|
7ffc31554d | ||
|
bf7e7c2383 | ||
|
91d291f766 | ||
|
82c07abf1a | ||
|
8f349ab3c2 | ||
|
bb7661312e | ||
|
63d5423853 | ||
|
bd51cd14d6 | ||
|
474a8ea46b | ||
|
44c7d9ad42 | ||
|
19a0f14bb1 | ||
|
95657698e7 | ||
|
bbe6b07612 | ||
|
f7d612f3e3 | ||
|
80751952ba | ||
|
231ac99414 | ||
|
835438f614 | ||
|
5f0e98ea3c | ||
|
aafe33ca85 | ||
|
f42e9029f7 | ||
|
766a093f70 | ||
|
1a6b6a27b2 | ||
|
86f2d4cd4e | ||
|
fed7ee70a6 | ||
|
e62d12b140 | ||
|
69fb160a48 | ||
|
de7f1ceeef | ||
|
e320346e9e | ||
|
98b2451dfe | ||
|
d55add359c | ||
|
8ab2e5a28a | ||
|
40f17bc9f2 | ||
|
f0179741d1 | ||
|
ae534e8cee | ||
|
3f5fd1d09e | ||
|
d387c799ed | ||
|
1244659d4c | ||
|
946b906ec8 | ||
|
079b36542c | ||
|
a19ba4760e | ||
|
bfd5d37fe6 | ||
|
3a2c2cbe60 | ||
|
db10ce0f9f | ||
|
be8e4c691d | ||
|
9b8a5fc5f0 | ||
|
17617221ce | ||
|
04b1e8945b | ||
|
ea59e93e31 | ||
|
e2b1ee9a53 | ||
|
a837138dfc | ||
|
2de6e7559e | ||
|
045e9dee58 | ||
|
dc2d2232f4 | ||
|
468a5492a9 | ||
|
0b1d6d6b20 | ||
|
0fe0b40ee1 | ||
|
5a2c451696 | ||
|
8be912147b | ||
|
623e857a43 | ||
|
63276e6343 | ||
|
3c2e1c182e | ||
|
053caa1dff | ||
|
8fe995f978 | ||
|
0be73e7253 | ||
|
ec0e51a265 | ||
|
9ecf552fe4 | ||
|
28dcfe246d | ||
|
512715bd89 | ||
|
8f0885d069 | ||
|
ec2465218f | ||
|
2c427f647a | ||
|
5cdee40fa4 | ||
|
2498935acd | ||
|
e198f54624 | ||
|
814b9e3f2c | ||
|
5c77620c17 | ||
|
3d75fddb25 | ||
|
ea858b3d98 | ||
|
a4f4a2b199 | ||
|
9b69ef3692 | ||
|
75de397181 | ||
|
787b41680c | ||
|
5d57e0d81b | ||
|
bd04ddc294 | ||
|
2d8e4911a2 | ||
|
ffb7f0ea1b | ||
|
6b82ed575c | ||
|
39ac6187db | ||
|
53b195f49f | ||
|
3c5bbd4e95 | ||
|
4c9c49aa64 | ||
|
35f386bf0c | ||
|
48e276b180 | ||
|
d7e4bda3ed | ||
|
b7dcc1024b | ||
|
414f3da7a6 | ||
|
e5c5efe2ad | ||
|
b1a9e72e92 | ||
|
d0f6874d92 | ||
|
8c466c3e36 | ||
|
d2a3b1c791 | ||
|
e655594609 | ||
|
0a7255e4bf | ||
|
160980aba1 | ||
|
ba62dd0aaa | ||
|
e1497d43d7 | ||
|
bbe16859b5 | ||
|
6c5b3f203d | ||
|
57c7f06004 | ||
|
230f7c7f3c | ||
|
d8d46a00c3 | ||
|
d87b45bee7 | ||
|
57e7f0b321 | ||
|
e7f6b473e6 | ||
|
0faa1561a6 | ||
|
77ab709b61 | ||
|
a500b513b0 | ||
|
d178e6bb41 | ||
|
0f519a783c | ||
|
02312c7bf1 | ||
|
e4d03f471b | ||
|
0c568c0c90 | ||
|
1797566d73 | ||
|
48456d9108 | ||
|
2dd0c6c32b | ||
|
a6341b49d8 | ||
|
471cceb14f | ||
|
6a7315228c | ||
|
7c5f93a582 | ||
|
0fd51c9fe3 | ||
|
8bc6c8fa56 | ||
|
6295c61f3f | ||
|
51f9b86cbc | ||
|
2f0a5e546f | ||
|
6e449d47e8 | ||
|
d8ba5920a2 | ||
|
30b9be047f | ||
|
75cf6920bc | ||
|
9ea2222967 | ||
|
d795021a75 | ||
|
40b6b1dab3 | ||
|
4bccb6e6c9 | ||
|
f31f9facc9 | ||
|
1cf6ce6b5a | ||
|
2c1dacc0c6 | ||
|
0e42ffb716 | ||
|
98d652e6b7 | ||
|
bb97f0d1c3 | ||
|
77ed2e2fb0 | ||
|
64fe3347e9 | ||
|
212f3eaf00 | ||
|
8ed370c86e | ||
|
5012c6a2b0 | ||
|
e0c17c3f46 | ||
|
84e8ea0dd5 | ||
|
f92c44b217 | ||
|
642c795531 | ||
|
931224fbe1 | ||
|
01a8288d28 | ||
|
8ed5151d33 | ||
|
fce106ab25 | ||
|
2aeda3dc15 | ||
|
ea8a49d81f | ||
|
82e81b2342 | ||
|
a79bd4d0cc | ||
|
8c3f7b1027 | ||
|
12a5971b7a | ||
|
a64a674980 | ||
|
b386ea728f | ||
|
628d4a92e9 | ||
|
75c67f9b51 | ||
|
f630bbce0a | ||
|
76b25a747a | ||
|
f7a4c26322 | ||
|
fb642f727f | ||
|
c00d41d91c | ||
|
e3d97d7dde | ||
|
624b36ad59 | ||
|
d0e1d36009 | ||
|
c7777f5963 | ||
|
af7defb556 | ||
|
f3bd8ffb20 | ||
|
0bfa0cd0d2 | ||
|
90e17817fe | ||
|
9d0b6f3185 | ||
|
d74d4e0395 | ||
|
3b2fdc56bd | ||
|
6783061894 | ||
|
3799d37a48 | ||
|
fd38a6f788 | ||
|
b8598e095d | ||
|
ab0119c61f | ||
|
bd06299059 | ||
|
f710e5a260 | ||
|
898fb5f414 | ||
|
e52379a61c | ||
|
2d5bb5ffbf | ||
|
470d86f1e5 | ||
|
40bc5bf489 | ||
|
c77a5ff99b | ||
|
99efc2ae50 | ||
|
3e83562aa7 | ||
|
84e4ad0a82 | ||
|
f6fb7c48c9 | ||
|
9384e742eb | ||
|
1a3c479b62 | ||
|
0c2827a3f3 | ||
|
bf13ebda44 | ||
|
af4a3fac7d | ||
|
c20b4ca29e | ||
|
96e48dcd01 | ||
|
1aeebfdacb | ||
|
f935132fbe | ||
|
58c26d3fe6 | ||
|
4a52a4b04c | ||
|
c2bb5aa01d | ||
|
df54fb01fd | ||
|
e579220098 | ||
|
5b5aaf6687 | ||
|
6cdaad13bd | ||
|
072965eb0a | ||
|
0e88f0485c | ||
|
f5563ad22c | ||
|
6ddfe7e5dd | ||
|
7f346b1aa3 | ||
|
9578bae858 | ||
|
16b4c9ff3c | ||
|
60c770db67 | ||
|
a95863b132 | ||
|
51a89791c1 | ||
|
4add3fd482 | ||
|
32bdd85b7f | ||
|
5a0cd3743e | ||
|
cbc60aa07a | ||
|
edaeef9418 | ||
|
516ccad340 | ||
|
9e42809fc1 | ||
|
f3141fb29e | ||
|
279f8f8864 | ||
|
27917c14ed | ||
|
fa80176a62 | ||
|
7983b65e10 | ||
|
cce399e772 | ||
|
4db1b0fb62 | ||
|
cc63d8f4a2 | ||
|
d2b8b9ec96 | ||
|
f33da480af | ||
|
54c552392f | ||
|
586bea138e | ||
|
bfcb28787d | ||
|
0d776beac9 | ||
|
99fab7b905 | ||
|
2cc7eeb939 | ||
|
d27ec14822 | ||
|
5ee1dc6113 | ||
|
b578846d82 | ||
|
84216a9ebc | ||
|
d6b7b7adad | ||
|
a96573c4e5 | ||
|
fddc83ef9a | ||
|
af5a3ffedb | ||
|
4939936165 | ||
|
aff1666356 | ||
|
f95c789f2b | ||
|
ede60035f4 | ||
|
80c4856bba | ||
|
b6a0ef10d2 | ||
|
d5cfd83789 | ||
|
6a63d4a3c1 | ||
|
e2988b537a | ||
|
4aeaf747d1 | ||
|
ef754b121a | ||
|
69d7adbebc | ||
|
da18e2893b | ||
|
c9295fbeeb | ||
|
e3f204e228 | ||
|
72081168fb | ||
|
416d63026e | ||
|
0a7a2824cf | ||
|
a6a617f96c | ||
|
a9445f5ff6 | ||
|
444cff7b10 | ||
|
455f330775 | ||
|
908cda5ee4 | ||
|
764e5505a7 | ||
|
a65ebc8a71 | ||
|
a58aee5f5b | ||
|
7c0615fa05 | ||
|
bf95b7e8e5 | ||
|
a2a063a282 | ||
|
8860dc5393 | ||
|
780c2a0375 | ||
|
98353cdb37 | ||
|
a5c3bb5bce | ||
|
1d8ce79080 | ||
|
6438b85605 | ||
|
db219e45c0 | ||
|
cef9f5c4a6 | ||
|
6a6b5ec22c | ||
|
f61f3b0b00 | ||
|
157739a658 | ||
|
3faa56d2c7 | ||
|
24757e30e9 | ||
|
bd0a5498b0 | ||
|
bd9e2d6beb | ||
|
51ba3b1fb4 | ||
|
8025785730 | ||
|
2414a21a38 | ||
|
08820b747e | ||
|
4ada65e875 | ||
|
1313179a32 | ||
|
03dc2ef724 | ||
|
86b6d9dff9 | ||
|
3b25db2f8e | ||
|
f13a7de30c | ||
|
473cb2fe50 | ||
|
146d3f0bfe | ||
|
095791663d | ||
|
5f25a55d64 | ||
|
e038927dd4 | ||
|
85ab39507f | ||
|
1c56c9cd5f | ||
|
3ce9e3b669 | ||
|
b693eddd74 | ||
|
161eb5d375 | ||
|
f49e213943 | ||
|
7901a4c8fe | ||
|
91adec683d | ||
|
3fb5957de1 | ||
|
e07dbf782c | ||
|
8d7153c8ba | ||
|
10e7643c80 | ||
|
413b5a0827 | ||
|
6eb8a1d0c7 | ||
|
f283a3f9ae | ||
|
b4b1c5b9aa | ||
|
7fb91d98f9 | ||
|
23f31cf7b4 | ||
|
bac646f9fe | ||
|
c6ec8d924e | ||
|
8d54c2d433 | ||
|
357189bdea | ||
|
6d7cc0d8ad | ||
|
cb8c554c4c | ||
|
39bec4df92 | ||
|
1d12f6135a | ||
|
e743146a10 | ||
|
1997c12252 | ||
|
ee11747527 | ||
|
83e1193fb2 | ||
|
6ca8eb5c1e | ||
|
7377f14339 | ||
|
9cc4d8994b | ||
|
2b7246fd3c | ||
|
58f1201eae | ||
|
2245dd78f5 | ||
|
a34f1ed03c | ||
|
d4993c67cd | ||
|
840dfdc3a1 | ||
|
86f98baaf8 | ||
|
a3d22bba1a | ||
|
bdf52a9868 | ||
|
51b5d846e9 | ||
|
520cf2294d | ||
|
5ecead80e3 | ||
|
4bd1e81998 | ||
|
393a88a372 | ||
|
565bf9e340 | ||
|
3666f2bdbc | ||
|
a575921e93 | ||
|
df24297a10 | ||
|
dd8029fd0e | ||
|
f1e1ca4ad7 | ||
|
51cc0019f7 | ||
|
3285d2c769 | ||
|
aca3f92a47 | ||
|
5ee25ee392 | ||
|
328a5d87b0 | ||
|
c6ed289383 | ||
|
7cd1e606df | ||
|
416e6ef814 | ||
|
d7b7d36721 | ||
|
6e9d798833 | ||
|
46f67b1970 | ||
|
ff0b63ff2e | ||
|
c6c7fc1182 | ||
|
97bf53eeb8 | ||
|
2b910fc1b3 | ||
|
1795049341 | ||
|
692c0141d3 | ||
|
1e1b176493 | ||
|
dfcf07b825 | ||
|
adeaba1604 | ||
|
0177b1af45 | ||
|
55563fa891 | ||
|
561ad3c1d6 | ||
|
0ae6a509b0 | ||
|
43d6fdf2be | ||
|
7f80d5ee79 | ||
|
1ae6cb7a96 | ||
|
6691cbe889 | ||
|
f6de3881ca | ||
|
efb9128c24 | ||
|
81ba804b55 | ||
|
4b03981846 | ||
|
b3c1f652ec | ||
|
a6c838299c | ||
|
fa4b38d902 | ||
|
56828b82d9 | ||
|
a938d19714 | ||
|
d21def4819 | ||
|
119057800e | ||
|
b69a7460db | ||
|
640d67d12a | ||
|
d7e1bd2705 | ||
|
4aa1bcb72b | ||
|
d7ece626cb | ||
|
e627c3b00e | ||
|
eb4d13c823 | ||
|
a114169c4d | ||
|
a6418c848c | ||
|
37f56d2448 | ||
|
32b883ef2f | ||
|
17530af261 | ||
|
c6c6c62cb5 | ||
|
dabb3f4d61 | ||
|
64997887eb | ||
|
c1b12b3f46 | ||
|
0a951f1112 | ||
|
5d1be078f8 | ||
|
31876ba8c2 | ||
|
b3194e320c | ||
|
25b7447818 | ||
|
8a049d0b68 | ||
|
60b0afc3af | ||
|
6d7aaaade0 | ||
|
ad12c6cdea | ||
|
00f192fa94 | ||
|
87f94aa10c | ||
|
aed376e00f | ||
|
bdae8cf966 | ||
|
46ab34662d | ||
|
64f40e7f30 | ||
|
c9c6902f08 | ||
|
ebcf3cf38e | ||
|
9ed4bf1ed7 | ||
|
06e4f13653 | ||
|
1899a09399 | ||
|
3d4f001084 | ||
|
128e7f5aea | ||
|
a52c713755 | ||
|
ad5df2d199 | ||
|
2ccdd87809 | ||
|
81e936486e | ||
|
9dfb3e8e05 | ||
|
dcc9a2d8f3 | ||
|
8f6b016963 | ||
|
4eace8d762 | ||
|
995f56d1d3 | ||
|
be8a6f8af1 | ||
|
fea414b9ed | ||
|
8cef980ab9 | ||
|
9360423cc2 | ||
|
d831bc4fab | ||
|
23589e9bf1 | ||
|
07ad8c4c11 | ||
|
601bb49c0d | ||
|
de3958dc2b | ||
|
a662bedab8 | ||
|
84d0586ca4 | ||
|
a8b57f0a6b | ||
|
6d701b4b05 | ||
|
ab199cc147 | ||
|
501c2bdd63 | ||
|
5b54477d47 | ||
|
7f5c59a0b3 | ||
|
6f86e11aa2 | ||
|
bc70af4c13 | ||
|
855008d97b | ||
|
c03b2ed9be | ||
|
1fed9475cc | ||
|
ddd1d19b3f | ||
|
ded91e310a | ||
|
63eaf2bd52 | ||
|
171941ad18 | ||
|
b3a25bcf8b | ||
|
fd1e5d53a5 | ||
|
0af84ce12d | ||
|
59d8a77df6 | ||
|
a8e8add0c0 | ||
|
e0545dab15 | ||
|
d9cb169920 | ||
|
7b38f80119 | ||
|
97e53c6963 | ||
|
40d444919e | ||
|
a27b8009e0 | ||
|
3b7c7d8e68 | ||
|
f49919ce5d | ||
|
8f1eb03ad2 | ||
|
e2d3aa7f4a | ||
|
13a145b6d8 | ||
|
8669679499 | ||
|
d955b9321b | ||
|
fd1e158480 | ||
|
5c2ec83fa7 | ||
|
1c4bf2d702 | ||
|
1183e797b4 | ||
|
9a51c8e6c6 | ||
|
70d5c864bc | ||
|
409df2355e | ||
|
4306e261ee | ||
|
bc28675a44 | ||
|
ff3dadf89d | ||
|
a6b281c228 | ||
|
8451230753 | ||
|
62eeb158a5 | ||
|
0c164f081a | ||
|
611d89eb8b | ||
|
63aef3e1fc | ||
|
8d8f4d328c | ||
|
11b706429c | ||
|
9021a14f4a | ||
|
42c93e3cbb | ||
|
ce08851758 | ||
|
e4608f7450 | ||
|
d0b43a399f | ||
|
e685b25e35 | ||
|
d96b3cd45c | ||
|
2a5fd78f1b | ||
|
a8755711b9 | ||
|
f1cff6ef27 | ||
|
1a90009bb9 | ||
|
3579ea7888 | ||
|
d72025649b | ||
|
09bfd96f3b | ||
|
fefb1b7745 | ||
|
4b4638dc55 | ||
|
95c104f29a | ||
|
be5c889cdf | ||
|
46b4b5581d | ||
|
410b1030c0 | ||
|
1a7ab2fe68 | ||
|
6048ebeff9 | ||
|
70f6ed8ee3 | ||
|
47c1dcd023 | ||
|
b66441d581 | ||
|
50f367fa58 | ||
|
34066e475a | ||
|
6528ab8fcb | ||
|
65ce20896a | ||
|
142c35fcce | ||
|
e15d68ba5d | ||
|
3e46a8673d | ||
|
f53be82158 | ||
|
f744bb2994 | ||
|
1aa76275ac | ||
|
ab1868c7bf | ||
|
4ba8af9cae | ||
|
dd54cd32cf | ||
|
c0ea1f96ef | ||
|
f4de5ceb9e | ||
|
8cb56e77a6 | ||
|
7fd6f86803 | ||
|
697a52aa33 | ||
|
08fcf0c58b | ||
|
c6230ba255 | ||
|
8a335a3141 | ||
|
26fe3616fe | ||
|
a4213d491d | ||
|
0e68e27ff6 | ||
|
02df49ebd8 | ||
|
8c76870639 | ||
|
945ee4b2a4 | ||
|
8a4787b384 | ||
|
c84b5007d0 | ||
|
f2a012240f | ||
|
cbc63d876c | ||
|
03283371c1 | ||
|
058b746bbe | ||
|
29c0e23fd4 | ||
|
e69d2e8b89 | ||
|
9ca88bef80 | ||
|
8227c5d380 | ||
|
6133cc016d | ||
|
cf4aa7ea9d | ||
|
5127433416 | ||
|
df053d4e43 | ||
|
389d04650f | ||
|
d1e9fe13de | ||
|
1b3eed58ca | ||
|
cc6e444ceb | ||
|
ed06c06dcb | ||
|
aa84645bcc | ||
|
88808bad8a | ||
|
ed9973f876 | ||
|
bbb33a6ed5 | ||
|
98050f9139 | ||
|
4661bc006d | ||
|
41c99aa60a | ||
|
4407e0aefa | ||
|
4bdfee8e8b | ||
|
56417bfb93 | ||
|
dff55c9d33 | ||
|
6f89a48349 | ||
|
b5c75ce506 | ||
|
903a3dc622 | ||
|
f4d7cccd3c | ||
|
539123c62f | ||
|
29e1a41d07 | ||
|
6c55a3aa2a | ||
|
4651faeaa2 | ||
|
02883d1c16 | ||
|
ebfec38cd1 | ||
|
490fbfb2c5 | ||
|
8d74bc4b46 | ||
|
5da3ed638b | ||
|
6911fab69a | ||
|
3fa90b539e | ||
|
ff5ccb5948 | ||
|
08cc45eef9 | ||
|
6bbf09b6a5 | ||
|
0eecebb1cc | ||
|
1da71e2519 | ||
|
1e06be778b | ||
|
8a54e4c9f6 | ||
|
806da4421c | ||
|
fd626dc163 | ||
|
8650eac76c | ||
|
26a64324e7 | ||
|
d41a4030bc | ||
|
7cbca9ad8a | ||
|
4c8a2a8815 | ||
|
961893a712 | ||
|
5c7a5786fd | ||
|
bcd916bd4e | ||
|
1961d708e7 | ||
|
2a16fc5e19 | ||
|
ea5d2c5f7a | ||
|
e13ebd44c6 | ||
|
d97313181e | ||
|
e4512e6af2 | ||
|
85377ee3db | ||
|
993a45024e | ||
|
0ef9cfb04e | ||
|
7497f028f4 | ||
|
6286475d71 | ||
|
4459b4f42b | ||
|
a1ee35bdb2 | ||
|
f9212e4a72 | ||
|
ce43bf6ba7 | ||
|
4976fba59e | ||
|
6b69202016 | ||
|
9666f00572 | ||
|
97b64c45c6 | ||
|
fdeb169a27 | ||
|
8f6aaa8af6 | ||
|
1d59cf43af | ||
|
f491d7cc99 | ||
|
583be404dd | ||
|
995d255962 | ||
|
6a81e5f4d7 | ||
|
9ce81f6485 | ||
|
195c491880 | ||
|
d9cd760173 | ||
|
2b14056600 | ||
|
289dec6c39 | ||
|
94e0c54c7d | ||
|
3f921d1119 | ||
|
eb6561bbc7 | ||
|
b68a3f329c | ||
|
d55e33d0f3 | ||
|
f0995dac58 | ||
|
3068422d51 | ||
|
c66a1582ac | ||
|
4814dfea01 | ||
|
8dbb800358 | ||
|
67645ab7a8 | ||
|
df9c3de5ba | ||
|
8a0e45031e | ||
|
ed9d2a06b0 | ||
|
f1549bc251 | ||
|
f86fdfb526 | ||
|
a93352fdaf | ||
|
c8a990845b | ||
|
1c254a535c | ||
|
ed134bf2af | ||
|
e31031f603 | ||
|
a0250607f2 | ||
|
72b59e2459 | ||
|
b2294b4c84 | ||
|
0d0ffb7d7d | ||
|
2046a17ef4 | ||
|
823b51558d | ||
|
389377ce2a | ||
|
294ec1e6f4 | ||
|
f23bb1ab76 | ||
|
2263547985 | ||
|
58770200e7 | ||
|
28e771713f | ||
|
c16f93c5f3 | ||
|
8c0c2e2be7 | ||
|
86e0d5e9b8 | ||
|
d8695eee1e | ||
|
4e55236662 | ||
|
e8b048a282 | ||
|
aa719b9989 | ||
|
bea7848fa9 | ||
|
29fbe60abe | ||
|
ff63d06406 | ||
|
d8a4eb3cc9 | ||
|
fc9baff5d7 | ||
|
f90a1956a5 | ||
|
657f728767 | ||
|
017004a0ac | ||
|
32669f6caa | ||
|
33e6490532 | ||
|
a3e6ae2e8a | ||
|
cdba812252 | ||
|
3ae0ccdccb | ||
|
26ffe2f826 | ||
|
ce848e5c11 | ||
|
310563aece | ||
|
a4b0899ca1 | ||
|
4e3bf252d8 | ||
|
21925d935c | ||
|
8d35887c02 | ||
|
8a61e1c33c | ||
|
fd2e4437a8 | ||
|
cad780e17c | ||
|
c175c4f47d | ||
|
8289de6ef7 | ||
|
a42f642ea1 | ||
|
e38f4c2b36 | ||
|
5f3fab72a9 | ||
|
5654ce7b9a | ||
|
edcf3f5363 | ||
|
08629037ea | ||
|
fec935ec24 | ||
|
2ea03b5b22 | ||
|
a2d8e464c8 | ||
|
e7cb6f4920 | ||
|
3a0b53386c | ||
|
dafa00b554 | ||
|
455c1fe1b9 | ||
|
49dbc8fbbb | ||
|
d00d883a21 | ||
|
c332b917dc | ||
|
e04b796534 | ||
|
1f8eda7853 | ||
|
4df4baa391 | ||
|
6c7dc46702 | ||
|
4b5a555161 | ||
|
5472c3e853 | ||
|
df0349b49f | ||
|
56d95154ee | ||
|
c0e443058e | ||
|
80153fc686 | ||
|
9293388c61 | ||
|
e711232042 | ||
|
aa2d2139be | ||
|
442f5dfab5 | ||
|
ab3bd82928 | ||
|
f0d73e0f7f | ||
|
7d2f6b65b3 | ||
|
43b3dc2034 | ||
|
8888311452 | ||
|
5645f7cf8f | ||
|
cf55034cdf | ||
|
2d53e953cd | ||
|
a995d8d614 | ||
|
728d5736d9 | ||
|
9e6b3f4bbd | ||
|
485c03ad03 | ||
|
fa7d5dbf06 | ||
|
c763713475 | ||
|
914f5365c6 | ||
|
2a879e9732 | ||
|
e6ca3952e0 | ||
|
2c9c634a8e | ||
|
732f223ca0 | ||
|
fed97ebf1a | ||
|
0152722bc9 | ||
|
994d5e0ad1 | ||
|
a17dd3a7a9 | ||
|
2549e10c38 | ||
|
49da1cdbeb | ||
|
55e0cab597 | ||
|
f229726da9 | ||
|
3c2bfb570f | ||
|
a970c50a83 | ||
|
153a9a05aa | ||
|
3bb028380a | ||
|
ec0cc847b9 | ||
|
e6c23361a1 | ||
|
97f59fa545 | ||
|
918a818071 | ||
|
c64103d55f | ||
|
28ae9fb738 | ||
|
984284c436 | ||
|
0aa2e82c06 | ||
|
b9958c7be7 | ||
|
893715b722 | ||
|
ba53f72a87 | ||
|
3463a3fba3 | ||
|
016acd170d | ||
|
815d55c378 | ||
|
72ea2d4c26 | ||
|
5a928bc4e2 | ||
|
489834166f | ||
|
64de4661af | ||
|
a83fedcbfa | ||
|
70e05170cf | ||
|
8532f1874a | ||
|
b12ab486d8 | ||
|
ea97c48909 | ||
|
63fae07d12 | ||
|
a6d264e4f0 | ||
|
e4c4894564 | ||
|
9632235a37 | ||
|
5f477e0e3b | ||
|
f350843948 | ||
|
5210ad48c7 | ||
|
520577a8ec | ||
|
b4684e9809 | ||
|
6413024cab | ||
|
365372dc17 | ||
|
2ffcda90b2 | ||
|
ffbc81fdf2 | ||
|
a14019b219 | ||
|
36a35ee203 | ||
|
b4bc6f0a6a | ||
|
7100fa8854 | ||
|
358e45d33a | ||
|
1273bbe417 | ||
|
9bc5b8357a | ||
|
2d7ff7ea33 | ||
|
21e30f3f67 | ||
|
329df0a9e6 | ||
|
2e9d03da90 | ||
|
5b40f6f353 | ||
|
f65c03a28c | ||
|
cf4bb8fced | ||
|
bea6d7635a | ||
|
6bc864acac | ||
|
bd0eaa924d | ||
|
32411dece0 | ||
|
4c21d97d84 | ||
|
9049638dac | ||
|
0160354145 | ||
|
6299340c45 | ||
|
53b30e3f3b | ||
|
50774f865c | ||
|
f8a6542b15 | ||
|
e5993f13f0 | ||
|
6b7efb331c | ||
|
985680068c | ||
|
2010a5b8d9 | ||
|
539c316589 | ||
|
69daff72d2 | ||
|
470ad18825 | ||
|
876769fdd5 | ||
|
047dc9729f | ||
|
7c6e4d38c7 | ||
|
3ae12d5a8c | ||
|
d7de53b6d5 | ||
|
5f014e421b | ||
|
80dd9f5a90 | ||
|
73de609917 | ||
|
918e331970 | ||
|
54d1b39676 | ||
|
477792856e | ||
|
d70e798977 | ||
|
02b65773a3 | ||
|
dcaf5686ce | ||
|
4511e62b10 | ||
|
8f3a09722e | ||
|
41e3badc9a | ||
|
86e9fa717f | ||
|
f9363a6573 | ||
|
5965c10f96 | ||
|
fe440f7514 | ||
|
57ce30b85f | ||
|
1599d7b794 | ||
|
b3d0591e76 | ||
|
dad99e3bd0 | ||
|
02a19c314f | ||
|
57e018acf6 | ||
|
ea331f074c | ||
|
5508673dd5 | ||
|
e387e24611 | ||
|
7b52c287d4 | ||
|
00420aff1f | ||
|
0e8cf6ffd5 | ||
|
6d37456542 | ||
|
f85b8fb564 | ||
|
52bc5f7c5d | ||
|
d02cb099c8 | ||
|
104ef25fcc | ||
|
059427e31d | ||
|
252026352d | ||
|
1c91b0b61d | ||
|
ce2d4740a6 | ||
|
27ebedb367 | ||
|
08d42a7ec7 | ||
|
62eaad1811 | ||
|
ca62121b4d | ||
|
1191bcaf03 | ||
|
d24c991aa7 | ||
|
bf2cec186c | ||
|
bfadb22da1 | ||
|
726c46d2da | ||
|
7b473c1fac | ||
|
aff9e90f31 | ||
|
91e1d4dce3 | ||
|
18815558d1 | ||
|
eba1244b00 | ||
|
97277b4deb | ||
|
8dd3af6d31 | ||
|
fa429c8e2f |
1
.github/FUNDING.yml
vendored
1
.github/FUNDING.yml
vendored
@@ -1,2 +1 @@
|
||||
custom: ['https://reactos.org/donate/', 'https://www.paypal.me/ReactOS']
|
||||
liberapay: ReactOS
|
||||
|
44
.github/labeler.yml
vendored
44
.github/labeler.yml
vendored
@@ -1,29 +1,45 @@
|
||||
# Labelling by the files touched
|
||||
|
||||
ATL:
|
||||
- sdk/lib/atl/**
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- sdk/lib/atl/**
|
||||
|
||||
drivers:
|
||||
- drivers/**
|
||||
- sdk/lib/drivers/**
|
||||
- any: ["win32ss/drivers/**", "!win32ss/drivers/font/**"]
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- drivers/**
|
||||
- sdk/lib/drivers/**
|
||||
- all-globs-to-any-file:
|
||||
- win32ss/drivers/**
|
||||
- '!win32ss/drivers/font/**'
|
||||
|
||||
freeldr:
|
||||
- boot/freeldr/**
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- boot/freeldr/**
|
||||
|
||||
"kernel&hal":
|
||||
- hal/**
|
||||
- ntoskrnl/**
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- hal/**
|
||||
- ntoskrnl/**
|
||||
|
||||
ROSTESTS:
|
||||
- modules/rostests/**
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- modules/rostests/**
|
||||
|
||||
shell:
|
||||
- base/shell/explorer/**
|
||||
- base/shell/rshell/**
|
||||
- dll/shellext/**
|
||||
- dll/win32/browseui/**
|
||||
- dll/win32/shell32/**
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- base/shell/explorer/**
|
||||
- base/shell/rshell/**
|
||||
- dll/shellext/**
|
||||
- dll/win32/browseui/**
|
||||
- dll/win32/shell32/**
|
||||
|
||||
Win32SS:
|
||||
- win32ss/**
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- win32ss/**
|
||||
|
129
.github/workflows/build.yml
vendored
129
.github/workflows/build.yml
vendored
@@ -8,6 +8,12 @@ jobs:
|
||||
compiler: [gcc, clang]
|
||||
arch: [i386, amd64]
|
||||
config: [Debug, Release]
|
||||
dllver: ['0x502', '0x600']
|
||||
exclude:
|
||||
- dllver: 0x600
|
||||
compiler: clang
|
||||
- dllver: 0x600
|
||||
config: Release
|
||||
fail-fast: false
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
@@ -15,12 +21,12 @@ jobs:
|
||||
id: get_rosbe_spec
|
||||
run: |
|
||||
gcc -march=native -Q --help=target | grep "\-march= " | awk '{print $NF}'
|
||||
echo ::set-output name=march-sha::$(gcc -march=native -Q --help=target | sha1sum | awk '{print $1}')
|
||||
echo ::set-output name=git-sha::$(git ls-remote https://github.com/zefklop/RosBE.git | grep unix_amd64 | awk '{print $1}')
|
||||
echo march-sha=$(gcc -march=native -Q --help=target | sha1sum | awk '{print $1}') >> $GITHUB_OUTPUT
|
||||
echo git-sha=$(git ls-remote https://github.com/zefklop/RosBE.git | grep unix_amd64 | awk '{print $1}') >> $GITHUB_OUTPUT
|
||||
wget https://gist.githubusercontent.com/zefklop/b2d6a0b470c70183e93d5285a03f5899/raw/build_rosbe_ci.sh
|
||||
- name: Get RosBE
|
||||
id: get_rosbe
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: RosBE-CI
|
||||
key: RosBE-CI-${{runner.os}}-${{steps.get_rosbe_spec.outputs.march-sha}}-${{steps.get_rosbe_spec.outputs.git-sha}}-${{hashfiles('./build_rosbe_ci.sh')}}
|
||||
@@ -40,16 +46,16 @@ jobs:
|
||||
sudo ./llvm.sh $LLVM_VERSION
|
||||
echo "D_CLANG_VERSION=-DCLANG_VERSION=$LLVM_VERSION" >> $GITHUB_ENV
|
||||
- name: Source checkout
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
path: src
|
||||
- name: Set up cache for ccache
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ccache
|
||||
key: ccache-${{matrix.compiler}}-${{matrix.arch}}-${{matrix.config}}-${{github.sha}}
|
||||
key: ccache-${{matrix.compiler}}-${{matrix.arch}}-${{matrix.config}}-${{matrix.dllver}}-${{github.sha}}
|
||||
restore-keys: |
|
||||
ccache-${{matrix.compiler}}-${{matrix.arch}}-
|
||||
ccache-${{matrix.compiler}}-${{matrix.arch}}-${{matrix.config}}-${{matrix.dllver}}-
|
||||
- name: Set ccache settings
|
||||
run: |
|
||||
echo "CCACHE_BASEDIR=${{github.workspace}}" >> $GITHUB_ENV
|
||||
@@ -60,7 +66,7 @@ jobs:
|
||||
if: ${{ matrix.compiler == 'gcc' }}
|
||||
run: echo "CCACHE_COMPILERCHECK=string:${{steps.get_rosbe_spec.outputs.git-sha}}-${{hashfiles('./build_rosbe_ci.sh')}}" >> $GITHUB_ENV
|
||||
- name: Configure
|
||||
run: echo 'cmake -S ${{github.workspace}}/src -B ${{github.workspace}}/build -G Ninja -DCMAKE_TOOLCHAIN_FILE:FILEPATH=toolchain-${{matrix.compiler}}.cmake -DARCH:STRING=${{matrix.arch}} -DCMAKE_BUILD_TYPE=${{matrix.config}} -DENABLE_CCACHE=1 -DENABLE_ROSTESTS=1 -DENABLE_ROSAPPS=1 ${{env.D_CLANG_VERSION}}' | ${{github.workspace}}/RosBE-CI/RosBE.sh . 0 ${{matrix.arch}}
|
||||
run: echo 'cmake -S ${{github.workspace}}/src -B ${{github.workspace}}/build -G Ninja -DCMAKE_TOOLCHAIN_FILE:FILEPATH=toolchain-${{matrix.compiler}}.cmake -DARCH:STRING=${{matrix.arch}} -DCMAKE_BUILD_TYPE=${{matrix.config}} -DDLL_EXPORT_VERSION=${{matrix.dllver}} -DENABLE_CCACHE=1 -DENABLE_ROSTESTS=1 -DENABLE_ROSAPPS=1 ${{env.D_CLANG_VERSION}}' | ${{github.workspace}}/RosBE-CI/RosBE.sh . 0 ${{matrix.arch}}
|
||||
- name: Build
|
||||
run: echo 'cmake --build ${{github.workspace}}/build -- -k0' | ${{github.workspace}}/RosBE-CI/RosBE.sh . 0 ${{matrix.arch}}
|
||||
- name: Generate ISOs
|
||||
@@ -68,9 +74,9 @@ jobs:
|
||||
- name: Print ccache statistics
|
||||
run: ccache -s
|
||||
- name: Upload ISOs
|
||||
uses: actions/upload-artifact@v2
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: reactos-${{matrix.compiler}}-${{matrix.arch}}-${{matrix.config}}-${{github.sha}}
|
||||
name: reactos-${{matrix.compiler}}-${{matrix.arch}}-${{matrix.config}}-${{matrix.dllver}}-${{github.sha}}
|
||||
path: |
|
||||
build/bootcd.iso
|
||||
build/livecd.iso
|
||||
@@ -78,17 +84,16 @@ jobs:
|
||||
build-msvc:
|
||||
strategy:
|
||||
matrix:
|
||||
os: [windows-latest, windows-2019]
|
||||
toolset: ['14.2', '14.1', '14.0'] # VS 2019, 2017, and 2015 (see below)
|
||||
os: [windows-latest]
|
||||
toolset: ['14','14.2'] # VS 2022, and 2019 (see below)
|
||||
arch: [i386, amd64]
|
||||
config: [Debug, Release]
|
||||
exclude: # VS 2019, 2017 only with windows-latest; VS 2015 only with windows-2019
|
||||
- os: windows-2019
|
||||
toolset: '14.2'
|
||||
- os: windows-2019
|
||||
toolset: '14.1'
|
||||
- os: windows-latest
|
||||
toolset: '14.0'
|
||||
dllver: ['0x502', '0x600']
|
||||
exclude: # Build NT6 ISOs only with the latest toolset when compiled as a debug build
|
||||
- dllver: 0x600
|
||||
toolset: 14.2
|
||||
- dllver: 0x600
|
||||
config: Release
|
||||
fail-fast: false
|
||||
runs-on: ${{matrix.os}}
|
||||
steps:
|
||||
@@ -114,33 +119,33 @@ jobs:
|
||||
arch: amd64
|
||||
toolset: ${{matrix.toolset}}
|
||||
- name: Source checkout
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
path: src
|
||||
- name: Configure
|
||||
run: cmake -S src -B build -G Ninja -DCMAKE_TOOLCHAIN_FILE:FILEPATH=toolchain-msvc.cmake -DARCH:STRING=${{matrix.arch}} -DCMAKE_BUILD_TYPE=${{matrix.config}} -DENABLE_ROSTESTS=1 -DENABLE_ROSAPPS=1
|
||||
run: cmake -S src -B build -G Ninja -DCMAKE_TOOLCHAIN_FILE:FILEPATH=toolchain-msvc.cmake -DARCH:STRING=${{matrix.arch}} -DCMAKE_BUILD_TYPE=${{matrix.config}} -DDLL_EXPORT_VERSION=${{matrix.dllver}} -DENABLE_ROSTESTS=1 -DENABLE_ROSAPPS=1
|
||||
- name: Build
|
||||
run: cmake --build build -- -k0
|
||||
- name: Generate ISOs
|
||||
run: cmake --build build --target bootcd --target livecd
|
||||
- name: Upload ISOs
|
||||
uses: actions/upload-artifact@v2
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: reactos-msvc${{matrix.toolset}}-${{matrix.arch}}-${{matrix.config}}-${{github.sha}}
|
||||
name: reactos-msvc${{matrix.toolset}}-${{matrix.arch}}-${{matrix.config}}-${{matrix.dllver}}-${{github.sha}}
|
||||
path: |
|
||||
build/bootcd.iso
|
||||
build/livecd.iso
|
||||
- name: Upload debug symbols
|
||||
if: ${{ matrix.config == 'Debug' }}
|
||||
uses: actions/upload-artifact@v2
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: reactos-syms-msvc${{matrix.toolset}}-${{matrix.arch}}-${{matrix.config}}-${{github.sha}}
|
||||
name: reactos-syms-msvc${{matrix.toolset}}-${{matrix.arch}}-${{matrix.config}}-${{matrix.dllver}}-${{github.sha}}
|
||||
path: build/msvc_pdb
|
||||
|
||||
build-msvc-arm:
|
||||
strategy:
|
||||
matrix:
|
||||
toolset: ['14.2', '14.1'] # VS 2019, 2017
|
||||
toolset: ['14','14.2'] # VS 2022, 2019
|
||||
arch: [arm, arm64]
|
||||
config: [Debug, Release]
|
||||
fail-fast: false
|
||||
@@ -168,7 +173,7 @@ jobs:
|
||||
arch: amd64_arm64
|
||||
toolset: ${{matrix.toolset}}
|
||||
- name: Source checkout
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
path: src
|
||||
- name: Configure
|
||||
@@ -182,17 +187,21 @@ jobs:
|
||||
- name: Build rosapps
|
||||
if: ${{ matrix.arch == 'arm' }}
|
||||
run: cmake --build build --target modules/rosapps/all
|
||||
- name: Build subsystems
|
||||
if: ${{ matrix.arch == 'arm' }}
|
||||
run: cmake --build build --target subsystems/all
|
||||
- name: Build some applications (arm64)
|
||||
if: ${{ matrix.arch == 'arm64' }}
|
||||
run: cmake --build build --target calc magnify mstsc notepad osk regedit taskmgr winmine wordpad base/applications/screensavers/all -- -k0
|
||||
- name: Upload compiled binaries
|
||||
uses: actions/upload-artifact@v2
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: reactos-msvc${{matrix.toolset}}-${{matrix.arch}}-${{matrix.config}}-${{github.sha}}
|
||||
path: |
|
||||
build/base
|
||||
build/dll/cpl
|
||||
build/modules/rosapps
|
||||
build/subsystems
|
||||
!**/CMakeFiles
|
||||
!**/cmake_install.cmake
|
||||
!**/*.asm
|
||||
@@ -208,11 +217,12 @@ jobs:
|
||||
!**/*.tlb
|
||||
- name: Upload debug symbols
|
||||
if: ${{ matrix.config == 'Debug' }}
|
||||
uses: actions/upload-artifact@v2
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: reactos-syms-msvc${{matrix.toolset}}-${{matrix.arch}}-${{matrix.config}}-${{github.sha}}
|
||||
path: build/msvc_pdb
|
||||
|
||||
# FIXME: Does not boot on toolset 14.1, 14.3+ is untested
|
||||
build-clang-cl:
|
||||
strategy:
|
||||
matrix:
|
||||
@@ -239,17 +249,17 @@ jobs:
|
||||
uses: ilammy/msvc-dev-cmd@v1
|
||||
with:
|
||||
arch: amd64_x86
|
||||
toolset: '14.1' # latest masm build known to make bootable builds
|
||||
toolset: '14'
|
||||
- name: Activate VS cmd (amd64)
|
||||
if: ${{ matrix.arch == 'amd64' }}
|
||||
uses: ilammy/msvc-dev-cmd@v1
|
||||
with:
|
||||
arch: amd64
|
||||
toolset: '14.1' # latest masm build known to make bootable builds
|
||||
toolset: '14'
|
||||
- name: Add LLVM to PATH
|
||||
run: echo "${env:LLVM_PATH}" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
|
||||
- name: Source checkout
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
path: src
|
||||
- name: Configure
|
||||
@@ -259,7 +269,7 @@ jobs:
|
||||
- name: Generate ISOs
|
||||
run: cmake --build build --target bootcd --target livecd
|
||||
- name: Upload ISOs
|
||||
uses: actions/upload-artifact@v2
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: reactos-clang-cl-${{matrix.arch}}-${{matrix.config}}-${{github.sha}}
|
||||
path: |
|
||||
@@ -267,34 +277,33 @@ jobs:
|
||||
build/livecd.iso
|
||||
- name: Upload debug symbols
|
||||
if: ${{ matrix.config == 'Debug' }}
|
||||
uses: actions/upload-artifact@v2
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: reactos-syms-clang-cl-${{matrix.arch}}-${{matrix.config}}-${{github.sha}}
|
||||
path: build/msvc_pdb
|
||||
|
||||
# Disable MSBuild for the moment being until a proper fix is provided -- see CORE-18911
|
||||
# build-msbuild-i386:
|
||||
# name: MSBuild (i386)
|
||||
# runs-on: windows-2019
|
||||
# steps:
|
||||
# - name: Install Flex and Bison
|
||||
# run: |
|
||||
# curl -O https://svn.reactos.org/storage/vperevertkin/flexbison.7z
|
||||
# 7z x flexbison.7z -O${{github.workspace}}\bin
|
||||
# echo "${{github.workspace}}\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
|
||||
# echo "BISON_PKGDATADIR=${{github.workspace}}\bin\share\bison" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
||||
# echo "M4=${{github.workspace}}\bin\m4.exe" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
||||
# - name: Add CL to PATH
|
||||
# uses: ilammy/msvc-dev-cmd@v1
|
||||
# with:
|
||||
# arch: amd64_x86
|
||||
# - uses: actions/checkout@v2
|
||||
# with:
|
||||
# path: src
|
||||
# - name: Configure
|
||||
# run: |
|
||||
# mkdir build
|
||||
# cd build
|
||||
# cmake -G "Visual Studio 16 2019" -A Win32 -DCMAKE_TOOLCHAIN_FILE:FILEPATH=toolchain-msvc.cmake -DARCH:STRING=i386 -DENABLE_ROSTESTS=1 -DENABLE_ROSAPPS=1 ${{github.workspace}}\src
|
||||
# - name: Build
|
||||
# run: cmake --build ${{github.workspace}}\build --target bootcd --target livecd
|
||||
build-msbuild-i386:
|
||||
name: MSBuild (i386)
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- name: Install Flex and Bison
|
||||
run: |
|
||||
curl -O https://svn.reactos.org/storage/vperevertkin/flexbison.7z
|
||||
7z x flexbison.7z -O${{github.workspace}}\bin
|
||||
echo "${{github.workspace}}\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
|
||||
echo "BISON_PKGDATADIR=${{github.workspace}}\bin\share\bison" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
||||
echo "M4=${{github.workspace}}\bin\m4.exe" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
||||
- name: Add CL to PATH
|
||||
uses: ilammy/msvc-dev-cmd@v1
|
||||
with:
|
||||
arch: amd64_x86
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
path: src
|
||||
- name: Configure
|
||||
run: |
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -G "Visual Studio 17 2022" -A Win32 -DCMAKE_TOOLCHAIN_FILE:FILEPATH=toolchain-msvc.cmake -DARCH:STRING=i386 -DENABLE_ROSTESTS=1 -DENABLE_ROSAPPS=1 ${{github.workspace}}\src
|
||||
- name: Build
|
||||
run: cmake --build ${{github.workspace}}\build --target bootcd --target livecd
|
||||
|
4
.github/workflows/labeler.yml
vendored
4
.github/workflows/labeler.yml
vendored
@@ -6,6 +6,6 @@ jobs:
|
||||
triage:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/labeler@v3
|
||||
- uses: actions/labeler@v5
|
||||
with:
|
||||
repo-token: "${{ secrets.GITHUB_TOKEN }}"
|
||||
sync-labels: true
|
||||
|
3
.github/workflows/stale.yml
vendored
3
.github/workflows/stale.yml
vendored
@@ -14,11 +14,10 @@ jobs:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
issues: write
|
||||
pull-requests: write
|
||||
|
||||
steps:
|
||||
- uses: actions/stale@v5
|
||||
- uses: actions/stale@v9
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
days-before-stale: 120
|
||||
|
@@ -232,7 +232,8 @@ Enable this if the module uses typeid or dynamic_cast. You will probably need to
|
||||
-D_WIN32_WINNT=0x502
|
||||
-D_WIN32_WINDOWS=0x502
|
||||
-D_SETUPAPI_VER=0x502
|
||||
-DMINGW_HAS_SECURE_API=1)
|
||||
-DMINGW_HAS_SECURE_API=1
|
||||
-DDLL_EXPORT_VERSION=${DLL_EXPORT_VERSION})
|
||||
|
||||
# Arch Options
|
||||
if(ARCH STREQUAL "i386")
|
||||
@@ -335,14 +336,12 @@ Enable this if the module uses typeid or dynamic_cast. You will probably need to
|
||||
add_subdirectory(sdk/include/reactos/mc)
|
||||
add_subdirectory(sdk/include/asm)
|
||||
|
||||
if(NO_ROSSYM)
|
||||
if(ARCH MATCHES "64$")
|
||||
include(sdk/cmake/baseaddress64.cmake)
|
||||
elseif(NO_ROSSYM)
|
||||
include(sdk/cmake/baseaddress_dwarf.cmake)
|
||||
elseif(MSVC)
|
||||
if (ARCH STREQUAL "amd64")
|
||||
include(sdk/cmake/baseaddress_msvc_x64.cmake)
|
||||
else()
|
||||
include(sdk/cmake/baseaddress_msvc.cmake)
|
||||
endif()
|
||||
include(sdk/cmake/baseaddress_msvc.cmake)
|
||||
else()
|
||||
include(sdk/cmake/baseaddress.cmake)
|
||||
endif()
|
||||
|
@@ -96,7 +96,7 @@
|
||||
# Apisets
|
||||
# M: learn-more, learn_more, Mark Jansen
|
||||
# S: Maintained
|
||||
/dll/apisets/ @learn-more
|
||||
/sdk/lib/apisets/ @learn-more
|
||||
|
||||
# Application Compatibility subystem
|
||||
# M: learn-more, learn_more, Mark Jansen
|
||||
|
@@ -63,13 +63,19 @@ Our commit style is defined in a __[commit template]__. Use it as a reference or
|
||||
|
||||
### Rules and Recommendations
|
||||
|
||||
- *Use your __real name__ and __real email__.* We do not accept anonymous contributions!
|
||||
- *Use your __real name__ and __real email__.* We do not accept anonymous code contributions!
|
||||
- Every commit that changes code or translations should have author's full legal name (in latin letters, diacritics allowed).
|
||||
- It's recommended to have the same full name set in GitHub profile (in the [Name field here][GitHub Profile Settings]) that matches one specified in commits.
|
||||
- There is an exception for media changes, such as changes of art (wallpapers, themes, icons, sounds) and out-of-code documentation.
|
||||
- In these specific cases it's allowed to use a nickname or alias as author's name, and it's recommended to have the same name set in GitHub profile (in the [Name field here][GitHub Profile Settings]) matching one specified in commits.
|
||||
- In any case the author must use a real e-mail address, this includes git commits (`user.email` setting) and GitHub [e-mail settings][GitHub Email Settings] - the checkbox "Keep my email addresses private" must be unchecked there.
|
||||
- In order to *keep your privacy*, select appropriate "Primary email address" that will be applied to your commits in GitHub [e-mail settings][GitHub Email Settings].
|
||||
- *Ensure your contribution is properly described.* Include the relevant issue number if applicable.
|
||||
- *Put only related changes.* It will make reviewing easier as the reviewer needs to recall less information about the existing source code that is changed.
|
||||
- *Search for similar pull requests/patches before submitting.* It may be that a similar pull request or issue was opened previously. Comment and review on that one instead.
|
||||
- *Keep your contribution small and focused on the topic.* It can be tempting to fix existing issues as you come across them while reading the source code. Resist the temptation and put in a note in the source code instead, or (even better) put the issue in the issue tracking system.
|
||||
- *Respect our __[Coding Style]__ and __[Programming Guidelines]__.*
|
||||
- *Do not be afraid to ask questions.* Ask our developers on JIRA or [IRC] channel.
|
||||
- *Do not be afraid to ask questions.* Ask our developers in the [chat].
|
||||
|
||||
To amend your commit with your name and e-mail (in any case you've forgot to set your name/e-mail) please take a look at this [guide](https://reactos.org/wiki/ReactOS_Git_For_Dummies#Amending_your_commit_with_name.2FE-mail). To set your name/e-mail globally for future commits that you push, [read this](https://reactos.org/wiki/ReactOS_Git_For_Dummies#Assign_commits_with_your_name_.26_E-mail_automatically).
|
||||
|
||||
@@ -79,7 +85,7 @@ Finding a good project to start with can be a challenge, because when starting o
|
||||
|
||||
- Find a test that fails, and try to make it succeed: <https://reactos.org/testman/>
|
||||
- Look around in JIRA, and if you have problems finding nice projects to start with, there is a label for this: <https://jira.reactos.org/issues/?jql=labels%20%3D%20starter-project>
|
||||
- Ask for help on [IRC]
|
||||
- Ask for help in the [chat]
|
||||
- Additionally, there are some tests that cause crashes/hangs, but these might be slightly harder: <https://jira.reactos.org/browse/ROSTESTS-125>
|
||||
|
||||
[clean room reverse engineering]: https://en.wikipedia.org/wiki/Clean_room_design
|
||||
@@ -90,12 +96,14 @@ Finding a good project to start with can be a challenge, because when starting o
|
||||
[migration to GitHub]: https://reactos.org/project-news/reactos-repository-migrated-github/
|
||||
[humans are terrible at tracking large amount of information]: https://www.eurekalert.org/pub_releases/2005-03/aps-hmc030805.php
|
||||
[Pull requests]: https://help.github.com/articles/about-pull-requests/
|
||||
[GitHub Profile Settings]: https://github.com/settings/profile
|
||||
[GitHub Email Settings]: https://github.com/settings/emails
|
||||
[tips for reviewing patches]: https://www.drupal.org/patch/review
|
||||
[missing functionality]: https://reactos.org/wiki/Missing_ReactOS_Functionality
|
||||
[patch]: https://git-scm.com/docs/git-format-patch
|
||||
[Submitting Patches]: https://reactos.org/wiki/Submitting_Patches
|
||||
[Coding Style]: https://reactos.org/wiki/Coding_Style
|
||||
[IRC]: https://reactos.org/wiki/Connect_to_the_ReactOS_IRC_Channels
|
||||
[chat]: https://reactos.org/wiki/Mattermost
|
||||
[Programming Guidelines]: https://reactos.org/wiki/Programming_Guidelines
|
||||
[3rd Party Files.txt]: /media/doc/3rd_Party_Files.txt
|
||||
[README.WINE]: /media/doc/README.WINE
|
||||
|
@@ -14,3 +14,17 @@ In addition, in order to avoid coming off as rude to helpful contributors, pleas
|
||||
- Asking the contributor to do unrelated work
|
||||
- Closing without providing a reason
|
||||
- Merging with the intention to rewrite that code soon after
|
||||
|
||||
Before merging a PR, make sure it follows the [contributing rules](CONTRIBUTING.md#rules-and-recommendations), but more importantly:
|
||||
- Make sure the author has specified a real e-mail in all PR commits
|
||||
- If PR contains code or translations, make sure the author has not specified a nickname or alias, but a full legal name in all PR commits
|
||||
- If PR contains media (wallpapers, themes, icons, sounds) or out-of-code documentation, make sure the author has specified the name or alias in all PR commits
|
||||
- If PR contains mixed code with media changes, handle it as PR with code
|
||||
- Important notes before using "Squash and merge" strategy on a PR:
|
||||
- Make sure the author's name in GitHub profile matches one in commits. If this is not the case, ask the author to set it accordingly.
|
||||
- If the author does not want to set the name in GitHub profile:
|
||||
- "no squash merge" label needs to be added to a PR.
|
||||
- Make sure every commit message is formatted correctly as in [.gitmessage](https://github.com/reactos/reactos/blob/master/.gitmessage).
|
||||
- Finally in this case a PR has to be merged either using "Rebase and merge" strategy or manually.
|
||||
- By pressing "Squash and merge" button in a PR you can make sure the author does not use no-reply e-mail -
|
||||
under the commit message there will be a text label saying: `This commit will be authored by <address@email.com>`
|
||||
|
28
README.md
28
README.md
@@ -8,23 +8,17 @@
|
||||
|
||||
<p align=center>
|
||||
<a href="https://reactos.org/project-news/reactos-0414-released/">
|
||||
<img alt="ReactOS 0.4.14 Release" src="https://img.shields.io/badge/release-0.4.14-0688CB.svg">
|
||||
</a>
|
||||
<img alt="ReactOS 0.4.14 Release" src="https://img.shields.io/badge/release-0.4.14-0688CB.svg"></a>
|
||||
<a href="https://reactos.org/download/">
|
||||
<img alt="Download ReactOS" src="https://img.shields.io/badge/download-latest-0688CB.svg">
|
||||
</a>
|
||||
<img alt="Download ReactOS" src="https://img.shields.io/badge/download-latest-0688CB.svg"></a>
|
||||
<a href="https://sourceforge.net/projects/reactos/">
|
||||
<img alt="SourceForge Download" src="https://img.shields.io/sourceforge/dm/reactos.svg?colorB=0688CB">
|
||||
</a>
|
||||
<img alt="SourceForge Download" src="https://img.shields.io/sourceforge/dm/reactos.svg?colorB=0688CB"></a>
|
||||
<a href="https://github.com/reactos/reactos/blob/master/COPYING">
|
||||
<img alt="License" src="https://img.shields.io/badge/license-GNU_GPL_2.0-0688CB.svg">
|
||||
</a>
|
||||
<img alt="License" src="https://img.shields.io/badge/license-GNU_GPL_2.0-0688CB.svg"></a>
|
||||
<a href="https://reactos.org/donate/">
|
||||
<img alt="Donate" src="https://img.shields.io/badge/%24-donate-E44E4A.svg">
|
||||
</a>
|
||||
<img alt="Donate" src="https://img.shields.io/badge/%24-donate-E44E4A.svg"></a>
|
||||
<a href="https://twitter.com/reactos">
|
||||
<img alt="Follow on Twitter" src="https://img.shields.io/twitter/follow/reactos.svg?style=social&label=Follow%20%40reactos">
|
||||
</a>
|
||||
<img alt="Follow on Twitter" src="https://img.shields.io/twitter/follow/reactos.svg?style=social&label=Follow%20%40reactos"></a>
|
||||
</p>
|
||||
|
||||
## Quick Links
|
||||
@@ -56,7 +50,7 @@ The code of ReactOS is licensed under [GNU GPL 2.0](https://github.com/reactos/r
|
||||
To build the system it is strongly advised to use the _ReactOS Build Environment (RosBE)._
|
||||
Up-to-date versions for Windows and for Unix/GNU-Linux are available from our download page at: ["Build Environment"](https://reactos.org/wiki/Build_Environment).
|
||||
|
||||
Alternatively one can use Microsoft Visual C++ (MSVC) version 2015+. Building with MSVC is covered here: ["Visual Studio or Microsoft Visual C++"](https://reactos.org/wiki/CMake#Visual_Studio_or_Microsoft_Visual_C.2B.2B).
|
||||
Alternatively one can use Microsoft Visual C++ (MSVC) version 2019+. Building with MSVC is covered here: ["Visual Studio or Microsoft Visual C++"](https://reactos.org/wiki/CMake#Visual_Studio_or_Microsoft_Visual_C.2B.2B).
|
||||
|
||||
See ["Building ReactOS"](https://reactos.org/wiki/Building_ReactOS) article for more details.
|
||||
|
||||
@@ -127,10 +121,10 @@ The main development is done on [GitHub](https://github.com/reactos/reactos). We
|
||||
There is also an obsolete [SVN archive repository](https://svn.reactos.org/reactos/) that is kept for historical purposes.
|
||||
|
||||
[coverity.badge]: https://scan.coverity.com/projects/205/badge.svg?flat=1
|
||||
[rosbewin.badge]: https://img.shields.io/badge/RosBE_Windows-2.2.0-0688CB.svg
|
||||
[rosbeunix.badge]: https://img.shields.io/badge/RosBE_Unix-2.2-0688CB.svg
|
||||
[rosbewin.badge]: https://img.shields.io/badge/RosBE_Windows-2.2.1-0688CB.svg
|
||||
[rosbeunix.badge]: https://img.shields.io/badge/RosBE_Unix-2.2.1-0688CB.svg
|
||||
[prwelcome.badge]: https://img.shields.io/badge/PR-welcome-0688CB.svg
|
||||
|
||||
[coverity.link]: https://scan.coverity.com/projects/205
|
||||
[rosbewin.link]: https://sourceforge.net/projects/reactos/files/RosBE-Windows/i386/2.2.0/
|
||||
[rosbeunix.link]: https://sourceforge.net/projects/reactos/files/RosBE-Unix/2.2/
|
||||
[rosbewin.link]: https://sourceforge.net/projects/reactos/files/RosBE-Windows/i386/2.2.1/
|
||||
[rosbeunix.link]: https://sourceforge.net/projects/reactos/files/RosBE-Unix/2.2.1/
|
||||
|
@@ -6,6 +6,7 @@ add_subdirectory(charmap)
|
||||
add_subdirectory(clipbrd)
|
||||
add_subdirectory(cmdutils)
|
||||
add_subdirectory(control)
|
||||
add_subdirectory(ctfmon)
|
||||
add_subdirectory(drwtsn32)
|
||||
add_subdirectory(dxdiag)
|
||||
add_subdirectory(extrac32)
|
||||
|
@@ -1,4 +1,11 @@
|
||||
/* Translator: Ștefan Fulea (stefan dot fulea at mail dot com) */
|
||||
/*
|
||||
* PROJECT: ReactOS CACLS
|
||||
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
|
||||
* PURPOSE: Romanian resource file
|
||||
* TRANSLATORS: Copyright 2011-2018 Ștefan Fulea <stefan.fulea@mail.com>
|
||||
* Copyright 2024 Andrei Miloiu <miloiuandrei@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
|
||||
|
||||
STRINGTABLE
|
||||
@@ -34,7 +41,7 @@ Abrevieri:\n\
|
||||
OI - Moștenire obiecte.\n\
|
||||
ACE moștenită de fișiere.\n\
|
||||
IO - Moștenire simplă.\n\
|
||||
ACE neaplicată dosarelor/fișierelor curente.\n"
|
||||
ACE neaplicată folderelor/fișierelor curente.\n"
|
||||
IDS_ABBR_CI "(CI)"
|
||||
IDS_ABBR_OI "(OI)"
|
||||
IDS_ABBR_IO "(IO)"
|
||||
|
@@ -1,5 +1,4 @@
|
||||
#ifndef __CALC_H__
|
||||
#define __CALC_H__
|
||||
#pragma once
|
||||
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
@@ -16,6 +15,7 @@
|
||||
#include <htmlhelp.h>
|
||||
#endif
|
||||
#include <limits.h>
|
||||
#include <strsafe.h>
|
||||
|
||||
/* RESOURCES */
|
||||
#include "resource.h"
|
||||
@@ -280,5 +280,3 @@ INT_PTR CALLBACK AboutDlgProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp);
|
||||
void ConvExecute(HWND hWnd);
|
||||
void ConvAdjust(HWND hWnd, int n_cat);
|
||||
void ConvInit(HWND hWnd);
|
||||
|
||||
#endif /* __CALC_H__ */
|
||||
|
@@ -8,7 +8,7 @@ LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX 0, 0, 316, 163
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX CW_USEDEFAULT16, 0, 316, 163
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Калкулатор за ReactOS"
|
||||
MENU IDR_MENU_SCIENTIFIC_1
|
||||
@@ -156,7 +156,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_STANDARD DIALOGEX 0, 0, 169, 128
|
||||
IDD_DIALOG_STANDARD DIALOGEX CW_USEDEFAULT16, 0, 169, 128
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Калкулатор за ReactOS"
|
||||
MENU IDR_MENU_STANDARD
|
||||
@@ -221,7 +221,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_CONVERSION DIALOGEX 0, 0, 320, 130
|
||||
IDD_DIALOG_CONVERSION DIALOGEX CW_USEDEFAULT16, 0, 320, 130
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Калкулатор за ReactOS"
|
||||
MENU IDR_MENU_STANDARD
|
||||
|
@@ -7,7 +7,7 @@ LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX 0, 0, 316, 163
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX CW_USEDEFAULT16, 0, 316, 163
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS kalkulačka"
|
||||
MENU IDR_MENU_SCIENTIFIC_1
|
||||
@@ -155,7 +155,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_STANDARD DIALOGEX 0, 0, 169, 128
|
||||
IDD_DIALOG_STANDARD DIALOGEX CW_USEDEFAULT16, 0, 169, 128
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS Kalkulačka"
|
||||
MENU IDR_MENU_STANDARD
|
||||
@@ -220,7 +220,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_CONVERSION DIALOGEX 0, 0, 320, 130
|
||||
IDD_DIALOG_CONVERSION DIALOGEX CW_USEDEFAULT16, 0, 320, 130
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS Kalkulačka"
|
||||
MENU IDR_MENU_STANDARD
|
||||
|
@@ -2,7 +2,7 @@ LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX 0, 0, 316, 163
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX CW_USEDEFAULT16, 0, 316, 163
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS Rechner"
|
||||
MENU IDR_MENU_SCIENTIFIC_1
|
||||
@@ -150,7 +150,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_STANDARD DIALOGEX 0, 0, 169, 128
|
||||
IDD_DIALOG_STANDARD DIALOGEX CW_USEDEFAULT16, 0, 169, 128
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS Rechner"
|
||||
MENU IDR_MENU_STANDARD
|
||||
@@ -215,7 +215,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_CONVERSION DIALOGEX 0, 0, 320, 130
|
||||
IDD_DIALOG_CONVERSION DIALOGEX CW_USEDEFAULT16, 0, 320, 130
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS Rechner"
|
||||
MENU IDR_MENU_STANDARD
|
||||
|
@@ -2,7 +2,7 @@ LANGUAGE LANG_GREEK, SUBLANG_DEFAULT
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX 0, 0, 316, 163
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX CW_USEDEFAULT16, 0, 316, 163
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Αριθμομηχανή"
|
||||
MENU IDR_MENU_SCIENTIFIC_1
|
||||
@@ -150,7 +150,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_STANDARD DIALOGEX 0, 0, 169, 128
|
||||
IDD_DIALOG_STANDARD DIALOGEX CW_USEDEFAULT16, 0, 169, 128
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Αριθμομηχανή"
|
||||
MENU IDR_MENU_STANDARD
|
||||
@@ -215,7 +215,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_CONVERSION DIALOGEX 0, 0, 320, 130
|
||||
IDD_DIALOG_CONVERSION DIALOGEX CW_USEDEFAULT16, 0, 320, 130
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Αριθμομηχανή"
|
||||
MENU IDR_MENU_STANDARD
|
||||
|
@@ -2,7 +2,7 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX 0, 0, 316, 163
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX CW_USEDEFAULT16, 0, 316, 163
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS Calculator"
|
||||
MENU IDR_MENU_SCIENTIFIC_1
|
||||
@@ -150,7 +150,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_STANDARD DIALOGEX 0, 0, 169, 128
|
||||
IDD_DIALOG_STANDARD DIALOGEX CW_USEDEFAULT16, 0, 169, 128
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS Calculator"
|
||||
MENU IDR_MENU_STANDARD
|
||||
@@ -215,7 +215,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_CONVERSION DIALOGEX 0, 0, 320, 130
|
||||
IDD_DIALOG_CONVERSION DIALOGEX CW_USEDEFAULT16, 0, 320, 130
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS Calculator"
|
||||
MENU IDR_MENU_STANDARD
|
||||
|
@@ -8,7 +8,7 @@ LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX 0, 0, 316, 163
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX CW_USEDEFAULT16, 0, 316, 163
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Calculadora de ReactOS"
|
||||
MENU IDR_MENU_SCIENTIFIC_1
|
||||
@@ -156,7 +156,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_STANDARD DIALOGEX 0, 0, 169, 128
|
||||
IDD_DIALOG_STANDARD DIALOGEX CW_USEDEFAULT16, 0, 169, 128
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Calculadora de ReactOS"
|
||||
MENU IDR_MENU_STANDARD
|
||||
@@ -221,7 +221,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_CONVERSION DIALOGEX 0, 0, 320, 130
|
||||
IDD_DIALOG_CONVERSION DIALOGEX CW_USEDEFAULT16, 0, 320, 130
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Calculadora de ReactOS"
|
||||
MENU IDR_MENU_STANDARD
|
||||
|
@@ -2,7 +2,7 @@ LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX 0, 0, 316, 163
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX CW_USEDEFAULT16, 0, 316, 163
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Calculatrice ReactOS"
|
||||
MENU IDR_MENU_SCIENTIFIC_1
|
||||
@@ -150,7 +150,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_STANDARD DIALOGEX 0, 0, 169, 128
|
||||
IDD_DIALOG_STANDARD DIALOGEX CW_USEDEFAULT16, 0, 169, 128
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Calculatrice ReactOS"
|
||||
MENU IDR_MENU_STANDARD
|
||||
@@ -215,7 +215,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_CONVERSION DIALOGEX 0, 0, 320, 130
|
||||
IDD_DIALOG_CONVERSION DIALOGEX CW_USEDEFAULT16, 0, 320, 130
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Calculatrice ReactOS"
|
||||
MENU IDR_MENU_STANDARD
|
||||
|
@@ -4,7 +4,7 @@ LANGUAGE LANG_HEBREW, SUBLANG_DEFAULT
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX 0, 0, 316, 163
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX CW_USEDEFAULT16, 0, 316, 163
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
EXSTYLE WS_EX_LAYOUTRTL
|
||||
CAPTION "מחשבון ReactOS"
|
||||
@@ -153,7 +153,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_STANDARD DIALOGEX 0, 0, 169, 128
|
||||
IDD_DIALOG_STANDARD DIALOGEX CW_USEDEFAULT16, 0, 169, 128
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
EXSTYLE WS_EX_LAYOUTRTL
|
||||
CAPTION "מחשבון ReactOS"
|
||||
@@ -219,7 +219,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_CONVERSION DIALOGEX 0, 0, 320, 130
|
||||
IDD_DIALOG_CONVERSION DIALOGEX CW_USEDEFAULT16, 0, 320, 130
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
EXSTYLE WS_EX_LAYOUTRTL
|
||||
CAPTION "מחשבון ReactOS"
|
||||
|
@@ -10,7 +10,7 @@ LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX 0, 0, 316, 163
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX CW_USEDEFAULT16, 0, 316, 163
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS Számológép"
|
||||
MENU IDR_MENU_SCIENTIFIC_1
|
||||
@@ -158,7 +158,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_STANDARD DIALOGEX 0, 0, 169, 128
|
||||
IDD_DIALOG_STANDARD DIALOGEX CW_USEDEFAULT16, 0, 169, 128
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS Számológép"
|
||||
MENU IDR_MENU_STANDARD
|
||||
@@ -223,7 +223,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_CONVERSION DIALOGEX 0, 0, 320, 130
|
||||
IDD_DIALOG_CONVERSION DIALOGEX CW_USEDEFAULT16, 0, 320, 130
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS Számológép"
|
||||
MENU IDR_MENU_STANDARD
|
||||
|
@@ -9,7 +9,7 @@ LANGUAGE LANG_INDONESIAN, SUBLANG_DEFAULT
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX 0, 0, 316, 163
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX CW_USEDEFAULT16, 0, 316, 163
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Kalkulator ReactOS"
|
||||
MENU IDR_MENU_SCIENTIFIC_1
|
||||
@@ -157,7 +157,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_STANDARD DIALOGEX 0, 0, 169, 128
|
||||
IDD_DIALOG_STANDARD DIALOGEX CW_USEDEFAULT16, 0, 169, 128
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Kalkulator ReactOS"
|
||||
MENU IDR_MENU_STANDARD
|
||||
@@ -222,7 +222,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_CONVERSION DIALOGEX 0, 0, 320, 130
|
||||
IDD_DIALOG_CONVERSION DIALOGEX CW_USEDEFAULT16, 0, 320, 130
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Kalkulator ReactOS"
|
||||
MENU IDR_MENU_STANDARD
|
||||
|
@@ -2,7 +2,7 @@ LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX 0, 0, 316, 163
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX CW_USEDEFAULT16, 0, 316, 163
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Calcolatrice ReactOS"
|
||||
MENU IDR_MENU_SCIENTIFIC_1
|
||||
@@ -150,7 +150,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_STANDARD DIALOGEX 0, 0, 169, 128
|
||||
IDD_DIALOG_STANDARD DIALOGEX CW_USEDEFAULT16, 0, 169, 128
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Calcolatrice ReactOS"
|
||||
MENU IDR_MENU_STANDARD
|
||||
@@ -215,7 +215,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_CONVERSION DIALOGEX 0, 0, 320, 130
|
||||
IDD_DIALOG_CONVERSION DIALOGEX CW_USEDEFAULT16, 0, 320, 130
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Calcolatrice ReactOS"
|
||||
MENU IDR_MENU_STANDARD
|
||||
|
@@ -2,7 +2,7 @@ LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX 0, 0, 316, 163
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX CW_USEDEFAULT16, 0, 316, 163
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS 電卓"
|
||||
MENU IDR_MENU_SCIENTIFIC_1
|
||||
@@ -150,7 +150,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_STANDARD DIALOGEX 0, 0, 169, 128
|
||||
IDD_DIALOG_STANDARD DIALOGEX CW_USEDEFAULT16, 0, 169, 128
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS 電卓"
|
||||
MENU IDR_MENU_STANDARD
|
||||
@@ -215,7 +215,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_CONVERSION DIALOGEX 0, 0, 320, 130
|
||||
IDD_DIALOG_CONVERSION DIALOGEX CW_USEDEFAULT16, 0, 320, 130
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS 電卓"
|
||||
MENU IDR_MENU_STANDARD
|
||||
|
@@ -4,7 +4,7 @@ LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX 0, 0, 316, 163
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX CW_USEDEFAULT16, 0, 316, 163
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS 계산기"
|
||||
MENU IDR_MENU_SCIENTIFIC_1
|
||||
@@ -152,7 +152,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_STANDARD DIALOGEX 0, 0, 169, 128
|
||||
IDD_DIALOG_STANDARD DIALOGEX CW_USEDEFAULT16, 0, 169, 128
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS 계산기"
|
||||
MENU IDR_MENU_STANDARD
|
||||
@@ -217,7 +217,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_CONVERSION DIALOGEX 0, 0, 320, 130
|
||||
IDD_DIALOG_CONVERSION DIALOGEX CW_USEDEFAULT16, 0, 320, 130
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS 계산기 정보"
|
||||
MENU IDR_MENU_STANDARD
|
||||
|
@@ -2,7 +2,7 @@ LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX 0, 0, 316, 163
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX CW_USEDEFAULT16, 0, 316, 163
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS Rekenmachine"
|
||||
MENU IDR_MENU_SCIENTIFIC_1
|
||||
@@ -150,7 +150,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_STANDARD DIALOGEX 0, 0, 169, 128
|
||||
IDD_DIALOG_STANDARD DIALOGEX CW_USEDEFAULT16, 0, 169, 128
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS Rekenmachine"
|
||||
MENU IDR_MENU_STANDARD
|
||||
@@ -215,7 +215,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_CONVERSION DIALOGEX 0, 0, 320, 130
|
||||
IDD_DIALOG_CONVERSION DIALOGEX CW_USEDEFAULT16, 0, 320, 130
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS Rekenmachine"
|
||||
MENU IDR_MENU_STANDARD
|
||||
|
@@ -2,7 +2,7 @@ LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX 0, 0, 316, 163
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX CW_USEDEFAULT16, 0, 316, 163
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS Kalkulator"
|
||||
MENU IDR_MENU_SCIENTIFIC_1
|
||||
@@ -150,7 +150,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_STANDARD DIALOGEX 0, 0, 169, 128
|
||||
IDD_DIALOG_STANDARD DIALOGEX CW_USEDEFAULT16, 0, 169, 128
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS Kalkulator"
|
||||
MENU IDR_MENU_STANDARD
|
||||
@@ -215,7 +215,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_CONVERSION DIALOGEX 0, 0, 320, 130
|
||||
IDD_DIALOG_CONVERSION DIALOGEX CW_USEDEFAULT16, 0, 320, 130
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS Kalkulator"
|
||||
MENU IDR_MENU_STANDARD
|
||||
|
@@ -11,7 +11,7 @@ LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX 0, 0, 316, 163
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX CW_USEDEFAULT16, 0, 316, 163
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Kalkulator ReactOS"
|
||||
MENU IDR_MENU_SCIENTIFIC_1
|
||||
@@ -159,7 +159,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_STANDARD DIALOGEX 0, 0, 169, 128
|
||||
IDD_DIALOG_STANDARD DIALOGEX CW_USEDEFAULT16, 0, 169, 128
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Kalkulator ReactOS"
|
||||
MENU IDR_MENU_STANDARD
|
||||
@@ -224,7 +224,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_CONVERSION DIALOGEX 0, 0, 320, 130
|
||||
IDD_DIALOG_CONVERSION DIALOGEX CW_USEDEFAULT16, 0, 320, 130
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Kalkulator ReactOS"
|
||||
MENU IDR_MENU_STANDARD
|
||||
|
@@ -4,7 +4,7 @@ LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX 0, 0, 316, 163
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX CW_USEDEFAULT16, 0, 316, 163
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Calculadora ReactOS"
|
||||
MENU IDR_MENU_SCIENTIFIC_1
|
||||
@@ -152,7 +152,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_STANDARD DIALOGEX 0, 0, 169, 128
|
||||
IDD_DIALOG_STANDARD DIALOGEX CW_USEDEFAULT16, 0, 169, 128
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Calculadora ReactOS"
|
||||
MENU IDR_MENU_STANDARD
|
||||
@@ -217,7 +217,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_CONVERSION DIALOGEX 0, 0, 320, 130
|
||||
IDD_DIALOG_CONVERSION DIALOGEX CW_USEDEFAULT16, 0, 320, 130
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Calculadora ReactOS"
|
||||
MENU IDR_MENU_STANDARD
|
||||
|
@@ -4,7 +4,7 @@ LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX 0, 0, 316, 163
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX CW_USEDEFAULT16, 0, 316, 163
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Calculadora ReactOS"
|
||||
MENU IDR_MENU_SCIENTIFIC_1
|
||||
@@ -152,7 +152,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_STANDARD DIALOGEX 0, 0, 169, 128
|
||||
IDD_DIALOG_STANDARD DIALOGEX CW_USEDEFAULT16, 0, 169, 128
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Calculadora ReactOS"
|
||||
MENU IDR_MENU_STANDARD
|
||||
@@ -217,7 +217,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_CONVERSION DIALOGEX 0, 0, 320, 130
|
||||
IDD_DIALOG_CONVERSION DIALOGEX CW_USEDEFAULT16, 0, 320, 130
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Calculadora ReactOS"
|
||||
MENU IDR_MENU_STANDARD
|
||||
|
@@ -4,16 +4,16 @@
|
||||
* PURPOSE: Romanian resource file
|
||||
* TRANSLATORS: Copyright 2009 Petru Dimitriu <petrimetri@gmail.com>
|
||||
* Copyright 2011-2018 Ștefan Fulea <stefan.fulea@mail.com>
|
||||
* Copyright 2022 Andrei Miloiu <miloiuandrei@gmail.com>
|
||||
* Copyright 2022-2024 Andrei Miloiu <miloiuandrei@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX 0, 0, 316, 163
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX CW_USEDEFAULT16, 0, 316, 163
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Minicalculator"
|
||||
CAPTION "Calculator"
|
||||
MENU IDR_MENU_SCIENTIFIC_1
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x1
|
||||
BEGIN
|
||||
@@ -153,15 +153,15 @@ BEGIN
|
||||
BS_NOTIFY | BS_OWNERDRAW | WS_TABSTOP
|
||||
PUSHBUTTON "CE", IDC_BUTTON_CE, 222, 38, 43, 18, BS_CENTER | BS_VCENTER |
|
||||
BS_NOTIFY | BS_OWNERDRAW | WS_TABSTOP
|
||||
PUSHBUTTON "Înapoi", IDC_BUTTON_BACK, 177, 38, 43, 18, BS_CENTER |
|
||||
PUSHBUTTON "Backspace", IDC_BUTTON_BACK, 177, 38, 43, 18, BS_CENTER |
|
||||
BS_VCENTER | BS_NOTIFY | BS_OWNERDRAW | WS_TABSTOP
|
||||
RTEXT "", IDC_TEXT_OUTPUT, 5, 1, 305, 14, SS_CENTERIMAGE, WS_EX_CLIENTEDGE
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_STANDARD DIALOGEX 0, 0, 169, 128
|
||||
IDD_DIALOG_STANDARD DIALOGEX CW_USEDEFAULT16, 0, 169, 128
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Minicalculator"
|
||||
CAPTION "Calculator"
|
||||
MENU IDR_MENU_STANDARD
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x1
|
||||
BEGIN
|
||||
@@ -169,7 +169,7 @@ BEGIN
|
||||
BS_NOTIFY | BS_OWNERDRAW | WS_TABSTOP
|
||||
PUSHBUTTON "CE", IDC_BUTTON_CE, 80, 23, 41, 18, BS_CENTER | BS_VCENTER |
|
||||
BS_NOTIFY | BS_OWNERDRAW | WS_TABSTOP
|
||||
PUSHBUTTON "Înapoi", IDC_BUTTON_BACK, 36, 23, 42, 18, BS_CENTER | BS_VCENTER |
|
||||
PUSHBUTTON "Backspace", IDC_BUTTON_BACK, 36, 23, 42, 18, BS_CENTER | BS_VCENTER |
|
||||
BS_NOTIFY | BS_OWNERDRAW | WS_TABSTOP
|
||||
RTEXT "", IDC_TEXT_OUTPUT, 5, 1, 159, 14, SS_CENTERIMAGE, WS_EX_CLIENTEDGE
|
||||
PUSHBUTTON "7", IDC_BUTTON_7, 36, 45, 24, 18, BS_CENTER | BS_VCENTER |
|
||||
@@ -224,9 +224,9 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_CONVERSION DIALOGEX 0, 0, 320, 130
|
||||
IDD_DIALOG_CONVERSION DIALOGEX CW_USEDEFAULT16, 0, 320, 130
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Minicalculator"
|
||||
CAPTION "Calculator"
|
||||
MENU IDR_MENU_STANDARD
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
@@ -244,7 +244,7 @@ BEGIN
|
||||
BS_VCENTER | BS_NOTIFY | WS_TABSTOP, 276, 24, 40, 17
|
||||
CONTROL "CE", IDC_BUTTON_CE, "Button", BS_OWNERDRAW | BS_CENTER |
|
||||
BS_VCENTER | BS_NOTIFY | WS_TABSTOP, 232, 24, 40, 17
|
||||
CONTROL "Înapoi", IDC_BUTTON_BACK, "Button", BS_OWNERDRAW | BS_CENTER |
|
||||
CONTROL "Backspace", IDC_BUTTON_BACK, "Button", BS_OWNERDRAW | BS_CENTER |
|
||||
BS_VCENTER | BS_NOTIFY | WS_TABSTOP, 188, 24, 40,17
|
||||
RTEXT "", IDC_TEXT_OUTPUT, 5, 1, 312, 14, SS_CENTERIMAGE, WS_EX_CLIENTEDGE
|
||||
CONTROL "7", IDC_BUTTON_7, "Button", BS_OWNERDRAW | BS_CENTER |
|
||||
@@ -318,31 +318,31 @@ IDR_MENU_SCIENTIFIC_1 MENU
|
||||
BEGIN
|
||||
POPUP "&Editare"
|
||||
BEGIN
|
||||
MENUITEM "&Copiază\tCtrl-C", IDM_EDIT_COPY
|
||||
MENUITEM "&Lipește\tCtrl-V", IDM_EDIT_PASTE
|
||||
MENUITEM "&Copiere\tCtrl-C", IDM_EDIT_COPY
|
||||
MENUITEM "&Lipire\tCtrl-V", IDM_EDIT_PASTE
|
||||
END
|
||||
POPUP "&Afișare"
|
||||
POPUP "&Vizualizare"
|
||||
BEGIN
|
||||
MENUITEM "Mod st&andard", IDM_VIEW_STANDARD
|
||||
MENUITEM "Mod știi&nțific", IDM_VIEW_SCIENTIFIC
|
||||
MENUITEM "Con&versie", IDM_VIEW_CONVERSION
|
||||
MENUITEM "&Standard", IDM_VIEW_STANDARD
|
||||
MENUITEM "&Ştiinţific", IDM_VIEW_SCIENTIFIC
|
||||
MENUITEM "Co&nversie", IDM_VIEW_CONVERSION
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Hexazecimal\tF5", IDM_VIEW_HEX, CHECKED
|
||||
MENUITEM "&Zecimal\tF6", IDM_VIEW_DEC, CHECKED
|
||||
MENUITEM "&Octal\tF7", IDM_VIEW_OCT, CHECKED
|
||||
MENUITEM "O&ctal\tF7", IDM_VIEW_OCT, CHECKED
|
||||
MENUITEM "&Binar\tF8", IDM_VIEW_BIN, CHECKED
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Grade\tF2", IDM_VIEW_DEG, CHECKED
|
||||
MENUITEM "&Radiani\tF3", IDM_VIEW_RAD, CHECKED
|
||||
MENUITEM "Gra&diani\tF4", IDM_VIEW_GRAD, CHECKED
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Grupează &cifrele", IDM_VIEW_GROUP, CHECKED
|
||||
MENUITEM "G&ruparea cifrelor", IDM_VIEW_GROUP, CHECKED
|
||||
END
|
||||
POPUP "Aj&utor"
|
||||
BEGIN
|
||||
MENUITEM "&Manual…", IDM_HELP_HELP
|
||||
MENUITEM "&Termeni din Ajutor", IDM_HELP_HELP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Despre…", IDM_HELP_ABOUT
|
||||
MENUITEM "&Despre Calculator ReactOS", IDM_HELP_ABOUT
|
||||
END
|
||||
END
|
||||
|
||||
@@ -350,32 +350,32 @@ IDR_MENU_SCIENTIFIC_2 MENU
|
||||
BEGIN
|
||||
POPUP "&Editare"
|
||||
BEGIN
|
||||
MENUITEM "&Copiază\tCTRL-C", IDM_EDIT_COPY
|
||||
MENUITEM "&Lipește\tCTRL-V", IDM_EDIT_PASTE
|
||||
MENUITEM "&Copiere\tCTRL-C", IDM_EDIT_COPY
|
||||
MENUITEM "&Lipire\tCTRL-V", IDM_EDIT_PASTE
|
||||
END
|
||||
POPUP "&Afișare"
|
||||
POPUP "&Vizualizare"
|
||||
BEGIN
|
||||
MENUITEM "Mod st&andard", IDM_VIEW_STANDARD
|
||||
MENUITEM "Mod știi&nțific", IDM_VIEW_SCIENTIFIC
|
||||
MENUITEM "Con&versie", IDM_VIEW_CONVERSION
|
||||
MENUITEM "&Standard", IDM_VIEW_STANDARD
|
||||
MENUITEM "&Ştiinţific", IDM_VIEW_SCIENTIFIC
|
||||
MENUITEM "G&ruparea cifrelor", IDM_VIEW_CONVERSION
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Hexazecimal\tF5", IDM_VIEW_HEX, CHECKED
|
||||
MENUITEM "&Zecimal\tF6", IDM_VIEW_DEC, CHECKED
|
||||
MENUITEM "&Octal\tF7", IDM_VIEW_OCT, CHECKED
|
||||
MENUITEM "&Binar\tF8", IDM_VIEW_BIN, CHECKED
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&64 biți\tF12", IDM_VIEW_QWORD, CHECKED
|
||||
MENUITEM "&32 biți\tF2", IDM_VIEW_DWORD, CHECKED
|
||||
MENUITEM "&64 de biți\tF12", IDM_VIEW_QWORD, CHECKED
|
||||
MENUITEM "&32 de biți\tF2", IDM_VIEW_DWORD, CHECKED
|
||||
MENUITEM "&16 biți\tF3", IDM_VIEW_WORD, CHECKED
|
||||
MENUITEM "&8 biți\tF4", IDM_VIEW_BYTE, CHECKED
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Grupează &cifrele", IDM_VIEW_GROUP, CHECKED
|
||||
MENUITEM "Gr&uparea cifrelor", IDM_VIEW_GROUP, CHECKED
|
||||
END
|
||||
POPUP "Aj&utor"
|
||||
BEGIN
|
||||
MENUITEM "&Manual…", IDM_HELP_HELP
|
||||
MENUITEM "&Termeni din Ajutor", IDM_HELP_HELP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Despre…", IDM_HELP_ABOUT
|
||||
MENUITEM "&Despre Calculator ReactOS", IDM_HELP_ABOUT
|
||||
END
|
||||
END
|
||||
|
||||
@@ -383,22 +383,22 @@ IDR_MENU_STANDARD MENU
|
||||
BEGIN
|
||||
POPUP "&Editare"
|
||||
BEGIN
|
||||
MENUITEM "&Copiază\tCTRL-C", IDM_EDIT_COPY
|
||||
MENUITEM "&Lipește\tCTRL-V", IDM_EDIT_PASTE
|
||||
MENUITEM "&Copiere\tCTRL-C", IDM_EDIT_COPY
|
||||
MENUITEM "&Lipire\tCTRL-V", IDM_EDIT_PASTE
|
||||
END
|
||||
POPUP "&Afișare"
|
||||
POPUP "&Vizualizare"
|
||||
BEGIN
|
||||
MENUITEM "Mod st&andard", IDM_VIEW_STANDARD
|
||||
MENUITEM "Mod știi&nțific", IDM_VIEW_SCIENTIFIC
|
||||
MENUITEM "Con&versie", IDM_VIEW_CONVERSION
|
||||
MENUITEM "&Standard", IDM_VIEW_STANDARD
|
||||
MENUITEM "&Ştiinţific", IDM_VIEW_SCIENTIFIC
|
||||
MENUITEM "Co&nversie", IDM_VIEW_CONVERSION
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Grupează &cifre", IDM_VIEW_GROUP, CHECKED
|
||||
MENUITEM "Gr&uparea cifrelor", IDM_VIEW_GROUP, CHECKED
|
||||
END
|
||||
POPUP "Aj&utor"
|
||||
BEGIN
|
||||
MENUITEM "&Manual…", IDM_HELP_HELP
|
||||
MENUITEM "&Termeni din Ajutor", IDM_HELP_HELP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Despre…", IDM_HELP_ABOUT
|
||||
MENUITEM "&Despre Calculator ReactOS", IDM_HELP_ABOUT
|
||||
END
|
||||
END
|
||||
|
||||
@@ -407,13 +407,13 @@ END
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_MATH_ERROR "Eroare"
|
||||
IDS_QUICKHELP "Manual"
|
||||
IDS_QUICKHELP "Termeni din Ajutor"
|
||||
END
|
||||
|
||||
/* About */
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_CALC_NAME "Minicalculator ReactOS"
|
||||
IDS_CALC_NAME "Calculator ReactOS"
|
||||
IDS_AUTHOR "Scris de Carlo Bramini"
|
||||
END
|
||||
|
||||
@@ -438,8 +438,8 @@ END
|
||||
/* Angles */
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_ANGLE_ARCMINUTES "Minute of arc"
|
||||
IDS_ANGLE_ARCSECONDS "Second of arc"
|
||||
IDS_ANGLE_ARCMINUTES "Minut de arc"
|
||||
IDS_ANGLE_ARCSECONDS "Secundă de arc"
|
||||
IDS_ANGLE_DEGREES "Grade"
|
||||
IDS_ANGLE_GRADIANS "Gradiani"
|
||||
IDS_ANGLE_RADIANS "Radiani"
|
||||
@@ -470,7 +470,7 @@ BEGIN
|
||||
IDS_AREA_SQUARE_FATHOMS "Fathomi pătrați"
|
||||
IDS_AREA_SQUARE_FATHOMS_HUNGARY "Fathomi pătrați (Ungaria)"
|
||||
IDS_AREA_SQUARE_FEET "Picioare pătrate"
|
||||
IDS_AREA_SQUARE_INCHES "Țoli pătrați"
|
||||
IDS_AREA_SQUARE_INCHES "Inci pătrați"
|
||||
IDS_AREA_SQUARE_KILOMETERS "Kilometri pătrați"
|
||||
IDS_AREA_SQUARE_LAR "Lar pătrați"
|
||||
IDS_AREA_SQUARE_METER "Metri pătrați"
|
||||
@@ -524,7 +524,7 @@ STRINGTABLE
|
||||
BEGIN
|
||||
IDS_ENERGY_15_C_CALORIES "Calorii 15 °C"
|
||||
IDS_ENERGY_BTUS "Unități termale britanice"
|
||||
IDS_ENERGY_ERGS "Erg"
|
||||
IDS_ENERGY_ERGS "Ergi"
|
||||
IDS_ENERGY_EVS "Electroni-Volt"
|
||||
IDS_ENERGY_FOOT_POUNDS "Picioare-Livră"
|
||||
IDS_ENERGY_IT_CALORIES "Calorii Tabel Internațional"
|
||||
@@ -555,7 +555,7 @@ BEGIN
|
||||
IDS_LENGTH_GAN "Gan"
|
||||
IDS_LENGTH_HANDS "Palme"
|
||||
IDS_LENGTH_HUNH "Hunh"
|
||||
IDS_LENGTH_INCHES "Țoli"
|
||||
IDS_LENGTH_INCHES "Inci"
|
||||
IDS_LENGTH_JA "Ja"
|
||||
IDS_LENGTH_JEONG "Jeong"
|
||||
IDS_LENGTH_KABIET "Kabiet"
|
||||
@@ -592,7 +592,7 @@ END
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_POWER_BTUS_PER_MINUTE "Unități termice britanice pe minut"
|
||||
IDS_POWER_FPS_PER_MINUTE "Picior-livre pe minut"
|
||||
IDS_POWER_FPS_PER_MINUTE "Picior-lire pe minut"
|
||||
IDS_POWER_HORSEPOWER "Cai putere"
|
||||
IDS_POWER_KILOWATTS "Kilowați"
|
||||
IDS_POWER_MEGAWATTS "Megawați"
|
||||
@@ -608,7 +608,7 @@ BEGIN
|
||||
IDS_PRESSURE_KILOPASCALS "Kilopascali"
|
||||
IDS_PRESSURE_MM_OF_MERCURY "Milimetri coloană de mercur"
|
||||
IDS_PRESSURE_PASCALS "Pascali"
|
||||
IDS_PRESSURE_PSI "Livre-forță pe țol pătrat"
|
||||
IDS_PRESSURE_PSI "Livre-forță pe inci pătrați"
|
||||
END
|
||||
|
||||
/* Temperatures */
|
||||
@@ -657,7 +657,7 @@ BEGIN
|
||||
IDS_VOLUME_BUSHELS_US "Bushel (SUA)"
|
||||
IDS_VOLUME_CUBIC_CENTIMETERS "Centrimetri cubi"
|
||||
IDS_VOLUME_CUBIC_FEET "Picioare^3"
|
||||
IDS_VOLUME_CUBIC_INCHES "Țoli cubi"
|
||||
IDS_VOLUME_CUBIC_INCHES "Inci cubi"
|
||||
IDS_VOLUME_CUBIC_METERS "Metri cubi"
|
||||
IDS_VOLUME_CUBIC_YARDS "Yarzi cubi"
|
||||
IDS_VOLUME_DOE "Doe"
|
||||
@@ -708,11 +708,11 @@ BEGIN
|
||||
IDS_WEIGHT_OUNCES_AVOIRDUPOIS "Uncii, avoirdupois"
|
||||
IDS_WEIGHT_OUNCES_TROY "Uncii, troy"
|
||||
IDS_WEIGHT_POUNDS "Livre"
|
||||
IDS_WEIGHT_QUINTAL_METRIC "Chintale (metric)"
|
||||
IDS_WEIGHT_QUINTAL_METRIC "Quintale (metric)"
|
||||
IDS_WEIGHT_SALOUNG "Saloung"
|
||||
IDS_WEIGHT_STONES "Stones"
|
||||
IDS_WEIGHT_TAMLUNG "Tamlung"
|
||||
IDS_WEIGHT_TONNES "Tonni"
|
||||
IDS_WEIGHT_TONNES "Tone"
|
||||
IDS_WEIGHT_TONS_UK "Tone (Marea Britanie)"
|
||||
IDS_WEIGHT_TONS_US "Tone (SUA)"
|
||||
END
|
||||
|
@@ -2,7 +2,7 @@ LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX 0, 0, 316, 163
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX CW_USEDEFAULT16, 0, 316, 163
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Калькулятор ReactOS"
|
||||
MENU IDR_MENU_SCIENTIFIC_1
|
||||
@@ -150,7 +150,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_STANDARD DIALOGEX 0, 0, 169, 128
|
||||
IDD_DIALOG_STANDARD DIALOGEX CW_USEDEFAULT16, 0, 169, 128
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Калькулятор ReactOS"
|
||||
MENU IDR_MENU_STANDARD
|
||||
@@ -215,7 +215,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_CONVERSION DIALOGEX 0, 0, 320, 130
|
||||
IDD_DIALOG_CONVERSION DIALOGEX CW_USEDEFAULT16, 0, 320, 130
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Калькулятор ReactOS"
|
||||
MENU IDR_MENU_STANDARD
|
||||
@@ -429,8 +429,8 @@ END
|
||||
/* Angles */
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_ANGLE_ARCMINUTES "Minute of arc"
|
||||
IDS_ANGLE_ARCSECONDS "Second of arc"
|
||||
IDS_ANGLE_ARCMINUTES "Угловая минута"
|
||||
IDS_ANGLE_ARCSECONDS "Угловая секунда"
|
||||
IDS_ANGLE_DEGREES "градус"
|
||||
IDS_ANGLE_GRADIANS "град"
|
||||
IDS_ANGLE_RADIANS "радиан"
|
||||
|
@@ -9,7 +9,7 @@ LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX 0, 0, 316, 163
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX CW_USEDEFAULT16, 0, 316, 163
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Kalkulačka systému ReactOS"
|
||||
MENU IDR_MENU_SCIENTIFIC_1
|
||||
@@ -157,7 +157,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_STANDARD DIALOGEX 0, 0, 169, 128
|
||||
IDD_DIALOG_STANDARD DIALOGEX CW_USEDEFAULT16, 0, 169, 128
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Kalkulačka systému ReactOS"
|
||||
MENU IDR_MENU_STANDARD
|
||||
@@ -222,7 +222,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_CONVERSION DIALOGEX 0, 0, 320, 130
|
||||
IDD_DIALOG_CONVERSION DIALOGEX CW_USEDEFAULT16, 0, 320, 130
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Kalkulačka systému ReactOS"
|
||||
MENU IDR_MENU_STANDARD
|
||||
|
@@ -6,7 +6,7 @@ LANGUAGE LANG_ALBANIAN, SUBLANG_NEUTRAL
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX 0, 0, 316, 163
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX CW_USEDEFAULT16, 0, 316, 163
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS Makine Llogaritje"
|
||||
MENU IDR_MENU_SCIENTIFIC_1
|
||||
@@ -154,7 +154,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_STANDARD DIALOGEX 0, 0, 169, 128
|
||||
IDD_DIALOG_STANDARD DIALOGEX CW_USEDEFAULT16, 0, 169, 128
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS Makine Llogaritje"
|
||||
MENU IDR_MENU_STANDARD
|
||||
@@ -219,7 +219,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_CONVERSION DIALOGEX 0, 0, 320, 130
|
||||
IDD_DIALOG_CONVERSION DIALOGEX CW_USEDEFAULT16, 0, 320, 130
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS Makine Llogaritje"
|
||||
MENU IDR_MENU_STANDARD
|
||||
|
@@ -9,7 +9,7 @@ LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX 0, 0, 316, 163
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX CW_USEDEFAULT16, 0, 316, 163
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS Kalkylator"
|
||||
MENU IDR_MENU_SCIENTIFIC_1
|
||||
@@ -157,7 +157,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_STANDARD DIALOGEX 0, 0, 169, 128
|
||||
IDD_DIALOG_STANDARD DIALOGEX CW_USEDEFAULT16, 0, 169, 128
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS Kalkylator"
|
||||
MENU IDR_MENU_STANDARD
|
||||
@@ -222,7 +222,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_CONVERSION DIALOGEX 0, 0, 320, 130
|
||||
IDD_DIALOG_CONVERSION DIALOGEX CW_USEDEFAULT16, 0, 320, 130
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS Kalkylator"
|
||||
MENU IDR_MENU_STANDARD
|
||||
|
@@ -2,7 +2,7 @@ LANGUAGE LANG_THAI, SUBLANG_DEFAULT
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX 0, 0, 316, 163
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX CW_USEDEFAULT16, 0, 316, 163
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "เครื่องคิดเลข ReactOS"
|
||||
MENU IDR_MENU_SCIENTIFIC_1
|
||||
@@ -150,7 +150,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_STANDARD DIALOGEX 0, 0, 169, 128
|
||||
IDD_DIALOG_STANDARD DIALOGEX CW_USEDEFAULT16, 0, 169, 128
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "สถานภาพทั่วไป"
|
||||
MENU IDR_MENU_STANDARD
|
||||
@@ -215,7 +215,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_CONVERSION DIALOGEX 0, 0, 320, 130
|
||||
IDD_DIALOG_CONVERSION DIALOGEX CW_USEDEFAULT16, 0, 320, 130
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "เครื่องคิดเลข ReactOS"
|
||||
MENU IDR_MENU_STANDARD
|
||||
|
@@ -7,7 +7,7 @@ LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX 0, 0, 316, 163
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX CW_USEDEFAULT16, 0, 316, 163
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS Hesap Makinesi"
|
||||
MENU IDR_MENU_SCIENTIFIC_1
|
||||
@@ -155,7 +155,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_STANDARD DIALOGEX 0, 0, 169, 128
|
||||
IDD_DIALOG_STANDARD DIALOGEX CW_USEDEFAULT16, 0, 169, 128
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS Hesap Makinesi"
|
||||
MENU IDR_MENU_STANDARD
|
||||
@@ -220,7 +220,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_CONVERSION DIALOGEX 0, 0, 320, 130
|
||||
IDD_DIALOG_CONVERSION DIALOGEX CW_USEDEFAULT16, 0, 320, 130
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS Hesap Makinesi"
|
||||
MENU IDR_MENU_STANDARD
|
||||
|
@@ -10,7 +10,7 @@ LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX 0, 0, 316, 163
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX CW_USEDEFAULT16, 0, 316, 163
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Калькулятор ReactOS"
|
||||
MENU IDR_MENU_SCIENTIFIC_1
|
||||
@@ -158,7 +158,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_STANDARD DIALOGEX 0, 0, 169, 128
|
||||
IDD_DIALOG_STANDARD DIALOGEX CW_USEDEFAULT16, 0, 169, 128
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Калькулятор ReactOS"
|
||||
MENU IDR_MENU_STANDARD
|
||||
@@ -223,7 +223,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_CONVERSION DIALOGEX 0, 0, 320, 130
|
||||
IDD_DIALOG_CONVERSION DIALOGEX CW_USEDEFAULT16, 0, 320, 130
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Калькулятор ReactOS"
|
||||
MENU IDR_MENU_STANDARD
|
||||
|
@@ -10,7 +10,7 @@ LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX 0, 0, 316, 163
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX CW_USEDEFAULT16, 0, 316, 163
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS 计算器"
|
||||
MENU IDR_MENU_SCIENTIFIC_1
|
||||
@@ -158,7 +158,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_STANDARD DIALOGEX 0, 0, 169, 128
|
||||
IDD_DIALOG_STANDARD DIALOGEX CW_USEDEFAULT16, 0, 169, 128
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS 计算器"
|
||||
MENU IDR_MENU_STANDARD
|
||||
@@ -223,7 +223,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_CONVERSION DIALOGEX 0, 0, 320, 130
|
||||
IDD_DIALOG_CONVERSION DIALOGEX CW_USEDEFAULT16, 0, 320, 130
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS 计算器"
|
||||
MENU IDR_MENU_STANDARD
|
||||
|
@@ -10,7 +10,7 @@ LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_HONGKONG
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX 0, 0, 316, 163
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX CW_USEDEFAULT16, 0, 316, 163
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS 計數機"
|
||||
MENU IDR_MENU_SCIENTIFIC_1
|
||||
@@ -158,7 +158,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_STANDARD DIALOGEX 0, 0, 169, 128
|
||||
IDD_DIALOG_STANDARD DIALOGEX CW_USEDEFAULT16, 0, 169, 128
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS 計數機"
|
||||
MENU IDR_MENU_STANDARD
|
||||
@@ -223,7 +223,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_CONVERSION DIALOGEX 0, 0, 320, 130
|
||||
IDD_DIALOG_CONVERSION DIALOGEX CW_USEDEFAULT16, 0, 320, 130
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS 計數機"
|
||||
MENU IDR_MENU_STANDARD
|
||||
|
@@ -4,7 +4,7 @@ LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX 0, 0, 316, 163
|
||||
IDD_DIALOG_SCIENTIFIC DIALOGEX CW_USEDEFAULT16, 0, 316, 163
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS 計算機"
|
||||
MENU IDR_MENU_SCIENTIFIC_1
|
||||
@@ -152,7 +152,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_STANDARD DIALOGEX 0, 0, 169, 128
|
||||
IDD_DIALOG_STANDARD DIALOGEX CW_USEDEFAULT16, 0, 169, 128
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS 計算機"
|
||||
MENU IDR_MENU_STANDARD
|
||||
@@ -217,7 +217,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
|
||||
END
|
||||
|
||||
IDD_DIALOG_CONVERSION DIALOGEX 0, 0, 320, 130
|
||||
IDD_DIALOG_CONVERSION DIALOGEX CW_USEDEFAULT16, 0, 320, 130
|
||||
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "ReactOS 計算機"
|
||||
MENU IDR_MENU_STANDARD
|
||||
|
@@ -4,6 +4,8 @@
|
||||
#define IDC_STATIC -1
|
||||
#endif
|
||||
|
||||
#define CW_USEDEFAULT16 0x8000
|
||||
|
||||
#define IDS_CALC_NAME 1
|
||||
#define IDS_MATH_ERROR 2
|
||||
#define IDS_QUICKHELP 3
|
||||
|
@@ -19,7 +19,7 @@
|
||||
*/
|
||||
|
||||
#include <windef.h>
|
||||
#include <winuser.h>
|
||||
#include <winuser.rh>
|
||||
|
||||
#include "resource.h"
|
||||
|
||||
|
@@ -27,7 +27,7 @@ void prepare_rpn_result_2(calc_number_t *rpn, TCHAR *buffer, int size, int base)
|
||||
|
||||
switch (base) {
|
||||
case IDC_RADIO_HEX:
|
||||
_stprintf(buffer, _T("%I64X"), rpn->i);
|
||||
StringCchPrintf(buffer, size, _T("%I64X"), rpn->i);
|
||||
break;
|
||||
case IDC_RADIO_DEC:
|
||||
/*
|
||||
@@ -40,11 +40,11 @@ void prepare_rpn_result_2(calc_number_t *rpn, TCHAR *buffer, int size, int base)
|
||||
/* calculate the width of integer number */
|
||||
width = (rpn->f==0) ? 1 : (int)log10(fabs(rpn->f))+1;
|
||||
if (calc.sci_out == TRUE || width > MAX_LD_WIDTH || width < -MAX_LD_WIDTH)
|
||||
_stprintf(buffer, _T("%#.*e"), MAX_LD_WIDTH-1, rpn->f);
|
||||
StringCchPrintf(buffer, size, _T("%#.*e"), MAX_LD_WIDTH-1, rpn->f);
|
||||
else {
|
||||
TCHAR *ptr, *dst;
|
||||
|
||||
ptr = buffer + _stprintf(buffer, _T("%#*.*f"), width, ((MAX_LD_WIDTH-width-1)>=0) ? MAX_LD_WIDTH-width-1 : 0, rpn->f);
|
||||
StringCchPrintfEx(buffer, size, &ptr, NULL, 0, _T("%#*.*f"), width, ((MAX_LD_WIDTH-width-1)>=0) ? MAX_LD_WIDTH-width-1 : 0, rpn->f);
|
||||
/* format string ensures there is a '.': */
|
||||
dst = _tcschr(buffer, _T('.'));
|
||||
while (--ptr > dst)
|
||||
@@ -61,7 +61,7 @@ void prepare_rpn_result_2(calc_number_t *rpn, TCHAR *buffer, int size, int base)
|
||||
#undef MAX_LD_WIDTH
|
||||
break;
|
||||
case IDC_RADIO_OCT:
|
||||
_stprintf(buffer, _T("%I64o"), rpn->i);
|
||||
StringCchPrintf(buffer, size, _T("%I64o"), rpn->i);
|
||||
break;
|
||||
case IDC_RADIO_BIN:
|
||||
if (rpn->i == 0) {
|
||||
|
@@ -107,7 +107,7 @@ void prepare_rpn_result_2(calc_number_t *rpn, TCHAR *buffer, int size, int base)
|
||||
}
|
||||
mpz_clear(zz);
|
||||
mpf_clear(ff);
|
||||
_sntprintf(buffer, SIZEOF(calc.buffer), _T("%hs"), temp);
|
||||
StringCchPrintf(buffer, size, _T("%hs"), temp);
|
||||
}
|
||||
|
||||
void convert_text2number_2(calc_number_t *a)
|
||||
|
@@ -254,10 +254,10 @@ static void UpdateNumberIntl(void)
|
||||
{
|
||||
/* Get current user defaults */
|
||||
if (!GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SDECIMAL, calc.sDecimal, SIZEOF(calc.sDecimal)))
|
||||
_tcscpy(calc.sDecimal, _T("."));
|
||||
StringCbCopy(calc.sDecimal, sizeof(calc.sDecimal), _T("."));
|
||||
|
||||
if (!GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_STHOUSAND, calc.sThousand, SIZEOF(calc.sThousand)))
|
||||
_tcscpy(calc.sThousand, _T(","));
|
||||
StringCbCopy(calc.sThousand, sizeof(calc.sThousand), _T(","));
|
||||
|
||||
/* get the string lengths */
|
||||
calc.sDecimal_len = _tcslen(calc.sDecimal);
|
||||
@@ -342,7 +342,7 @@ static void save_config(void)
|
||||
switch (osvi.dwPlatformId) {
|
||||
case VER_PLATFORM_WIN32s:
|
||||
case VER_PLATFORM_WIN32_WINDOWS:
|
||||
_stprintf(buf, _T("%lu"), calc.layout);
|
||||
StringCbPrintf(buf, sizeof(buf), _T("%lu"), calc.layout);
|
||||
WriteProfileString(_T("SciCalc"), _T("layout"), buf);
|
||||
WriteProfileString(_T("SciCalc"), _T("UseSep"), (calc.usesep==TRUE) ? _T("1") : _T("0"));
|
||||
break;
|
||||
@@ -496,16 +496,16 @@ static void update_lcd_display(HWND hwnd)
|
||||
TCHAR tmp[MAX_CALC_SIZE * 2 + 2];
|
||||
|
||||
if (calc.buffer[0] == _T('\0'))
|
||||
_tcscpy(tmp, _T("0"));
|
||||
StringCbCopy(tmp, sizeof(tmp), _T("0"));
|
||||
else
|
||||
_tcscpy(tmp, calc.buffer);
|
||||
StringCbCopy(tmp, sizeof(tmp), calc.buffer);
|
||||
|
||||
/* Add final '.' in decimal mode (if it's missing), but
|
||||
* only if it's a result: no append if it prints "ERROR".
|
||||
*/
|
||||
if (calc.base == IDC_RADIO_DEC && !calc.is_nan) {
|
||||
if (_tcschr(tmp, _T('.')) == NULL)
|
||||
_tcscat(tmp, _T("."));
|
||||
StringCbCat(tmp, sizeof(tmp), _T("."));
|
||||
}
|
||||
/* if separator mode is on, let's add an additional space */
|
||||
if (calc.usesep && !calc.sci_in && !calc.sci_out && !calc.is_nan) {
|
||||
@@ -573,13 +573,14 @@ static void update_parent_display(HWND hWnd)
|
||||
if (!n)
|
||||
str[0] = _T('\0');
|
||||
else
|
||||
_stprintf(str,_T("(=%d"), n);
|
||||
StringCbPrintf(str, sizeof(str), _T("(=%d"), n);
|
||||
SetDlgItemText(hWnd, IDC_TEXT_PARENT, str);
|
||||
}
|
||||
|
||||
static void build_operand(HWND hwnd, DWORD idc)
|
||||
{
|
||||
unsigned int i = 0, n;
|
||||
size_t cbPtr;
|
||||
|
||||
if (idc == IDC_BUTTON_DOT) {
|
||||
/* if dot is the first char, it's added automatically */
|
||||
@@ -617,12 +618,14 @@ static void build_operand(HWND hwnd, DWORD idc)
|
||||
if (idc != IDC_STATIC)
|
||||
calc.esp = (calc.esp * 10 + (key2code[i].key-'0')) % LOCAL_EXP_SIZE;
|
||||
if (calc.ptr == calc.buffer)
|
||||
_stprintf(calc.ptr, _T("0.e%+d"), calc.esp);
|
||||
StringCbPrintf(calc.ptr, sizeof(calc.buffer), _T("0.e%+d"), calc.esp);
|
||||
else {
|
||||
/* adds the dot at the end if the number has no decimal part */
|
||||
if (!_tcschr(calc.buffer, _T('.')))
|
||||
*calc.ptr++ = _T('.');
|
||||
_stprintf(calc.ptr, _T("e%+d"), calc.esp);
|
||||
|
||||
cbPtr = sizeof(calc.buffer) - ((BYTE*)calc.ptr - (BYTE*)calc.buffer);
|
||||
StringCbPrintf(calc.ptr, cbPtr, _T("e%+d"), calc.esp);
|
||||
}
|
||||
update_lcd_display(hwnd);
|
||||
return;
|
||||
@@ -637,7 +640,11 @@ static void build_operand(HWND hwnd, DWORD idc)
|
||||
return;
|
||||
break;
|
||||
}
|
||||
calc.ptr += _stprintf(calc.ptr, _T("%C"), key2code[i].key);
|
||||
|
||||
cbPtr = sizeof(calc.buffer) - ((BYTE*)calc.ptr - (BYTE*)calc.buffer);
|
||||
StringCbPrintfEx(calc.ptr, cbPtr, &calc.ptr, NULL, STRSAFE_FILL_ON_FAILURE,
|
||||
_T("%C"), key2code[i].key);
|
||||
|
||||
update_lcd_display(hwnd);
|
||||
}
|
||||
|
||||
@@ -850,11 +857,11 @@ static void update_memory_flag(HWND hWnd, BOOL mem_flag)
|
||||
SetDlgItemText(hWnd, IDC_TEXT_MEMORY, mem_flag ? _T("M") : _T(""));
|
||||
}
|
||||
|
||||
static void update_n_stats_items(HWND hWnd, TCHAR *buffer)
|
||||
static void update_n_stats_items(HWND hWnd, TCHAR *buffer, size_t cbBuffer)
|
||||
{
|
||||
unsigned int n = SendDlgItemMessage(hWnd, IDC_LIST_STAT, LB_GETCOUNT, 0, 0);
|
||||
|
||||
_stprintf(buffer, _T("n=%u"), n);
|
||||
StringCbPrintf(buffer, cbBuffer, _T("n=%u"), n);
|
||||
SetDlgItemText(hWnd, IDC_TEXT_NITEMS, buffer);
|
||||
}
|
||||
|
||||
@@ -905,7 +912,7 @@ static char *ReadConversion(const char *formula)
|
||||
str[len+1] = ')';
|
||||
str[len+2] = '\0';
|
||||
|
||||
_tcscpy(calc.source, (*calc.buffer == _T('\0')) ? _T("0") : calc.buffer);
|
||||
StringCbCopy(calc.source, sizeof(calc.source), (*calc.buffer == _T('\0')) ? _T("0") : calc.buffer);
|
||||
|
||||
/* clear display content before proceeding */
|
||||
calc.ptr = calc.buffer;
|
||||
@@ -942,13 +949,13 @@ static INT_PTR CALLBACK DlgStatProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
|
||||
if (n == LB_ERR)
|
||||
return TRUE;
|
||||
SendDlgItemMessage(hWnd, IDC_LIST_STAT, LB_DELETESTRING, (WPARAM)n, 0);
|
||||
update_n_stats_items(hWnd, buffer);
|
||||
update_n_stats_items(hWnd, buffer, sizeof(buffer));
|
||||
delete_stat_item(n);
|
||||
return TRUE;
|
||||
case IDC_BUTTON_CAD:
|
||||
SendDlgItemMessage(hWnd, IDC_LIST_STAT, LB_RESETCONTENT, 0, 0);
|
||||
clean_stat_list();
|
||||
update_n_stats_items(hWnd, buffer);
|
||||
update_n_stats_items(hWnd, buffer, sizeof(buffer));
|
||||
return TRUE;
|
||||
}
|
||||
break;
|
||||
@@ -964,7 +971,7 @@ static INT_PTR CALLBACK DlgStatProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
|
||||
buffer, SIZEOF(buffer),
|
||||
((statistic_t *)lp)->base);
|
||||
SendDlgItemMessage(hWnd, IDC_LIST_STAT, LB_ADDSTRING, 0, (LPARAM)buffer);
|
||||
update_n_stats_items(hWnd, buffer);
|
||||
update_n_stats_items(hWnd, buffer, sizeof(buffer));
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
@@ -986,11 +993,13 @@ static void CopyMemToClipboard(void *ptr)
|
||||
if(OpenClipboard(NULL)) {
|
||||
HGLOBAL clipbuffer;
|
||||
TCHAR *buffer;
|
||||
size_t cbBuffer;
|
||||
|
||||
EmptyClipboard();
|
||||
clipbuffer = GlobalAlloc(GMEM_DDESHARE, (_tcslen(ptr)+1)*sizeof(TCHAR));
|
||||
cbBuffer = (_tcslen(ptr) + 1) * sizeof(TCHAR);
|
||||
clipbuffer = GlobalAlloc(GMEM_DDESHARE, cbBuffer);
|
||||
buffer = (TCHAR *)GlobalLock(clipbuffer);
|
||||
_tcscpy(buffer, ptr);
|
||||
StringCbCopy(buffer, cbBuffer, ptr);
|
||||
GlobalUnlock(clipbuffer);
|
||||
#ifdef UNICODE
|
||||
SetClipboardData(CF_UNICODETEXT,clipbuffer);
|
||||
@@ -1056,9 +1065,8 @@ static char *handle_sequence_input(HWND hwnd, sequence_t *seq)
|
||||
}
|
||||
} else
|
||||
if (ch == '$') {
|
||||
calc.ptr =
|
||||
_tcscpy(calc.buffer, calc.source) +
|
||||
_tcslen(calc.source);
|
||||
StringCbCopyEx(calc.buffer, sizeof(calc.buffer), calc.source, &calc.ptr, NULL,
|
||||
STRSAFE_FILL_ON_FAILURE);
|
||||
} else {
|
||||
for (x=0; x<SIZEOF(key2code); x++) {
|
||||
if (!(key2code[x].mask & BITMASK_IS_ASCII) ||
|
||||
@@ -1627,7 +1635,7 @@ static INT_PTR CALLBACK DlgMainProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
|
||||
case IDC_BUTTON_D:
|
||||
case IDC_BUTTON_E:
|
||||
case IDC_BUTTON_F:
|
||||
calc.is_nan = FALSE;
|
||||
if (calc.is_nan) break;
|
||||
build_operand(hWnd, LOWORD(wp));
|
||||
return TRUE;
|
||||
case IDC_BUTTON_PERCENT:
|
||||
@@ -1693,6 +1701,7 @@ static INT_PTR CALLBACK DlgMainProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
|
||||
}
|
||||
return TRUE;
|
||||
case IDC_BUTTON_BACK:
|
||||
if (calc.is_nan) break;
|
||||
if (calc.sci_in) {
|
||||
if (calc.esp == 0) {
|
||||
TCHAR *ptr;
|
||||
@@ -1945,9 +1954,9 @@ int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdL
|
||||
hInstance,
|
||||
MAKEINTRESOURCE(IDI_CALC),
|
||||
IMAGE_ICON,
|
||||
GetSystemMetrics(SM_CXICON),
|
||||
GetSystemMetrics(SM_CYICON),
|
||||
0);
|
||||
0,
|
||||
0,
|
||||
LR_DEFAULTSIZE | LR_SHARED);
|
||||
|
||||
calc.hSmIcon = LoadImage(
|
||||
hInstance,
|
||||
@@ -1955,7 +1964,7 @@ int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdL
|
||||
IMAGE_ICON,
|
||||
GetSystemMetrics(SM_CXSMICON),
|
||||
GetSystemMetrics(SM_CYSMICON),
|
||||
0);
|
||||
LR_SHARED);
|
||||
|
||||
do {
|
||||
/* ignore hwnd: dialogs are already visible! */
|
||||
@@ -1985,12 +1994,6 @@ int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdL
|
||||
save_config();
|
||||
} while (calc.action != IDC_STATIC);
|
||||
|
||||
if (calc.hBgIcon != NULL)
|
||||
DestroyIcon(calc.hBgIcon);
|
||||
|
||||
if (calc.hSmIcon != NULL)
|
||||
DestroyIcon(calc.hSmIcon);
|
||||
|
||||
stop_rpn_engine();
|
||||
|
||||
Theme_Stop();
|
||||
|
@@ -2,7 +2,7 @@
|
||||
* FILE: base/applications/charmap/lang/ro-RO.rc
|
||||
* ReactOS Project (https://reactos.org)
|
||||
* TRANSLATORS: Copyright 2011-2018 Ștefan Fulea <stefan.fulea@mail.com>
|
||||
* Copyright 2023 Andrei Miloiu <miloiuandrei@gmail.com>
|
||||
* Copyright 2023-2024 Andrei Miloiu <miloiuandrei@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
|
||||
@@ -46,7 +46,7 @@ CAPTION "Despre"
|
||||
FONT 8, "MS Shell Dlg", 0, 0
|
||||
STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME
|
||||
BEGIN
|
||||
LTEXT "Hartă de caractere v0.1\nDrept de autor (C) 2007 Ged Murphy (gedmurphy@reactos.org)\nTraducere de Ștefan Fulea (stefan.fulea@mail.com)", IDC_STATIC, 48, 7, 210, 36
|
||||
LTEXT "Plan caractere v0.1\nDrept de autor (C) 2007 Ged Murphy (gedmurphy@reactos.org)\nTraducere de Ștefan Fulea (stefan.fulea@mail.com)", IDC_STATIC, 48, 7, 210, 36
|
||||
PUSHBUTTON "Î&nchide", IDOK, 105, 162, 44, 15
|
||||
ICON IDI_ICON, IDC_STATIC, 10, 10, 7, 30
|
||||
EDITTEXT IDC_LICENSE_EDIT, 8, 44, 254, 107, WS_VISIBLE | WS_VSCROLL |
|
||||
@@ -57,7 +57,7 @@ STRINGTABLE
|
||||
BEGIN
|
||||
IDS_LICENSE "Această aplicație este publică; fiind permisă modificarea și/sau (re)distribuția sa în termenii Licenței Publice Generale GNU publicată de Free Software Foundation; sau versiunea 2 a Licenței, sau (la alegere) a oricărei versiuni ulterioare.\r\n\r\nAceastă aplicație este distribuită doar în speranța de a fi utilă, FĂRĂ însă NICI O GARANȚIE; nici măcar cu garanția implicită a VANDABILITĂȚII sau a UTILITĂȚII ÎNTR-UN SCOP ANUME. Pentru mai multe detalii consultați Licența Publică Generală GNU.\r\n\r\nPuteți vedea această licență aici:\r\nhttp://www.gnu.org/licenses/gpl.html\r\n\r\nDe asemenea puteți consulta traduceri neoficiale ale acestei licențe aici:\r\nhttp://www.gnu.org/licenses/translations.html"
|
||||
IDS_ABOUT "&Despre…"
|
||||
IDS_TITLE "Hartă de caractere"
|
||||
IDS_TITLE "Plan caractere"
|
||||
IDS_UNICODE "Unicode"
|
||||
IDS_ALL "Toate"
|
||||
END
|
||||
|
@@ -54,5 +54,5 @@ BEGIN
|
||||
IDS_ABOUT "&О программе..."
|
||||
IDS_TITLE "Таблица символов"
|
||||
IDS_UNICODE "Unicode"
|
||||
IDS_ALL "All"
|
||||
IDS_ALL "Все"
|
||||
END
|
||||
|
@@ -93,7 +93,7 @@ extern void LoadSettings(void)
|
||||
lstatus = RegQueryValueEx(hKey, _T("Advanced"), NULL, &type, (LPBYTE)&dwAdvancedChecked, &size);
|
||||
if (lstatus == ERROR_SUCCESS && type == REG_DWORD && dwAdvancedChecked != FALSE)
|
||||
{
|
||||
SendDlgItemMessage(hCharmapDlg, IDC_CHECK_ADVANCED, BM_CLICK, MF_CHECKED, 0);
|
||||
SendDlgItemMessage(hCharmapDlg, IDC_CHECK_ADVANCED, BM_CLICK, 0, 0);
|
||||
}
|
||||
|
||||
RegCloseKey(hKey);
|
||||
|
@@ -248,13 +248,11 @@ static int OnCommand(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
|
||||
case CMD_ABOUT:
|
||||
{
|
||||
HICON hIcon;
|
||||
WCHAR szTitle[MAX_STRING_LEN];
|
||||
|
||||
hIcon = LoadIconW(Globals.hInstance, MAKEINTRESOURCE(CLIPBRD_ICON));
|
||||
LoadStringW(Globals.hInstance, STRING_CLIPBOARD, szTitle, ARRAYSIZE(szTitle));
|
||||
ShellAboutW(Globals.hMainWnd, szTitle, NULL, hIcon);
|
||||
DeleteObject(hIcon);
|
||||
ShellAboutW(Globals.hMainWnd, szTitle, NULL,
|
||||
LoadIconW(Globals.hInstance, MAKEINTRESOURCEW(CLIPBRD_ICON)));
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -360,6 +358,13 @@ static void OnPaint(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
||||
break;
|
||||
}
|
||||
|
||||
case CF_HDROP:
|
||||
{
|
||||
GetClientRect(hWnd, &rc);
|
||||
HDropFromClipboard(hdc, &rc);
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
GetClientRect(hWnd, &rc);
|
||||
|
@@ -50,6 +50,9 @@ CLPFILE_ICON ICON "res/clpfile.ico"
|
||||
#ifdef LANGUAGE_IT_IT
|
||||
#include "lang/it-IT.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_JA_JP
|
||||
#include "lang/ja-JP.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_PL_PL
|
||||
#include "lang/pl-PL.rc"
|
||||
#endif
|
||||
|
@@ -164,7 +164,8 @@ UINT GetAutomaticClipboardFormat(void)
|
||||
CF_DSPBITMAP,
|
||||
CF_DSPMETAFILEPICT,
|
||||
CF_DSPENHMETAFILE,
|
||||
CF_PALETTE
|
||||
CF_PALETTE,
|
||||
CF_HDROP
|
||||
};
|
||||
|
||||
return GetPriorityClipboardFormat(uFormatList, ARRAYSIZE(uFormatList));
|
||||
|
65
base/applications/clipbrd/lang/ja-JP.rc
Normal file
65
base/applications/clipbrd/lang/ja-JP.rc
Normal file
@@ -0,0 +1,65 @@
|
||||
LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
|
||||
|
||||
ID_ACCEL ACCELERATORS
|
||||
BEGIN
|
||||
VK_DELETE, CMD_DELETE, VIRTKEY
|
||||
END
|
||||
|
||||
MAIN_MENU MENU
|
||||
BEGIN
|
||||
POPUP "ファイル(&F)"
|
||||
BEGIN
|
||||
MENUITEM "開く(&O)...", CMD_OPEN
|
||||
MENUITEM "名前を付けて保存(&A)...", CMD_SAVE_AS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "終了(&X)", CMD_EXIT
|
||||
END
|
||||
POPUP "編集(&E)"
|
||||
BEGIN
|
||||
MENUITEM "削除(&D)\tDel", CMD_DELETE
|
||||
END
|
||||
POPUP "表示(&D)"
|
||||
BEGIN
|
||||
MENUITEM "自動(&A)", CMD_AUTOMATIC
|
||||
END
|
||||
POPUP "ヘルプ(&H)"
|
||||
BEGIN
|
||||
MENUITEM "ヘルプ トピック(&H)", CMD_HELP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "バージョン情報(&A)", CMD_ABOUT
|
||||
END
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
STRING_CLIPBOARD "クリップボード ビュア"
|
||||
STRING_CLIPFILE "クリップボードの要素"
|
||||
STRING_DELETE_MSG "クリップボードの内容をクリアしますか?"
|
||||
STRING_DELETE_TITLE "クリップボードのクリア"
|
||||
STRING_FORMAT_NT "ReactOS 用のクリップボード ファイル (*.clp)"
|
||||
STRING_FORMAT_GEN "クリップボード ファイル (*.clp)"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
STRING_CF_UNKNOWN "未知の形式"
|
||||
STRING_CF_TEXT "テキスト"
|
||||
STRING_CF_BITMAP "ビットマップ"
|
||||
STRING_CF_OEMTEXT "OEM テキスト"
|
||||
STRING_CF_UNICODETEXT "Unicode テキスト"
|
||||
STRING_CF_DIB "DIB ビットマップ"
|
||||
STRING_CF_LOCALE "ロケール データ"
|
||||
STRING_CF_ENHMETAFILE "拡張メタファイル"
|
||||
STRING_CF_METAFILEPICT "メタファイル"
|
||||
STRING_CF_PALETTE "カラー パレット"
|
||||
STRING_CF_DIBV5 "DIB ビットマップ (バージョン 5)"
|
||||
STRING_CF_SYLK "シンボリック リンク形式"
|
||||
STRING_CF_DIF "データ交換フォーマット"
|
||||
STRING_CF_HDROP "ドロップ データ"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
ERROR_UNSUPPORTED_FORMAT "表示できない形式のデータがクリップボードにあります。"
|
||||
ERROR_INVALID_FILE_FORMAT "選択したファイルは有効なクリップボードファイルではありません。"
|
||||
END
|
@@ -1,4 +1,11 @@
|
||||
/* Translator: Ștefan Fulea (stefan dot fulea at mail dot com) */
|
||||
/*
|
||||
* PROJECT: ReactOS Clipboard
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: Romanian resource file
|
||||
* TRANSLATORS: Copyright 2011-2019 Ștefan Fulea <stefan.fulea@mail.com>
|
||||
* Copyright 2023-2024 Andrei Miloiu <miloiuandrei@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
|
||||
|
||||
ID_ACCEL ACCELERATORS
|
||||
@@ -11,13 +18,13 @@ BEGIN
|
||||
POPUP "&Fișier"
|
||||
BEGIN
|
||||
MENUITEM "&Deschidere…", CMD_OPEN
|
||||
MENUITEM "Păst&rare ca…", CMD_SAVE_AS
|
||||
MENUITEM "S&alvare ca…", CMD_SAVE_AS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "I&eșire", CMD_EXIT
|
||||
END
|
||||
POPUP "&Editare"
|
||||
BEGIN
|
||||
MENUITEM "Șt&erge\tDel", CMD_DELETE
|
||||
MENUITEM "Șt&ergere\tDel", CMD_DELETE
|
||||
END
|
||||
POPUP "&Afișare"
|
||||
BEGIN
|
||||
@@ -35,8 +42,8 @@ STRINGTABLE
|
||||
BEGIN
|
||||
STRING_CLIPBOARD "Inspector de Clipboard"
|
||||
STRING_CLIPFILE "Element de Clipboard"
|
||||
STRING_DELETE_MSG "Elimină conținutul din Clipboard?"
|
||||
STRING_DELETE_TITLE "Curăță Clipboard"
|
||||
STRING_DELETE_MSG "Eliminare conținut din Clipboard?"
|
||||
STRING_DELETE_TITLE "Curățare Clipboard"
|
||||
STRING_FORMAT_NT "Fișiere clipboard pentru ReactOS (*.clp)"
|
||||
STRING_FORMAT_GEN "Fișiere clipboard (*.clp)"
|
||||
END
|
||||
|
@@ -331,6 +331,45 @@ void PlayEnhMetaFileFromClipboard(HDC hdc, const RECT *lpRect)
|
||||
PlayEnhMetaFile(hdc, hEmf, lpRect);
|
||||
}
|
||||
|
||||
static LPWSTR AllocStrCat(LPWSTR psz, LPCWSTR cat)
|
||||
{
|
||||
INT cch;
|
||||
LPWSTR pszNew;
|
||||
|
||||
if (psz == NULL)
|
||||
return _wcsdup(cat);
|
||||
|
||||
cch = lstrlenW(psz) + lstrlenW(cat) + 1;
|
||||
pszNew = realloc(psz, cch * sizeof(WCHAR));
|
||||
if (!pszNew)
|
||||
return psz;
|
||||
|
||||
lstrcatW(pszNew, cat);
|
||||
return pszNew;
|
||||
}
|
||||
|
||||
void HDropFromClipboard(HDC hdc, const RECT *lpRect)
|
||||
{
|
||||
LPWSTR pszAlloc = NULL;
|
||||
WCHAR szFile[MAX_PATH + 2];
|
||||
HDROP hDrop = (HDROP)GetClipboardData(CF_HDROP);
|
||||
UINT iFile, cFiles = DragQueryFileW(hDrop, 0xFFFFFFFF, NULL, 0);
|
||||
RECT rc = *lpRect;
|
||||
|
||||
FillRect(hdc, &rc, (HBRUSH)(COLOR_WINDOW + 1));
|
||||
|
||||
for (iFile = 0; iFile < cFiles; ++iFile)
|
||||
{
|
||||
DragQueryFileW(hDrop, iFile, szFile, _countof(szFile));
|
||||
lstrcatW(szFile, L"\r\n");
|
||||
pszAlloc = AllocStrCat(pszAlloc, szFile);
|
||||
}
|
||||
|
||||
DrawTextW(hdc, pszAlloc, -1, &rc,
|
||||
DT_LEFT | DT_NOPREFIX | DT_EXTERNALLEADING | DT_WORD_ELLIPSIS);
|
||||
free(pszAlloc);
|
||||
}
|
||||
|
||||
BOOL RealizeClipboardPalette(HDC hdc)
|
||||
{
|
||||
BOOL Success;
|
||||
|
@@ -17,4 +17,5 @@ void BitBltFromClipboard(PAINTSTRUCT ps, SCROLLSTATE state, DWORD dwRop);
|
||||
void SetDIBitsToDeviceFromClipboard(UINT uFormat, PAINTSTRUCT ps, SCROLLSTATE state, UINT fuColorUse);
|
||||
void PlayMetaFileFromClipboard(HDC hdc, const RECT *lpRect);
|
||||
void PlayEnhMetaFileFromClipboard(HDC hdc, const RECT *lpRect);
|
||||
void HDropFromClipboard(HDC hdc, const RECT *lpRect);
|
||||
BOOL RealizeClipboardPalette(HDC hdc);
|
||||
|
@@ -1,4 +1,10 @@
|
||||
/* Translator: Ștefan Fulea (stefan dot fulea at mail dot com) */
|
||||
/*
|
||||
* PROJECT: ReactOS AT utility
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: Romanian resource file
|
||||
* TRANSLATORS: Copyright 2011-2019 Ștefan Fulea <stefan.fulea@mail.com>
|
||||
* Copyright 2023 Andrei Miloiu <miloiuandrei@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
|
||||
|
||||
@@ -33,7 +39,7 @@ timp Specifică timpul de lansare a comenzii.\n\
|
||||
IDS_JOBS_LIST "ID stare Zi Oră Comanda\n"
|
||||
IDS_NO_ENTRIES "Nu există comenzi planificate.\n"
|
||||
|
||||
IDS_CONFIRM_QUESTION "Sigur doriți continuarea acestei operații? (D|N) [N]: "
|
||||
IDS_CONFIRM_QUESTION "Sigur doriți continuarea acestei operații? (D/N) [N]: "
|
||||
IDS_CONFIRM_INVALID "\nAcesta nu este un răspuns valid.\n"
|
||||
IDS_CONFIRM_YES "D"
|
||||
IDS_CONFIRM_NO "N"
|
||||
|
@@ -31,7 +31,7 @@ id Порядковый номер запланированно
|
||||
IDS_CONFIRM_YES "Y"
|
||||
IDS_CONFIRM_NO "N"
|
||||
|
||||
IDS_DELETE_ALL "This operation will delete all scheduled jobs.\n"
|
||||
IDS_DELETE_ALL "Эта операция удалит все запланированные задачи.\n"
|
||||
IDS_NEW_JOB "Добавлено новое задание с ID = %lu\n"
|
||||
IDS_JOBS_LIST "Статус ID День Время Команда\n"
|
||||
IDS_NO_ENTRIES "В списке нет запланированных задач.\n"
|
||||
|
@@ -1,35 +1,10 @@
|
||||
/*
|
||||
* ATTRIB.C - attrib internal command.
|
||||
*
|
||||
*
|
||||
* History:
|
||||
*
|
||||
* 04-Dec-1998 Eric Kohl
|
||||
* started
|
||||
*
|
||||
* 09-Dec-1998 Eric Kohl
|
||||
* implementation works, except recursion ("attrib /s").
|
||||
*
|
||||
* 05-Jan-1999 Eric Kohl
|
||||
* major rewrite.
|
||||
* fixed recursion ("attrib /s").
|
||||
* started directory support ("attrib /s /d").
|
||||
* updated help text.
|
||||
*
|
||||
* 14-Jan-1999 Eric Kohl
|
||||
* Unicode ready!
|
||||
*
|
||||
* 19-Jan-1999 Eric Kohl
|
||||
* Redirection ready!
|
||||
*
|
||||
* 21-Jan-1999 Eric Kohl
|
||||
* Added check for invalid filenames.
|
||||
*
|
||||
* 23-Jan-1999 Eric Kohl
|
||||
* Added handling of multiple filenames.
|
||||
*
|
||||
* 02-Apr-2005 (Magnus Olsen <magnus@greatlord.com>)
|
||||
* Remove all hardcoded strings in En.rc
|
||||
* PROJECT: ReactOS Attrib Command
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: Displays or changes file attributes recursively.
|
||||
* COPYRIGHT: Copyright 1998-2019 Eric Kohl <eric.kohl@reactos.org>
|
||||
* Copyright 2021 Doug Lyons <douglyons@douglyons.com>
|
||||
* Copyright 2021-2023 Hermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
@@ -39,15 +14,22 @@
|
||||
#include <winbase.h>
|
||||
#include <wincon.h>
|
||||
#include <winuser.h>
|
||||
#include <strsafe.h>
|
||||
|
||||
#include <conutils.h>
|
||||
|
||||
#include "resource.h"
|
||||
|
||||
/* Enable to support extended attributes.
|
||||
* See https://ss64.com/nt/attrib.html for an exhaustive list. */
|
||||
// TODO: If you enable this, translations need to be updated as well!
|
||||
//#define EXTENDED_ATTRIBUTES
|
||||
|
||||
#define ALL_FILES_PATTERN L"*.*" // It may also be possible to use L"*" (shorter)
|
||||
|
||||
CON_SCREEN StdOutScreen = INIT_CON_SCREEN(StdOut);
|
||||
|
||||
static
|
||||
VOID
|
||||
static VOID
|
||||
ErrorMessage(
|
||||
_In_ DWORD dwErrorCode,
|
||||
_In_opt_ PCWSTR pszMsg,
|
||||
@@ -77,217 +59,257 @@ ErrorMessage(
|
||||
ConPrintf(StdErr, L" %s\n", pszMsg);
|
||||
}
|
||||
|
||||
/* Returns TRUE if anything is printed, FALSE otherwise */
|
||||
static
|
||||
BOOL
|
||||
PrintAttribute(
|
||||
LPWSTR pszPath,
|
||||
LPWSTR pszFile,
|
||||
BOOL bRecurse,
|
||||
BOOL bDirectories)
|
||||
|
||||
/**
|
||||
* @brief Displays attributes for the given file.
|
||||
* @return Always TRUE (success).
|
||||
**/
|
||||
static BOOL
|
||||
PrintAttributes(
|
||||
_In_ PWIN32_FIND_DATAW pFindData,
|
||||
_In_ PCWSTR pszFullName,
|
||||
_Inout_opt_ PVOID Context)
|
||||
{
|
||||
DWORD dwAttributes = pFindData->dwFileAttributes;
|
||||
|
||||
UNREFERENCED_PARAMETER(Context);
|
||||
|
||||
ConPrintf(StdOut,
|
||||
#ifdef EXTENDED_ATTRIBUTES
|
||||
L"%c %c%c%c %c %s\n",
|
||||
#else
|
||||
L"%c %c%c%c %s\n",
|
||||
#endif
|
||||
(dwAttributes & FILE_ATTRIBUTE_ARCHIVE) ? L'A' : L' ',
|
||||
(dwAttributes & FILE_ATTRIBUTE_SYSTEM) ? L'S' : L' ',
|
||||
(dwAttributes & FILE_ATTRIBUTE_HIDDEN) ? L'H' : L' ',
|
||||
(dwAttributes & FILE_ATTRIBUTE_READONLY) ? L'R' : L' ',
|
||||
#ifdef EXTENDED_ATTRIBUTES
|
||||
(dwAttributes & FILE_ATTRIBUTE_NOT_CONTENT_INDEXED) ? L'I' : L' ',
|
||||
#endif
|
||||
pszFullName);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
typedef struct _ATTRIBS_MASKS
|
||||
{
|
||||
DWORD dwMask;
|
||||
DWORD dwAttrib;
|
||||
} ATTRIBS_MASKS, *PATTRIBS_MASKS;
|
||||
|
||||
/**
|
||||
* @brief Changes attributes for the given file.
|
||||
* @return TRUE if anything changed, FALSE otherwise.
|
||||
**/
|
||||
static BOOL
|
||||
ChangeAttributes(
|
||||
_In_ PWIN32_FIND_DATAW pFindData,
|
||||
_In_ PCWSTR pszFullName,
|
||||
_Inout_opt_ PVOID Context)
|
||||
{
|
||||
PATTRIBS_MASKS AttribsMasks = (PATTRIBS_MASKS)Context;
|
||||
DWORD dwAttributes;
|
||||
|
||||
dwAttributes = ((pFindData->dwFileAttributes & ~AttribsMasks->dwMask) | AttribsMasks->dwAttrib);
|
||||
return SetFileAttributesW(pszFullName, dwAttributes);
|
||||
}
|
||||
|
||||
|
||||
#define ENUM_RECURSE 0x01
|
||||
#define ENUM_DIRECTORIES 0x02
|
||||
|
||||
typedef BOOL
|
||||
(*PENUMFILES_CALLBACK)(
|
||||
_In_ PWIN32_FIND_DATAW pFindData,
|
||||
_In_ PCWSTR pszFullName,
|
||||
_Inout_opt_ PVOID Context);
|
||||
|
||||
typedef struct _ENUMFILES_CTX
|
||||
{
|
||||
/* Fixed data */
|
||||
_In_ PCWSTR FileName;
|
||||
_In_ DWORD Flags;
|
||||
|
||||
/* Callback invoked on each enumerated file/directory */
|
||||
_In_ PENUMFILES_CALLBACK Callback;
|
||||
_In_ PVOID Context;
|
||||
|
||||
/* Dynamic data */
|
||||
WIN32_FIND_DATAW findData;
|
||||
ULONG uReparseLevel;
|
||||
|
||||
/* The full path buffer the function will act recursively */
|
||||
// PWSTR FullPath; // Use a relocated buffer once long paths become supported!
|
||||
size_t cchBuffer; // Buffer size
|
||||
WCHAR FullPathBuffer[MAX_PATH + _countof("\\" ALL_FILES_PATTERN)];
|
||||
|
||||
} ENUMFILES_CTX, *PENUMFILES_CTX;
|
||||
|
||||
/* Returns TRUE if anything is done, FALSE otherwise */
|
||||
static BOOL
|
||||
EnumFilesWorker(
|
||||
_Inout_ PENUMFILES_CTX EnumCtx,
|
||||
_Inout_ off_t offFilePart) // Offset to the file name inside FullPathBuffer
|
||||
{
|
||||
BOOL bFound = FALSE;
|
||||
HRESULT hRes;
|
||||
HANDLE hFind;
|
||||
WCHAR szFullName[MAX_PATH];
|
||||
LPWSTR pszFileName;
|
||||
BOOL bFound = FALSE;
|
||||
BOOL bIsDir;
|
||||
BOOL bExactMatch;
|
||||
DWORD Error;
|
||||
PWSTR findFileName = EnumCtx->findData.cFileName;
|
||||
PWSTR pFilePart = EnumCtx->FullPathBuffer + offFilePart;
|
||||
size_t cchRemaining = EnumCtx->cchBuffer - offFilePart;
|
||||
|
||||
/* prepare full file name buffer */
|
||||
wcscpy(szFullName, pszPath);
|
||||
pszFileName = szFullName + wcslen(szFullName);
|
||||
|
||||
/* display all subdirectories */
|
||||
if (bRecurse)
|
||||
/* Recurse over all subdirectories */
|
||||
if (EnumCtx->Flags & ENUM_RECURSE)
|
||||
{
|
||||
/* append *.* */
|
||||
wcscpy(pszFileName, L"*.*");
|
||||
/* Append '*.*' */
|
||||
hRes = StringCchCopyW(pFilePart, cchRemaining, ALL_FILES_PATTERN);
|
||||
if (hRes != S_OK)
|
||||
{
|
||||
if (hRes == STRSAFE_E_INSUFFICIENT_BUFFER)
|
||||
{
|
||||
// TODO: If this fails, try to reallocate EnumCtx->FullPathBuffer by
|
||||
// increasing its size by _countof(EnumCtx->findData.cFileName) + 1
|
||||
// to satisfy this copy, as well as the one made in the loop below.
|
||||
}
|
||||
// else
|
||||
ConPrintf(StdErr, L"Directory level too deep: %s\n", EnumCtx->FullPathBuffer);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
hFind = FindFirstFileW(szFullName, &findData);
|
||||
hFind = FindFirstFileW(EnumCtx->FullPathBuffer, &EnumCtx->findData);
|
||||
if (hFind == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
Error = GetLastError();
|
||||
if ((Error != ERROR_DIRECTORY) && (Error != ERROR_SHARING_VIOLATION)
|
||||
&& (Error != ERROR_FILE_NOT_FOUND))
|
||||
DWORD Error = GetLastError();
|
||||
if ((Error != ERROR_DIRECTORY) &&
|
||||
(Error != ERROR_SHARING_VIOLATION) &&
|
||||
(Error != ERROR_FILE_NOT_FOUND))
|
||||
{
|
||||
ErrorMessage(Error, pszFile);
|
||||
ErrorMessage(Error, EnumCtx->FullPathBuffer);
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
do
|
||||
{
|
||||
if (!(findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
|
||||
BOOL bIsReparse;
|
||||
size_t offNewFilePart;
|
||||
|
||||
if (!(EnumCtx->findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
|
||||
continue;
|
||||
|
||||
if (!wcscmp(findData.cFileName, L".") ||
|
||||
!wcscmp(findData.cFileName, L".."))
|
||||
{
|
||||
if (!wcscmp(findFileName, L".") || !wcscmp(findFileName, L".."))
|
||||
continue;
|
||||
|
||||
/* Allow at most 2 levels of reparse points / symbolic links */
|
||||
bIsReparse = !!(EnumCtx->findData.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT);
|
||||
if (bIsReparse)
|
||||
{
|
||||
if (EnumCtx->uReparseLevel < 2)
|
||||
EnumCtx->uReparseLevel++;
|
||||
else
|
||||
continue;
|
||||
}
|
||||
|
||||
wcscpy(pszFileName, findData.cFileName);
|
||||
wcscat(pszFileName, L"\\");
|
||||
bFound |= PrintAttribute(szFullName, pszFile, bRecurse, bDirectories);
|
||||
hRes = StringCchPrintfExW(pFilePart, cchRemaining,
|
||||
NULL, &offNewFilePart, 0,
|
||||
L"%s\\", findFileName);
|
||||
/* Offset to the new file name part */
|
||||
offNewFilePart = EnumCtx->cchBuffer - offNewFilePart;
|
||||
|
||||
bFound |= EnumFilesWorker(EnumCtx, offNewFilePart);
|
||||
|
||||
/* Recalculate the file part pointer and the number of characters
|
||||
* remaining: the buffer may have been enlarged and relocated. */
|
||||
pFilePart = EnumCtx->FullPathBuffer + offFilePart;
|
||||
cchRemaining = EnumCtx->cchBuffer - offFilePart;
|
||||
|
||||
/* If we went through a reparse point / symbolic link, decrease level */
|
||||
if (bIsReparse)
|
||||
EnumCtx->uReparseLevel--;
|
||||
}
|
||||
while (FindNextFileW(hFind, &findData));
|
||||
while (FindNextFileW(hFind, &EnumCtx->findData));
|
||||
FindClose(hFind);
|
||||
}
|
||||
|
||||
/* append file name */
|
||||
wcscpy(pszFileName, pszFile);
|
||||
/* Append the file name pattern to search for */
|
||||
hRes = StringCchCopyW(pFilePart, cchRemaining, EnumCtx->FileName);
|
||||
|
||||
/* search current directory */
|
||||
hFind = FindFirstFileW(szFullName, &findData);
|
||||
/* Search in the current directory */
|
||||
hFind = FindFirstFileW(EnumCtx->FullPathBuffer, &EnumCtx->findData);
|
||||
if (hFind == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
return bFound;
|
||||
}
|
||||
|
||||
do
|
||||
{
|
||||
bIsDir = findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY;
|
||||
bExactMatch = wcsicmp(findData.cFileName, pszFile) == 0;
|
||||
BOOL bIsDir = !!(EnumCtx->findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY);
|
||||
BOOL bExactMatch = (wcsicmp(findFileName, EnumCtx->FileName) == 0);
|
||||
|
||||
if (bIsDir && !bDirectories && !bExactMatch)
|
||||
if (bIsDir && !(EnumCtx->Flags & ENUM_DIRECTORIES) && !bExactMatch)
|
||||
continue;
|
||||
|
||||
if (!wcscmp(findData.cFileName, L".") ||
|
||||
!wcscmp(findData.cFileName, L".."))
|
||||
{
|
||||
if (!wcscmp(findFileName, L".") || !wcscmp(findFileName, L".."))
|
||||
continue;
|
||||
}
|
||||
|
||||
wcscpy(pszFileName, findData.cFileName);
|
||||
/* If we recursively enumerate files excluding directories,
|
||||
* exclude any directory from the enumeration. */
|
||||
if (bIsDir && !(EnumCtx->Flags & ENUM_DIRECTORIES) && (EnumCtx->Flags & ENUM_RECURSE))
|
||||
continue;
|
||||
|
||||
ConPrintf(StdOut,
|
||||
L"%c %c%c%c %s\n",
|
||||
(findData.dwFileAttributes & FILE_ATTRIBUTE_ARCHIVE) ? L'A' : L' ',
|
||||
(findData.dwFileAttributes & FILE_ATTRIBUTE_SYSTEM) ? L'S' : L' ',
|
||||
(findData.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) ? L'H' : L' ',
|
||||
(findData.dwFileAttributes & FILE_ATTRIBUTE_READONLY) ? L'R' : L' ',
|
||||
szFullName);
|
||||
StringCchCopyW(pFilePart, cchRemaining, findFileName);
|
||||
/* bFound = */ EnumCtx->Callback(&EnumCtx->findData, EnumCtx->FullPathBuffer, EnumCtx->Context);
|
||||
bFound = TRUE;
|
||||
}
|
||||
while (FindNextFileW(hFind, &findData));
|
||||
while (FindNextFileW(hFind, &EnumCtx->findData));
|
||||
FindClose(hFind);
|
||||
|
||||
return bFound;
|
||||
}
|
||||
|
||||
|
||||
/* Returns TRUE if anything changed, FALSE otherwise */
|
||||
static
|
||||
BOOL
|
||||
ChangeAttribute(
|
||||
LPWSTR pszPath,
|
||||
LPWSTR pszFile,
|
||||
BOOL bRecurse,
|
||||
BOOL bDirectories,
|
||||
DWORD dwMask,
|
||||
DWORD dwAttrib)
|
||||
static BOOL
|
||||
AttribEnumFiles(
|
||||
_In_ PCWSTR pszPath,
|
||||
_In_ PCWSTR pszFile,
|
||||
_In_ DWORD fFlags,
|
||||
_In_ PATTRIBS_MASKS AttribsMasks)
|
||||
{
|
||||
WIN32_FIND_DATAW findData;
|
||||
HANDLE hFind;
|
||||
WCHAR szFullName[MAX_PATH];
|
||||
LPWSTR pszFileName;
|
||||
BOOL bFound = FALSE;
|
||||
BOOL bIsDir;
|
||||
BOOL bExactMatch;
|
||||
DWORD dwAttribute;
|
||||
DWORD Error;
|
||||
ENUMFILES_CTX EnumContext = {0};
|
||||
size_t offFilePart;
|
||||
HRESULT hRes;
|
||||
|
||||
/* prepare full file name buffer */
|
||||
wcscpy(szFullName, pszPath);
|
||||
pszFileName = szFullName + wcslen(szFullName);
|
||||
EnumContext.FileName = pszFile;
|
||||
EnumContext.Flags = fFlags;
|
||||
EnumContext.Callback = (AttribsMasks->dwMask == 0 ? PrintAttributes : ChangeAttributes);
|
||||
EnumContext.Context = (AttribsMasks->dwMask == 0 ? NULL : AttribsMasks);
|
||||
|
||||
/* display all subdirectories */
|
||||
if (bRecurse)
|
||||
/* Prepare the full file path buffer */
|
||||
EnumContext.cchBuffer = _countof(EnumContext.FullPathBuffer);
|
||||
hRes = StringCchCopyExW(EnumContext.FullPathBuffer,
|
||||
EnumContext.cchBuffer,
|
||||
pszPath,
|
||||
NULL,
|
||||
&offFilePart,
|
||||
0);
|
||||
if (hRes != S_OK)
|
||||
return FALSE;
|
||||
|
||||
/* Offset to the file name part */
|
||||
offFilePart = EnumContext.cchBuffer - offFilePart;
|
||||
if (EnumContext.FullPathBuffer[offFilePart - 1] != L'\\')
|
||||
{
|
||||
/* append *.* */
|
||||
wcscpy(pszFileName, L"*.*");
|
||||
|
||||
hFind = FindFirstFileW(szFullName, &findData);
|
||||
if (hFind == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
Error = GetLastError();
|
||||
if ((Error != ERROR_DIRECTORY) && (Error != ERROR_SHARING_VIOLATION)
|
||||
&& (Error != ERROR_FILE_NOT_FOUND))
|
||||
{
|
||||
ErrorMessage(Error, pszFile);
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
do
|
||||
{
|
||||
if (!(findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
|
||||
continue;
|
||||
|
||||
if (!wcscmp(findData.cFileName, L".") ||
|
||||
!wcscmp(findData.cFileName, L".."))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
wcscpy(pszFileName, findData.cFileName);
|
||||
wcscat(pszFileName, L"\\");
|
||||
bFound |= ChangeAttribute(szFullName, pszFile, bRecurse, bDirectories,
|
||||
dwMask, dwAttrib);
|
||||
}
|
||||
while (FindNextFileW(hFind, &findData));
|
||||
FindClose(hFind);
|
||||
EnumContext.FullPathBuffer[offFilePart] = L'\\';
|
||||
EnumContext.FullPathBuffer[offFilePart + 1] = UNICODE_NULL;
|
||||
offFilePart++;
|
||||
}
|
||||
|
||||
/* append file name */
|
||||
wcscpy(pszFileName, pszFile);
|
||||
|
||||
/* search current directory */
|
||||
hFind = FindFirstFileW(szFullName, &findData);
|
||||
if (hFind == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
return bFound;
|
||||
}
|
||||
|
||||
do
|
||||
{
|
||||
bIsDir = findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY;
|
||||
bExactMatch = wcsicmp(findData.cFileName, pszFile) == 0;
|
||||
|
||||
if (bIsDir && !bDirectories && !bExactMatch)
|
||||
continue;
|
||||
|
||||
if (!wcscmp(findData.cFileName, L".") ||
|
||||
!wcscmp(findData.cFileName, L".."))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (bRecurse && bIsDir && !bDirectories)
|
||||
continue;
|
||||
|
||||
wcscpy(pszFileName, findData.cFileName);
|
||||
|
||||
dwAttribute = (findData.dwFileAttributes & ~dwMask) | dwAttrib;
|
||||
|
||||
SetFileAttributes(szFullName, dwAttribute);
|
||||
bFound = TRUE;
|
||||
}
|
||||
while (FindNextFileW(hFind, &findData));
|
||||
FindClose(hFind);
|
||||
|
||||
return bFound;
|
||||
return EnumFilesWorker(&EnumContext, offFilePart);
|
||||
}
|
||||
|
||||
int wmain(int argc, WCHAR *argv[])
|
||||
{
|
||||
INT i;
|
||||
BOOL bRecurse = FALSE;
|
||||
BOOL bDirectories = FALSE;
|
||||
DWORD dwAttrib = 0;
|
||||
DWORD dwMask = 0;
|
||||
DWORD dwEnumFlags = 0;
|
||||
ATTRIBS_MASKS AttribsMasks = {0};
|
||||
BOOL bFound = FALSE;
|
||||
PWSTR pszFileName;
|
||||
WCHAR szFilePath[MAX_PATH + 2] = L""; // + 2 to reserve an extra path separator and a NULL-terminator.
|
||||
@@ -309,9 +331,9 @@ int wmain(int argc, WCHAR *argv[])
|
||||
else
|
||||
/* Retrieve the enumeration modes */
|
||||
if (wcsicmp(argv[i], L"/s") == 0)
|
||||
bRecurse = TRUE;
|
||||
dwEnumFlags |= ENUM_RECURSE;
|
||||
else if (wcsicmp(argv[i], L"/d") == 0)
|
||||
bDirectories = TRUE;
|
||||
dwEnumFlags |= ENUM_DIRECTORIES;
|
||||
else
|
||||
{
|
||||
/* Unknown option */
|
||||
@@ -334,37 +356,47 @@ int wmain(int argc, WCHAR *argv[])
|
||||
switch (towupper(argv[i][1]))
|
||||
{
|
||||
case L'A':
|
||||
dwMask |= FILE_ATTRIBUTE_ARCHIVE;
|
||||
AttribsMasks.dwMask |= FILE_ATTRIBUTE_ARCHIVE;
|
||||
if (bAdd)
|
||||
dwAttrib |= FILE_ATTRIBUTE_ARCHIVE;
|
||||
AttribsMasks.dwAttrib |= FILE_ATTRIBUTE_ARCHIVE;
|
||||
else
|
||||
dwAttrib &= ~FILE_ATTRIBUTE_ARCHIVE;
|
||||
AttribsMasks.dwAttrib &= ~FILE_ATTRIBUTE_ARCHIVE;
|
||||
break;
|
||||
|
||||
case L'S':
|
||||
dwMask |= FILE_ATTRIBUTE_SYSTEM;
|
||||
AttribsMasks.dwMask |= FILE_ATTRIBUTE_SYSTEM;
|
||||
if (bAdd)
|
||||
dwAttrib |= FILE_ATTRIBUTE_SYSTEM;
|
||||
AttribsMasks.dwAttrib |= FILE_ATTRIBUTE_SYSTEM;
|
||||
else
|
||||
dwAttrib &= ~FILE_ATTRIBUTE_SYSTEM;
|
||||
AttribsMasks.dwAttrib &= ~FILE_ATTRIBUTE_SYSTEM;
|
||||
break;
|
||||
|
||||
case L'H':
|
||||
dwMask |= FILE_ATTRIBUTE_HIDDEN;
|
||||
AttribsMasks.dwMask |= FILE_ATTRIBUTE_HIDDEN;
|
||||
if (bAdd)
|
||||
dwAttrib |= FILE_ATTRIBUTE_HIDDEN;
|
||||
AttribsMasks.dwAttrib |= FILE_ATTRIBUTE_HIDDEN;
|
||||
else
|
||||
dwAttrib &= ~FILE_ATTRIBUTE_HIDDEN;
|
||||
AttribsMasks.dwAttrib &= ~FILE_ATTRIBUTE_HIDDEN;
|
||||
break;
|
||||
|
||||
case L'R':
|
||||
dwMask |= FILE_ATTRIBUTE_READONLY;
|
||||
AttribsMasks.dwMask |= FILE_ATTRIBUTE_READONLY;
|
||||
if (bAdd)
|
||||
dwAttrib |= FILE_ATTRIBUTE_READONLY;
|
||||
AttribsMasks.dwAttrib |= FILE_ATTRIBUTE_READONLY;
|
||||
else
|
||||
dwAttrib &= ~FILE_ATTRIBUTE_READONLY;
|
||||
AttribsMasks.dwAttrib &= ~FILE_ATTRIBUTE_READONLY;
|
||||
break;
|
||||
|
||||
#ifdef EXTENDED_ATTRIBUTES
|
||||
case L'I':
|
||||
AttribsMasks.dwMask |= FILE_ATTRIBUTE_NOT_CONTENT_INDEXED;
|
||||
if (bAdd)
|
||||
AttribsMasks.dwAttrib |= FILE_ATTRIBUTE_NOT_CONTENT_INDEXED;
|
||||
else
|
||||
AttribsMasks.dwAttrib &= ~FILE_ATTRIBUTE_NOT_CONTENT_INDEXED;
|
||||
break;
|
||||
#endif
|
||||
|
||||
default:
|
||||
ConResPrintf(StdErr, STRING_ERROR_INVALID_PARAM_FORMAT, argv[i]);
|
||||
return -1;
|
||||
@@ -380,19 +412,10 @@ int wmain(int argc, WCHAR *argv[])
|
||||
/* If no file specification was found, operate on all files of the current directory */
|
||||
if (!bFound)
|
||||
{
|
||||
DWORD len = GetCurrentDirectoryW(_countof(szFilePath) - 2, szFilePath);
|
||||
if (szFilePath[len - 1] != L'\\')
|
||||
{
|
||||
szFilePath[len] = L'\\';
|
||||
szFilePath[len + 1] = UNICODE_NULL;
|
||||
}
|
||||
pszFileName = L"*.*";
|
||||
|
||||
if (dwMask == 0)
|
||||
bFound = PrintAttribute(szFilePath, pszFileName, bRecurse, bDirectories);
|
||||
else
|
||||
bFound = ChangeAttribute(szFilePath, pszFileName, bRecurse, bDirectories, dwMask, dwAttrib);
|
||||
GetCurrentDirectoryW(_countof(szFilePath) - 2, szFilePath);
|
||||
pszFileName = ALL_FILES_PATTERN;
|
||||
|
||||
bFound = AttribEnumFiles(szFilePath, pszFileName, dwEnumFlags, &AttribsMasks);
|
||||
if (!bFound)
|
||||
ConResPrintf(StdOut, STRING_FILE_NOT_FOUND, pszFileName);
|
||||
|
||||
@@ -419,11 +442,7 @@ int wmain(int argc, WCHAR *argv[])
|
||||
pszFileName = L"";
|
||||
}
|
||||
|
||||
if (dwMask == 0)
|
||||
bFound = PrintAttribute(szFilePath, pszFileName, bRecurse, bDirectories);
|
||||
else
|
||||
bFound = ChangeAttribute(szFilePath, pszFileName, bRecurse, bDirectories, dwMask, dwAttrib);
|
||||
|
||||
bFound = AttribEnumFiles(szFilePath, pszFileName, dwEnumFlags, &AttribsMasks);
|
||||
if (!bFound)
|
||||
ConResPrintf(StdOut, STRING_FILE_NOT_FOUND, argv[i]);
|
||||
}
|
||||
|
@@ -3,6 +3,7 @@
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: Romanian resource file
|
||||
* TRANSLATORS: Copyright 2011-2014 Ștefan Fulea <stefan.fulea@mail.com>
|
||||
* Copyright 2023 Andrei Miloiu <miloiuandrei@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
|
||||
@@ -23,6 +24,6 @@ ATTRIB [+R | -R] [+A | -A] [+S | -S] [+H | -H] fișier ...\n\
|
||||
Tastați ATTRIB fără argumente pentru afișarea atributelor pentru\n\
|
||||
toate fișierele.\n"
|
||||
STRING_CONSOLE_ERROR "Eroare necunoscută: %d\n"
|
||||
STRING_FILE_NOT_FOUND "File not found - '%s'\n"
|
||||
STRING_FILE_NOT_FOUND "Fișierul nu a fost găsit - '%s'\n"
|
||||
STRING_ERROR_INVALID_PARAM_FORMAT "Formatul argumentului este eronat - %s\n"
|
||||
END
|
||||
|
@@ -26,6 +26,6 @@ ATTRIB [+R | -R] [+A | -A] [+S | -S] [+H | -H] файл ...\n\
|
||||
/D Обработка и файлов, и папок.\n\n\
|
||||
Команда ATTRIB без параметров выводит атрибуты всех файлов.\n"
|
||||
STRING_CONSOLE_ERROR "Неизвестная ошибка: %d\n"
|
||||
STRING_FILE_NOT_FOUND "File not found - '%s'\n"
|
||||
STRING_FILE_NOT_FOUND "Файл не найден - '%s'\n"
|
||||
STRING_ERROR_INVALID_PARAM_FORMAT "Неверный формат параметра - %s\n"
|
||||
END
|
||||
|
@@ -9,7 +9,7 @@ COMP [/L] [/A] [данные1] [данные2]\n\n\
|
||||
/A Вывод различий в формате ASCII (по умолчанию: шестнадцатиричный).\n\
|
||||
/L Вывод номеров строк, в которых обнаружены различия.\n"
|
||||
IDS_INVALIDSWITCH "Недопустимый ключ - /%c\n"
|
||||
IDS_BADSYNTAX "Не верный формат командной строки\n"
|
||||
IDS_BADSYNTAX "Неверный формат командной строки\n"
|
||||
IDS_FILEERROR "Не удалось найти/открыть файл: %s\n"
|
||||
IDS_COMPARING "Сравнение %s и %s...\n"
|
||||
IDS_FILESIZEERROR "Не удалось определить размер файла: %s\n"
|
||||
|
@@ -15,6 +15,7 @@ add_typelib(ihost.idl)
|
||||
set_source_files_properties(rsrc.rc PROPERTIES OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/ihost.tlb)
|
||||
target_link_libraries(cscript uuid wine)
|
||||
set_module_type(cscript win32cui UNICODE)
|
||||
add_delay_importlibs(cscript shlwapi)
|
||||
add_importlibs(cscript shell32 oleaut32 ole32 advapi32 user32 msvcrt kernel32 ntdll)
|
||||
add_dependencies(cscript stdole2 cscript_idlheader)
|
||||
add_pch(cscript ${wscript_folder}/precomp.h SOURCE)
|
||||
|
@@ -2,7 +2,7 @@
|
||||
* PROJECT: ReactOS FC Command
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: Romanian resource file
|
||||
* TRANSLATORS: Copyright 2022 Andrei Miloiu <miloiuandrei@gmail.com>
|
||||
* TRANSLATORS: Copyright 2022-2024 Andrei Miloiu <miloiuandrei@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
|
||||
@@ -39,7 +39,7 @@ FC /B [discul1:][calea1]numele fișierului1 [drive2:][path2]numele fișierului2\
|
||||
IDS_OUT_OF_MEMORY "FC: Fără memorie\n"
|
||||
IDS_CANNOT_READ "FC: nu poate fi citit din %ls\n"
|
||||
IDS_INVALID_SWITCH "FC: Comutator nevalidh\n"
|
||||
IDS_CANNOT_OPEN "FC: nu poate fi deschis %ls - Nu există un astfel de fișier sau dosar\n"
|
||||
IDS_CANNOT_OPEN "FC: nu poate fi deschis %ls - Nu există un astfel de fișier sau folder\n"
|
||||
IDS_NEEDS_FILES "FC: Număr insuficient de specificații pentru fișiere\n"
|
||||
IDS_CANT_USE_WILDCARD "Semnele speciale ('*' și '?') nu sunt acceptate deocamdată\n"
|
||||
IDS_DIFFERENT "FC: Fișierele %ls și %ls sunt diferite\n"
|
||||
|
@@ -30,9 +30,9 @@ FC /B [диск1:][путь1]имя_файла1 [диск2:][путь2]имя_ф
|
||||
IDS_LONGER_THAN "FC: %ls длиннее, чем %ls\n"
|
||||
IDS_COMPARING "Сравнение файлов %ls и %ls\n"
|
||||
IDS_OUT_OF_MEMORY "FC: Недостаточно памяти\n"
|
||||
IDS_CANNOT_READ "FC: не удаётся прочитать %ls\n"
|
||||
IDS_CANNOT_READ "FC: Не удаётся прочитать %ls\n"
|
||||
IDS_INVALID_SWITCH "FC: Недопустимый ключ\n"
|
||||
IDS_CANNOT_OPEN "FC: не удаётся открыть %ls - файл либо папка не существует\n"
|
||||
IDS_CANNOT_OPEN "FC: Не удаётся открыть %ls - файл либо папка не существует\n"
|
||||
IDS_NEEDS_FILES "FC: Недостаточное количество имён файлов\n"
|
||||
IDS_CANT_USE_WILDCARD "Подстановочные знаки ('*' и '?') пока не поддерживаются\n"
|
||||
IDS_DIFFERENT "FC: Файлы %ls и %ls различны\n"
|
||||
|
@@ -1,9 +1,9 @@
|
||||
/*
|
||||
* FILE: base/applications/cmdutils/find/lang/ro-RO.rc
|
||||
* ReactOS Project (https://reactos.org)
|
||||
* TRANSLATOR: Fulea Ștefan (PM on ReactOS Forum at fulea.stefan)
|
||||
* CHANGE LOG: 2011-08-20 initial translation
|
||||
* 2011-10-17 diacritics change, other minor changes
|
||||
* PROJECT: ReactOS Find Command
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: Romanian resource file
|
||||
* TRANSLATORS: Copyright 2011-2019 Ștefan Fulea <stefan.fulea@mail.com>
|
||||
* Copyright 2023 Andrei Miloiu <miloiuandrei@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
|
||||
@@ -16,8 +16,9 @@ FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] ""șir"" [fișier...]\n\
|
||||
/C Numără liniile ce conțin șirul.\n\
|
||||
/N Numără rândurile afișate, începând cu 1.\n\
|
||||
/I Ignoră diferențele între majuscule și minuscule.\n\
|
||||
/OFF[LINE] Do not skip files that have the offline attribute set."
|
||||
/OFF[LINE] Nu omite fișierele care au configurate atributul\n\
|
||||
offline (deconectat)."
|
||||
IDS_NO_SUCH_FILE "FIND: Fișierul «%s» nu există!\n"
|
||||
IDS_CANNOT_OPEN "FIND: Fișierul «%s» nu poate fi deschis!\n"
|
||||
IDS_INVALID_SWITCH "FIND: Invalid switch\n"
|
||||
IDS_INVALID_SWITCH "FIND: Comutare nevalidă\n"
|
||||
END
|
||||
|
@@ -8,11 +8,11 @@ FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] ""строка"" [[диск:][путь]и
|
||||
/C Вывод только общего числа строк, содержащих заданную строку.\n\
|
||||
/N Вывод номеров отображаемых строк.\n\
|
||||
/I Поиск без учета регистра символов.\n\
|
||||
/OFF[LINE] Do not skip files that have the offline attribute set.\n\
|
||||
/OFF[LINE] Не пропускать файлы, у которых установлен атрибут offline.\n\
|
||||
""строка"" Искомая строка.\n\
|
||||
[диск:][путь]имя_файла\n\
|
||||
Один или несколько файлов, в которых выполняется поиск."
|
||||
IDS_NO_SUCH_FILE "FIND: %s: Файл не существует.\n"
|
||||
IDS_CANNOT_OPEN "FIND: %s: Невозможно открыть файл.\n"
|
||||
IDS_INVALID_SWITCH "FIND: Invalid switch\n"
|
||||
IDS_INVALID_SWITCH "FIND: Недопустимый ключ\n"
|
||||
END
|
||||
|
@@ -1,8 +1,9 @@
|
||||
/*
|
||||
* FILE: base/applications/cmdutils/help/lang/ro-RO.rc
|
||||
* ReactOS Project (https://reactos.org)
|
||||
* AUTHOR: Magnus Olsen, 2005
|
||||
* TRANSLATOR: Ștefan Fulea (stefan dot fulea at mail dot com)
|
||||
* PROJECT: ReactOS help utility
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: Romanian resource file
|
||||
* TRANSLATORS: Copyright 2014-2018 Ștefan Fulea <stefan.fulea@mail.com>
|
||||
* Copyright 2023 Andrei Miloiu <miloiuandrei@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
|
||||
@@ -21,7 +22,7 @@ HELP [comandă]\n\n\
|
||||
help comandă\n\
|
||||
comandă /? Pentru mai multe informații referitoare la o anume comandă.\n\n\
|
||||
? Enumeră toate comenzile disponibile (fără descriere).\n\
|
||||
ALIAS Instituie, destituie sau afișează alias.\n\
|
||||
ALIAS Setează, șterge sau afișează aliasuri.\n\
|
||||
ASSOC Modifică asocierile extensiilor de fișiere.\n\
|
||||
ATTRIB Afișează sau modifică atributele fișierelor.\n\
|
||||
BEEP Semnalizează utilizând difuzorul intern.\n\
|
||||
|
@@ -1,20 +1,25 @@
|
||||
/* Translator: Ștefan Fulea (stefan dot fulea at mail dot com) */
|
||||
/*
|
||||
* PROJECT: ReactOS Label Command
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: Romanian resource file
|
||||
* TRANSLATORS: Copyright 2011-2019 Ștefan Fulea <stefan.fulea@mail.com>
|
||||
* Copyright 2023-2024 Andrei Miloiu <miloiuandrei@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
// STRING_LABEL_HELP "Afișează sau modifică eticheta unei unități (de stocare).\n\nLABEL [unitate:][etichetă]\n"
|
||||
STRING_LABEL_HELP "Creates, changes or deletes the volume label of a disk.\n\n\
|
||||
LABEL [drive:][label]\n\n\
|
||||
drive: Specifies the drive letter of a drive.\n\
|
||||
label Specifies the label of the drive."
|
||||
STRING_LABEL_TEXT1 "Volumul unității %c: este etichetat ca %s\n"
|
||||
STRING_LABEL_TEXT2 "Volumul unității %c: nu este etichetat.\n"
|
||||
STRING_LABEL_HELP "Crează, schimbă sau șterge denumirea unui disc.\n\n\
|
||||
LABEL [disc:][denumire]\n\n\
|
||||
disc: Specifică litera unui disc.\n\
|
||||
denumire Specifică denumirea unui disc."
|
||||
STRING_LABEL_TEXT1 "Volumul discului %c: este %s\n"
|
||||
STRING_LABEL_TEXT2 "Volumul discului %c: nu are denumire.\n"
|
||||
STRING_LABEL_TEXT3 "Numărul de serie al volumului este %04X-%04X\n"
|
||||
STRING_LABEL_TEXT4 "Introduceți eticheta unității (opțională, de 32 caractere), apoi ENTER "
|
||||
STRING_LABEL_PROMPT "Delete current volume label (Y/N)? "
|
||||
STRING_LABEL_OPTIONS "YN"
|
||||
STRING_ERROR_INVALID_DRIVE "Specificarea unității este eronată\n"
|
||||
STRING_ERROR_INVALID_LABEL "Invalid volume label\n"
|
||||
STRING_LABEL_TEXT4 "Denumirea volumului (32 de caractere, ENTER dacă dacă nu există)?"
|
||||
STRING_LABEL_PROMPT "Ștergeți denumirea actuală a volumului (D/N)? "
|
||||
STRING_LABEL_OPTIONS "DN"
|
||||
STRING_ERROR_INVALID_DRIVE "Specificarea discului este nevalidă\n"
|
||||
STRING_ERROR_INVALID_LABEL "Denumirea volumului e nevalidă\n"
|
||||
END
|
||||
|
@@ -1,60 +1,65 @@
|
||||
/*
|
||||
* FILE: base/applications/cmdutils/more/lang/ro-RO.rc
|
||||
* ReactOS Project (https://reactos.org)
|
||||
* TRANSLATOR: Fulea Ștefan (PM on ReactOS Forum at fulea.stefan)
|
||||
* CHANGE LOG: 2011-08-20 initial translation
|
||||
* 2011-10-17 diacritics change, other minor changes
|
||||
* PROJECT: ReactOS More Command
|
||||
* LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
|
||||
* PURPOSE: Romanian resource file
|
||||
* TRANSLATORS: Copyright 2011-2019 Ștefan Fulea <stefan.fulea@mail.com>
|
||||
* Copyright 2023-2024 Andrei Miloiu <miloiuandrei@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_USAGE "Afișează date pe ecran, pagină-cu-pagină.\n\
|
||||
IDS_USAGE "Afișarea datelor pe ecran, pagină cu pagină.\n\
|
||||
\n\
|
||||
MORE [/E [options]] < [drive:][path]filename\n\
|
||||
command | MORE [/E [options]]\n\
|
||||
MORE [/E [opțiuni]] < [disc:][cale]numele fișierului\n\
|
||||
command | MORE [/E [opțiuni]\n\
|
||||
\n\
|
||||
[drive:][path]filename A file whose contents are to be displayed.\n\
|
||||
command A command whose output is to be displayed.\n\
|
||||
[disc:][cale]numele fișierului Un fișier al cărui conținut\n\
|
||||
urmează să fie afișat.\n\
|
||||
comandă O comandă a cărei ieșire\n\
|
||||
urmează să fie afișată.\n\
|
||||
\n\
|
||||
When Extended Features are enabled, the following form is supported:\n\
|
||||
MORE [/E] [options] [files]\n\
|
||||
Atunci când Caracteristicile extinse sunt activate,\n\
|
||||
următoarea formă este acceptată:\n\
|
||||
MORE [/E] [opțiuni] [fișiere]\n\
|
||||
\n\
|
||||
Options:\n\
|
||||
/E Enable Extended Features.\n\
|
||||
The default state of the Extended Features is controlled by the default\n\
|
||||
registry settings for CMD.EXE. For more details on how to change these\n\
|
||||
settings, see the section ""Command Extensions"" in CMD.EXE help.\n\
|
||||
Opțiuni:\n\
|
||||
/E Activarea opțiunii Caracteristici extinse.\n\
|
||||
Stadiul implicit al Caracteristicilor extinse e controlat de setările\n\
|
||||
implicite de registru pentru programul CMD.EXE. Pentru mai multe detalii\n\
|
||||
legate de cum pot fi schimbate aceste setări, vedeți secțiunea\n\
|
||||
""Extensii de comenzi"" în secțiunea de ajutor a programului CMD.EXE.\n\
|
||||
\n\
|
||||
When Extended Features are enabled, the following options are available:\n\
|
||||
/C Clear the screen before displaying a page.\n\
|
||||
/P Expand Form-Feed characters.\n\
|
||||
/S Shrink successive blank lines to a single line.\n\
|
||||
/Tn Expand tabs to n spaces (default: 8).\n\
|
||||
Atunci când opțiunea Caracteristici extinse e activată, sunt disponibile\n\
|
||||
următoarele opțiuni:\n\
|
||||
/C Curățarea ecranului înainte de a se afișa o pagină.\n\
|
||||
/P Extinderea caracterelor Form-Feed (de alimentare de formulare).\n\
|
||||
/S Reducerea liniilor goale succesive la o singură linie.\n\
|
||||
/Tn Extinderea tab-urilor la n spații (implicit: 8).\n\
|
||||
\n\
|
||||
These options can be specified in the MORE environment variable.\n\
|
||||
Aceste opțiuni pot fi specificate în variabila de mediu MORE.\n\
|
||||
\n\
|
||||
+n Start displaying the first file at line n.\n\
|
||||
files List of files to display, separated by blanks.\n\
|
||||
+n Începerea afișării primului fișier la linia n.\n\
|
||||
fișiere Lista fișierelor de afișat, separate prin spații libere.\n\
|
||||
\n\
|
||||
When Extended Features are enabled, the following commands are available\n\
|
||||
at the ""-- Continue --"" prompt:\n\
|
||||
Atunci când opțiunea Caracteristici extinse e activată, sunt disponibile\n\
|
||||
următoarele comenzi la panoul ""-- Continuă --"":\n\
|
||||
\n\
|
||||
P n Display the next n lines.\n\
|
||||
S n Skip the next n lines.\n\
|
||||
F Display the next file.\n\
|
||||
Q Quit.\n\
|
||||
= Show the line number.\n\
|
||||
? Show the help line.\n\
|
||||
<Space> Display the next page.\n\
|
||||
<Enter> Display the next line.\n"
|
||||
P n Afișarea următoarelor n linii.\n\
|
||||
S n Omiterea următoarelor n linii.\n\
|
||||
F Afișarea următorului fișier.\n\
|
||||
Q Ieșire.\n\
|
||||
= Afișarea numărului de linie.\n\
|
||||
? Afișarea liniei de ajutor.\n\
|
||||
<Space> Afișarea următoarei pagini.\n\
|
||||
<Enter> Afișarea următoari linii.\n"
|
||||
|
||||
IDS_BAD_FLAG "Invalid argument - '%s'\n"
|
||||
IDS_BAD_FLAG "Argument nevalid - '%s'\n"
|
||||
IDS_FILE_ACCESS "Fișierul «%s» nu poate fi accesat!\n"
|
||||
IDS_CONTINUE_PROMPT "-- Continuă%1%2%3 --%4"
|
||||
IDS_CONTINUE_PERCENT " (%d%%)"
|
||||
IDS_CONTINUE_LINE_AT " [Line: %d]"
|
||||
IDS_CONTINUE_OPTIONS " [Options: psfq=<Space><Enter>]"
|
||||
IDS_CONTINUE_LINES " Lines: "
|
||||
IDS_CONTINUE_LINE_AT " [Linie: %d]"
|
||||
IDS_CONTINUE_OPTIONS " [Opțiuni: psfq=<Space><Enter>]"
|
||||
IDS_CONTINUE_LINES " Linii: "
|
||||
END
|
||||
|
@@ -276,7 +276,12 @@ static BOOL parse_data_type(struct parser *parser, WCHAR **line)
|
||||
|
||||
/* "hex(xx):" is special */
|
||||
val = wcstoul(*line, &end, 16);
|
||||
#ifdef __REACTOS__
|
||||
/* Up to 8 hex digits, "hex(000000002)" is invalid */
|
||||
if (*end != ')' || *(end + 1) != ':' || (val == ~0u && errno == ERANGE) || end - *line > 8)
|
||||
#else
|
||||
if (*end != ')' || *(end + 1) != ':' || (val == ~0u && errno == ERANGE))
|
||||
#endif
|
||||
return FALSE;
|
||||
|
||||
parser->data_type = val;
|
||||
|
@@ -1,100 +1,104 @@
|
||||
/*
|
||||
* Translators: Claudia Cotună
|
||||
* Michael Stefaniuc
|
||||
* Ștefan Fulea (stefan dot fulea at mail dot com)
|
||||
* PROJECT: ReactOS Registry Console Tool
|
||||
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
|
||||
* PURPOSE: Romanian resource file
|
||||
* TRANSLATORS: Copyright 2010 Claudia Cotună <special4ti@gmail.com>
|
||||
* Copyright 2010 Michael Stefaniuc <mstefani@redhat.com>
|
||||
* Copyright 2014-2018 Ștefan Fulea <stefan.fulea@mail.com>
|
||||
* Copyright 2023 Andrei Miloiu <miloiuandrei@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
STRING_USAGE, "Usage:\n\
|
||||
REG [operation] [parameters]\n\n\
|
||||
Supported operations:\n\
|
||||
STRING_USAGE, "Utilizare:\n\
|
||||
REG [operațiune] [parametri]\n\n\
|
||||
Operațiuni suportate:\n\
|
||||
ADD | COPY | DELETE | EXPORT | IMPORT | QUERY\n\n\
|
||||
For help on a specific operation, type:\n\
|
||||
REG [operation] /?\n\n"
|
||||
Pentru ajutor la o operațiune specifică, tastați:\n\
|
||||
REG [operațiune] /?\n\n"
|
||||
|
||||
STRING_ADD_USAGE, "REG ADD <key> [/v value_name | /ve] [/t type] [/s separator] [/d data] [/f]\n\n\
|
||||
Adds a key to the registry or adds a new value to a given registry key.\n\n\
|
||||
<key>\n\
|
||||
The registry key to add or, if either [/v] or [/ve] is specified,\n\
|
||||
the key in which to add the new registry data.\n\n\
|
||||
Format: ROOT\\Subkey\n\n\
|
||||
ROOT: A predefined registry key. This must be one of the following:\n\n\
|
||||
STRING_ADD_USAGE, "REG ADD <cheie> [/v numele_valorii | /ve] [/t tip] [/s separator] [/d date] [/f]\n\n\
|
||||
Adaugă o cheie la registru sau adaugă o valoare nouă la o cheie dată a registrului.\n\n\
|
||||
<cheie>\n\
|
||||
Cheia registrului de adăugat sau dacă e specificat fie [/v], fie [/ve],\n\
|
||||
cheia în care urmează să fie adăugate noile date de registru.\n\n\
|
||||
Format: ROOT\\Subcheie\n\n\
|
||||
ROOT: O cheie de registru predefinită. Aceasta trebuie să fie una dintre următoarele:\n\n\
|
||||
HKEY_LOCAL_MACHINE | HKLM\n\
|
||||
HKEY_CURRENT_USER | HKCU\n\
|
||||
HKEY_CLASSES_ROOT | HKCR\n\
|
||||
HKEY_USERS | HKU\n\
|
||||
HKEY_CURRENT_CONFIG | HKCC\n\n\
|
||||
Subkey: The full path to a registry key under a given ROOT key.\n\n\
|
||||
/v <value_name>\n\
|
||||
The name of the registry value to add.\n\n\
|
||||
Subcheie: Calea completă către o cheie de registru de sub o anumită cheie dată ROOT.\n\n\
|
||||
/v <numele_valorii>\n\
|
||||
Numele valorii registrului de adăugat.\n\n\
|
||||
/ve\n\
|
||||
Add an unnamed registry value. This option modifies the (Default)\n\
|
||||
registry value.\n\n\
|
||||
/t <type>\n\
|
||||
The type of data to add to the registry. If [/t] is specified,\n\
|
||||
<type> must be one of the following:\n\n\
|
||||
Adaugă o valoare de registru fără nume. Această opțiune modifică valoarea\n\
|
||||
(Implicită) a registrului.\n\n\
|
||||
/t <tip>\n\
|
||||
Tipul de date ce urmează să fie adăugate în registru. Dacă [/t] e specificat,\n\
|
||||
<tip> trebuie să fie una din următoarele:\n\n\
|
||||
REG_SZ | REG_MULTI_SZ | REG_EXPAND_SZ\n\
|
||||
REG_DWORD | REG_BINARY | REG_NONE\n\n\
|
||||
If [/t] is not specified, the default data type is REG_SZ.\n\n\
|
||||
Dacă [/t] nu e specificat, tipul implicit de date este REG_SZ.\n\n\
|
||||
/s <separator>\n\
|
||||
The character used to separate strings in REG_MULTI_SZ data.\n\
|
||||
If [/s] is not specified, the default separator is \\0.\n\n\
|
||||
/d <data>\n\
|
||||
The data to add to the new registry value.\n\n\
|
||||
Caracterul folosit ca să separe șiruri în datele REG_MULTI_SZ.\n\
|
||||
Dacă [/s] nu e specificat, separatorul implicit este \\0.\n\n\
|
||||
/d <date>\n\
|
||||
Datele ce urmează să fie adăugate la noua valoare a registrului.\n\n\
|
||||
/f\n\
|
||||
Modify the registry without prompting for confirmation.\n\n"
|
||||
Modifică regiștrul fără să fie cerută vreo confirmare.\n\n"
|
||||
|
||||
STRING_DELETE_USAGE, "REG DELETE <key> [/v value_name | /ve | /va] [/f]\n\n\
|
||||
Deletes a registry key (including all subkeys and values), or deletes\n\
|
||||
one or more values from a given registry key.\n\n\
|
||||
<key>\n\
|
||||
The registry key to delete or, if one of [/v], [/ve] or [/va] is\n\
|
||||
specified, the registry key in which to delete one or more values.\n\n\
|
||||
Format: ROOT\\Subkey\n\n\
|
||||
ROOT: A predefined registry key. This must be one of the following:\n\n\
|
||||
STRING_DELETE_USAGE, "REG DELETE <cheie> [/v numele_valorii | /ve | /va] [/f]\n\n\
|
||||
Șterge o cheie de registru (incluzând toate subcheile și valorile) sau șterge\n\
|
||||
una sau mai multe valori dintr-o cheie de registru dată.\n\n\
|
||||
<cheie>\n\
|
||||
Cheia de registru ce urmează să fie ștearsă sau dacă una din [/v], [/ve] sau [/va] e\n\
|
||||
specificată, cheia de registru în care urmează să fie ștearsă/șterse una sau mai multe valori.\n\n\
|
||||
Format: ROOT\\Subcheie\n\n\
|
||||
ROOT: O cheie de registru predefinită. Aceasta trebuie să fie una dintre următoarele:\n\n\
|
||||
HKEY_LOCAL_MACHINE | HKLM\n\
|
||||
HKEY_CURRENT_USER | HKCU\n\
|
||||
HKEY_CLASSES_ROOT | HKCR\n\
|
||||
HKEY_USERS | HKU\n\
|
||||
HKEY_CURRENT_CONFIG | HKCC\n\n\
|
||||
Subkey: The full path to a registry key under a given ROOT key.\n\n\
|
||||
Subcheie: Calea completă a cheii de registru cu o cheie ROOT dată.\n\n\
|
||||
/v <value_name>\n\
|
||||
The name of the registry value to delete.\n\n\
|
||||
Numele valorii de registru ce urmează să fie ștearsă\n\n\
|
||||
/ve\n\
|
||||
Delete an unnamed registry value. This option deletes the (Default)\n\
|
||||
registry value.\n\n\
|
||||
Șterge o valoare de registru nedenumită. Această opțiune șterge\n\
|
||||
valoarea (Implicită) a registrului.\n\n\
|
||||
/va\n\
|
||||
Delete all values from a registry key.\n\n\
|
||||
Șterge toate valorile dintr-o cheie de registru.\n\n\
|
||||
/f\n\
|
||||
Delete a registry key (including all subkeys and values) without\n\
|
||||
prompting for confirmation.\n\n"
|
||||
Șterge o cheie de registru (incluzând toate subcheile și valorile) fără\n\
|
||||
să necesite confirmare.\n\n"
|
||||
|
||||
STRING_QUERY_USAGE, "REG QUERY <key> [/v value_name | /ve] [/s]\n\n\
|
||||
Queries a specified registry key and lists all immediate subkeys, values\n\
|
||||
and data within that key. Use [/s] to recursively query each subkey.\n\n\
|
||||
<key>\n\
|
||||
The registry key to query.\n\n\
|
||||
Format: ROOT\\Subkey\n\n\
|
||||
ROOT: A predefined registry key. This must be one of the following:\n\n\
|
||||
STRING_QUERY_USAGE, "REG QUERY <cheie> [/v numele_valorii | /ve] [/s]\n\n\
|
||||
Interoghează o cheie de registru specificată și listează toate subcheile, valorile și datele\n\
|
||||
ce urmează imediat în acea cheie. Folosiți [/s] pentru a interoga recursiv fiecare subcheie.\n\n\
|
||||
<cheie>\n\
|
||||
Cheia de registru de interogat.\n\n\
|
||||
Format: ROOT\\Subcheie\n\n\
|
||||
ROOT: O cheie de registru predefinită. Aceasta trebuie să aibă una dintre următoarele:\n\n\
|
||||
HKEY_LOCAL_MACHINE | HKLM\n\
|
||||
HKEY_CURRENT_USER | HKCU\n\
|
||||
HKEY_CLASSES_ROOT | HKCR\n\
|
||||
HKEY_USERS | HKU\n\
|
||||
HKEY_CURRENT_CONFIG | HKCC\n\n\
|
||||
Subkey: The full path to a registry key under a given ROOT key.\n\n\
|
||||
/v <value_name>\n\
|
||||
The name of the registry value to query. If neither [/v] nor [/ve] is\n\
|
||||
specified, all values under <key> are listed.\n\n\
|
||||
Subcheie: Calea completă către o cheie de registru de sub o anumită cheie dată ROOT.\n\n\
|
||||
/v <numele_valorii>\n\
|
||||
Numele valorii de registru ce urmează să fie interogată. Dacă nu se specifică nici [/v],\n\
|
||||
nici [/ve], toate valorile de sub <cheie> sunt listate.\n\n\
|
||||
/ve\n\
|
||||
Query an unnamed registry value. This option queries the (Default)\n\
|
||||
registry value.\n\n\
|
||||
Interoghează o valoare de registru nedenumită. Această opțiune interoghează\n\
|
||||
valoarea (Implicită) a registrului.\n\n\
|
||||
/s\n\
|
||||
List all registry entries under <key> and its subkeys.\n\n"
|
||||
Listează toate intrările registrului de sub <cheie> și subcheile sale.\n\n"
|
||||
|
||||
STRING_SUCCESS, "Operația a fost îndeplinită cu succes\n"
|
||||
STRING_SUCCESS, "Operațiunea a fost îndeplinită cu succes\n"
|
||||
STRING_INVALID_KEY, "Eroare: Nume de cheie nevalid\n"
|
||||
STRING_INVALID_CMDLINE, "Eroare: Parametri nevalizi pentru linia de comandă\n"
|
||||
STRING_NO_REMOTE, "Eroare: Nu pot fi adăugate chei într-un calculator la distanță\n"
|
||||
@@ -104,18 +108,18 @@ For help on a specific operation, type:\n\
|
||||
STRING_MISSING_HEXDATA, "reg: Opțiunea [/d] trebuie să fie urmată de o valoare hexezecimală\n"
|
||||
STRING_UNHANDLED_TYPE, "reg: Tip de dată nerecunoscut [/t 0x%1!x!, /d %2]\n"
|
||||
STRING_OVERWRITE_VALUE, "Valoarea de registru «%1» deja există. Doriți s-o suprascrieți?"
|
||||
STRING_YES, "Y"
|
||||
STRING_YES, "D"
|
||||
STRING_NO, "N"
|
||||
STRING_ALL, "A"
|
||||
STRING_YESNO, " (Yes|No)"
|
||||
STRING_YESNOALL, " (Yes|No|All)"
|
||||
STRING_CANCELLED, "Operația de registru a fost anulată\n"
|
||||
STRING_ALL, "T"
|
||||
STRING_YESNO, " (Da|Nu)"
|
||||
STRING_YESNOALL, " (Da|Nu|Toate)"
|
||||
STRING_CANCELLED, "Operațiunea de registru a fost anulată\n"
|
||||
STRING_DEFAULT_VALUE, "(Implicită)"
|
||||
STRING_DELETE_VALUE, "Sigur doriți ștergerea valorii de registru «%1»?"
|
||||
STRING_DELETE_VALUEALL, "Sigur doriți ștergerea tuturor valorilor de registru din «%1»?"
|
||||
STRING_DELETE_SUBKEY, "Sigur doriți ștergerea cheii de registru «%1»?"
|
||||
STRING_INVALID_STRING, "reg: Opțiunea [/d] trebuie urmată de un șir valid\n"
|
||||
STRING_VALUEALL_FAILED, "reg: Nu au putut fi șterse toate valorile de registru din «%1». A survenit o eroare neașteptată.\n"
|
||||
STRING_VALUEALL_FAILED, "reg: Nu au putut fi șterse toate valorile de registru din «%1». A apărut o eroare neașteptată.\n"
|
||||
STRING_MATCHES_FOUND, "Căutare efectuată. Numărul de potriviri găsite: %1!d!\n"
|
||||
STRING_INVALID_SYNTAX, "reg: Sintaxă nerespectată. "
|
||||
STRING_INVALID_OPTION, "reg: Opțiune nevalidă [%1]. "
|
||||
@@ -123,65 +127,65 @@ For help on a specific operation, type:\n\
|
||||
STRING_FUNC_HELP, "Tastați «REG %1 /?» pentru mai multe informații.\n"
|
||||
STRING_VALUE_NOT_SET, "(valoare nealocată)"
|
||||
|
||||
STRING_IMPORT_USAGE, "REG IMPORT <file>\n\n\
|
||||
Imports keys, values and data from a given file into the registry.\n\n\
|
||||
<file>\n\
|
||||
The name and path of the registry file to import.\n\n"
|
||||
STRING_IMPORT_USAGE, "REG IMPORT <fișier>\n\n\
|
||||
Importă chei, valori și date dintr-un fișier dat în regiștri.\n\n\
|
||||
<fișier>\n\
|
||||
Numele și calea fișierului de regiștri de importat.\n\n"
|
||||
|
||||
STRING_FILE_NOT_FOUND, "reg: Fișierul «%1» nu a putut fi găsit.\n"
|
||||
STRING_ESCAPE_SEQUENCE, "reg: Secvența de sustracție [\\%1!c!] nu este recunoscută.\n"
|
||||
STRING_ESCAPE_SEQUENCE, "reg: Secvența de ieșire [\\%1!c!] nu este recunoscută.\n"
|
||||
|
||||
STRING_EXPORT_USAGE, "REG EXPORT <key> <file> [/y]\n\n\
|
||||
Exports a specified registry key (including all subkeys and values)\n\
|
||||
to a file.\n\n\
|
||||
<key>\n\
|
||||
The registry key to export.\n\n\
|
||||
Format: ROOT\\Subkey\n\n\
|
||||
ROOT: A predefined registry key. This must be one of the following:\n\n\
|
||||
STRING_EXPORT_USAGE, "REG EXPORT <cheie> <fișier> [/y]\n\n\
|
||||
Exportă o cheie de registru specificată (incluzând toate subcheile și valorile)\n\
|
||||
într-un fișier.\n\n\
|
||||
<cheie>\n\
|
||||
Cheia de registru ce urmează să fie exportată.\n\n\
|
||||
Format: ROOT\\Subcheie\n\n\
|
||||
ROOT: O cheie de registru predefinită. Aceasta trebuie să aibă una dintre următoarele:\n\n\
|
||||
HKEY_LOCAL_MACHINE | HKLM\n\
|
||||
HKEY_CURRENT_USER | HKCU\n\
|
||||
HKEY_CLASSES_ROOT | HKCR\n\
|
||||
HKEY_USERS | HKU\n\
|
||||
HKEY_CURRENT_CONFIG | HKCC\n\n\
|
||||
Subkey: The full path to a registry key under a given ROOT key.\n\n\
|
||||
<file>\n\
|
||||
The name and path of the registry file that will be created.\n\
|
||||
This file must have a .reg extension.\n\n\
|
||||
Subcheie: Calea completă către o cheie de registru de sub o anumită cheie dată ROOT.\n\n\
|
||||
<fișier>\n\
|
||||
Numele și calea fișierului de regiștri ce urmează să fie creat.\n\
|
||||
Fișierul trebuie să aibă extensia .reg.\n\n\
|
||||
/y\n\
|
||||
Overwrite <file> without prompting for confirmation.\n\n"
|
||||
Suprascrieți <fișierul> fără să se necesite confirmarea.\n\n"
|
||||
|
||||
STRING_INVALID_SYSTEM_KEY, "reg: Cheia de sistem [%1] nu este una validă.\n"
|
||||
STRING_OVERWRITE_FILE, "Fișierul «%1» deja există. Doriți suprascrierea lui?"
|
||||
STRING_KEY_NONEXIST, "reg: Unable to find the specified registry key\n"
|
||||
STRING_KEY_IMPORT_FAILED, "reg: Unable to import the registry key '%1'\n"
|
||||
STRING_KEY_NONEXIST, "reg: Nu a putut fi găsită cheia de registru specificată\n"
|
||||
STRING_KEY_IMPORT_FAILED, "reg: Nu a putut fi importată cheia de registru '%1'\n"
|
||||
|
||||
STRING_REG_VIEW_USAGE, " /reg:32\n\
|
||||
Access the registry using the 32-bit view.\n\n\
|
||||
Accesează regiștrii folosind vizualizatorul de 32 de biți.\n\n\
|
||||
/reg:64\n\
|
||||
Access the registry using the 64-bit view.\n\n"
|
||||
STRING_ACCESS_DENIED, "reg: Unable to access or create the specified registry key\n"
|
||||
Accesează regiștrii folosind vizualizatorul de 64 de biți.\n\n"
|
||||
STRING_ACCESS_DENIED, "reg: Cheia de registru specificată nu a putut fi accesată sau creată\n"
|
||||
|
||||
STRING_COPY_USAGE, "REG COPY <key1> <key2> [/s] [/f]\n\n\
|
||||
Copies the contents of a specified registry key to another location.\n\
|
||||
By default, this operation only copies registry values. Use [/s] to\n\
|
||||
recursively copy all subkeys and values.\n\n\
|
||||
<key1>, <key2>\n\
|
||||
Registry keys specifying the source (<key1>) and destination (<key2>)\n\
|
||||
of the data. If <key2> does not exist, it is created.\n\n\
|
||||
Format: ROOT\\Subkey\n\n\
|
||||
ROOT: A predefined registry key. This must be one of the following:\n\n\
|
||||
STRING_COPY_USAGE, "REG COPY <cheia1> <cheia2> [/s] [/f]\n\n\
|
||||
Copiază conținutul unei chei de registru specificată în altă locație.\n\
|
||||
Implicit, această operațiune copiază numai valorile de registru. Folosiți [/s] pentru\n\
|
||||
a copia în mod recursiv toate subcheile și valorile.\n\n\
|
||||
<cheia1>, <cheia2>\n\
|
||||
Cheile de registru care specifică sursa (<cheia1>) și destinația (<cheia2>)\n\
|
||||
a datelor. Dacă <cheia2> nu există, este creată.\n\n\
|
||||
Format: ROOT\\Subcheie\n\n\
|
||||
ROOT: O cheie de registru predefinită. Aceasta trebuie să aibă una dintre următoarele:\n\n\
|
||||
HKEY_LOCAL_MACHINE | HKLM\n\
|
||||
HKEY_CURRENT_USER | HKCU\n\
|
||||
HKEY_CLASSES_ROOT | HKCR\n\
|
||||
HKEY_USERS | HKU\n\
|
||||
HKEY_CURRENT_CONFIG | HKCC\n\n\
|
||||
Subkey: The full path to a registry key under a given ROOT key.\n\n\
|
||||
Subcheie: Calea completă către o cheie de registru de sub o anumită cheie dată ROOT.\n\n\
|
||||
/s\n\
|
||||
Copy all subkeys and values from <key1> to <key2>.\n\n\
|
||||
Copiază toate subcheile și valorile din <cheia1> în <cheia2>.\n\n\
|
||||
/f\n\
|
||||
Overwrite all registry data in <key2> without prompting for confirmation.\n\
|
||||
This option does not modify subkeys and values that only exist in <key2>.\n\n"
|
||||
Suprascrie toate datele registrului în <cheia2> fără să se necesite confirmare.\n\
|
||||
Această opțiune nu modifică subcheile și valorile ce există doar în <cheia2>.\n\n"
|
||||
|
||||
STRING_COPY_SRC_DEST_SAME, "reg: The source and destination keys cannot be the same\n"
|
||||
STRING_COPY_CONFIRM, "The value '%1\\%2' already exists in the destination key. Do you want to overwrite it?"
|
||||
STRING_COPY_SRC_DEST_SAME, "reg: Cheile sursă și destinație nu pot fi aceleași\n"
|
||||
STRING_COPY_CONFIRM, "Valoarea '%1\\%2' există deja în cheia de destinație. Doriți să o suprascrieți?"
|
||||
}
|
||||
|
@@ -1,4 +1,10 @@
|
||||
/* Translator: Ștefan Fulea (stefan dot fulea at mail dot com) */
|
||||
/*
|
||||
* PROJECT: ReactOS Taskkill Command
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: Romanian resource file
|
||||
* TRANSLATORS: Copyright 2011-2019 Ștefan Fulea <stefan.fulea@mail.com>
|
||||
* Copyright 2023-2024 Andrei Miloiu <miloiuandrei@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
|
||||
|
||||
@@ -14,10 +20,10 @@ STRINGTABLE
|
||||
STRING_CLOSE_PROC_SRCH, "Către fereastra procesului «%1» cu PID %2!u! a fost emis un mesaj de închidere.\n"
|
||||
STRING_TERM_PID_SEARCH, "Procesul cu PID %1!u! a fost oprit în mod forțat.\n"
|
||||
STRING_TERM_PROC_SEARCH, "Procesul «%1» cu PID %2!u! a fost oprit în mod forțat.\n"
|
||||
STRING_SEARCH_FAILED, "Eroare: Procesul «%1» nu poate fi găsit.\n"
|
||||
STRING_ENUM_FAILED, "Eroare: Procesele nu au putut fi enumerate.\n"
|
||||
STRING_SEARCH_FAILED, "Eroare: Nu se poate găsi procesul «%1».\n"
|
||||
STRING_ENUM_FAILED, "Eroare: Nu se poate enumera lista de procese.\n"
|
||||
STRING_TERMINATE_FAILED, "Eroare: Procesul «%1» nu poate fi oprit.\n"
|
||||
STRING_SELF_TERMINATION, "Eroare: Auto-terminarea nu este permisă.\n"
|
||||
STRING_PARAM_TOO_MUCH, "Error: Invalid syntax. '%1' option is not allowed more than '%2!d!' time(s).\n"
|
||||
STRING_INVALID_SYNTAX, "Error: Invalid syntax.\n"
|
||||
STRING_PARAM_TOO_MUCH, "Eroare: Sintaxă nevalidă. Opțiunea '%1' nu este permisă mai mult de '%2!d!' dată(dăți).\n"
|
||||
STRING_INVALID_SYNTAX, "Eroare: Sintaxă nevalidă.\n"
|
||||
}
|
||||
|
@@ -1,11 +1,17 @@
|
||||
/* Translator: Ștefan Fulea (stefan dot fulea at mail dot com) */
|
||||
/*
|
||||
* PROJECT: ReactOS Tree Walk Utility
|
||||
* LICENSE: GPL-2.0 (https://spdx.org/licenses/GPL-2.0)
|
||||
* PURPOSE: Romanian resource file
|
||||
* TRANSLATORS: Copyright 2018 Ștefan Fulea <stefan.fulea@mail.com>
|
||||
* Copyright 2024 Andrei Miloiu <miloiuandrei@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_ROMANIAN, SUBLANG_DEFAULT
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_USAGE "Afișează o structură de fișiere a unui director sau unități de stocare.\n\n\
|
||||
TREE [unitate:][cale] [/F] [/A]\n\n\
|
||||
TREE [disc:][cale] [/F] [/A]\n\n\
|
||||
\t/F Afișează numele fișierelor din fiecare director.\n\
|
||||
\t/A Folosește ASCII în loc de caractere extinse.\n"
|
||||
IDS_NO_SUBDIRECTORIES "Nu există subdirectoare"
|
||||
|
@@ -13,6 +13,7 @@ add_typelib(ihost.idl)
|
||||
set_source_files_properties(rsrc.rc PROPERTIES OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/ihost.tlb)
|
||||
target_link_libraries(wscript uuid wine)
|
||||
set_module_type(wscript win32gui UNICODE)
|
||||
add_delay_importlibs(wscript shlwapi)
|
||||
add_importlibs(wscript shell32 oleaut32 ole32 user32 advapi32 msvcrt kernel32 ntdll)
|
||||
add_dependencies(wscript stdole2 wscript_idlheader)
|
||||
add_pch(wscript precomp.h SOURCE)
|
||||
|
@@ -407,8 +407,16 @@ static HRESULT WINAPI Host_DisconnectObject(IHost *iface, IDispatch *Object)
|
||||
|
||||
static HRESULT WINAPI Host_Sleep(IHost *iface, LONG Time)
|
||||
{
|
||||
#ifdef __REACTOS__
|
||||
UNREFERENCED_PARAMETER(iface);
|
||||
if (Time < 0)
|
||||
return E_INVALIDARG;
|
||||
Sleep(Time);
|
||||
return S_OK;
|
||||
#else
|
||||
WINE_FIXME("(%d)\n", Time);
|
||||
return E_NOTIMPL;
|
||||
#endif
|
||||
}
|
||||
|
||||
static HRESULT WINAPI Host_ConnectObject(IHost *iface, IDispatch *Object, BSTR Prefix)
|
||||
|
@@ -60,6 +60,141 @@ ITypeInfo *arguments_ti;
|
||||
|
||||
static HRESULT query_interface(REFIID,void**);
|
||||
|
||||
#ifdef __REACTOS__
|
||||
#include <commctrl.h>
|
||||
|
||||
typedef struct {
|
||||
UINT itemsize, count;
|
||||
void *mem;
|
||||
} SIMPLEVECTOR;
|
||||
|
||||
static void SVect_Free(SIMPLEVECTOR *pV)
|
||||
{
|
||||
if (pV->mem)
|
||||
LocalFree(pV->mem);
|
||||
pV->mem = NULL;
|
||||
}
|
||||
|
||||
static void* SVect_Add(SIMPLEVECTOR *pV)
|
||||
{
|
||||
void *p = NULL;
|
||||
if (pV->mem)
|
||||
{
|
||||
p = LocalReAlloc(pV->mem, pV->itemsize * (pV->count + 1), LMEM_FIXED | LMEM_MOVEABLE);
|
||||
if (p)
|
||||
{
|
||||
pV->mem = p;
|
||||
p = (char*)p + (pV->count * pV->itemsize);
|
||||
pV->count++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
p = pV->mem = LocalAlloc(LMEM_FIXED, pV->itemsize);
|
||||
if (p)
|
||||
{
|
||||
pV->count = 1;
|
||||
}
|
||||
}
|
||||
return p;
|
||||
}
|
||||
|
||||
#define SVect_Delete(pV, pItem) ( (pV), (pItem) ) /* Should not be required for global items */
|
||||
|
||||
static void* SVect_Get(SIMPLEVECTOR *pV, UINT i)
|
||||
{
|
||||
return pV->mem && i < pV->count ? (char*)pV->mem + (i * pV->itemsize) : NULL;
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
BSTR name;
|
||||
IUnknown *punk;
|
||||
} GLOBAL_ITEM;
|
||||
|
||||
SIMPLEVECTOR g_global_items = { sizeof(GLOBAL_ITEM) };
|
||||
|
||||
static void free_globals(void)
|
||||
{
|
||||
UINT i;
|
||||
for (i = 0;; ++i)
|
||||
{
|
||||
GLOBAL_ITEM *p = (GLOBAL_ITEM*)SVect_Get(&g_global_items, i);
|
||||
if (!p)
|
||||
break;
|
||||
IUnknown_Release(p->punk);
|
||||
SysFreeString(p->name);
|
||||
}
|
||||
SVect_Free(&g_global_items);
|
||||
}
|
||||
|
||||
static HRESULT add_globalitem(IActiveScript *script, BSTR name, IUnknown *punk, DWORD siflags)
|
||||
{
|
||||
GLOBAL_ITEM *item;
|
||||
HRESULT hr;
|
||||
|
||||
name = SysAllocString(name);
|
||||
if (!name)
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
item = SVect_Add(&g_global_items);
|
||||
if (item)
|
||||
{
|
||||
item->name = name;
|
||||
item->punk = punk;
|
||||
hr = IActiveScript_AddNamedItem(script, name, siflags);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
IUnknown_AddRef(punk);
|
||||
return hr;
|
||||
}
|
||||
SVect_Delete(&g_global_items, item);
|
||||
}
|
||||
SysFreeString(name);
|
||||
return E_OUTOFMEMORY;
|
||||
}
|
||||
|
||||
static HRESULT add_globalitem_from_clsid(IActiveScript *script, BSTR name, REFCLSID clsid, DWORD siflags)
|
||||
{
|
||||
IUnknown *punk;
|
||||
HRESULT hr = CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void**)&punk);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
hr = add_globalitem(script, name, punk, siflags);
|
||||
IUnknown_Release(punk);
|
||||
}
|
||||
return hr;
|
||||
}
|
||||
|
||||
static HRESULT get_globalitem_info(LPCOLESTR Name, DWORD Mask, IUnknown **ppunk, ITypeInfo **ppti, BOOL *pHandled)
|
||||
{
|
||||
HRESULT hr = S_FALSE;
|
||||
UINT i;
|
||||
for (i = 0;; ++i)
|
||||
{
|
||||
GLOBAL_ITEM *p = (GLOBAL_ITEM*)SVect_Get(&g_global_items, i);
|
||||
if (!p)
|
||||
break;
|
||||
if (!lstrcmpiW(Name, p->name))
|
||||
{
|
||||
if (ppti)
|
||||
*ppti = NULL;
|
||||
if (Mask & SCRIPTINFO_IUNKNOWN)
|
||||
{
|
||||
*ppunk = p->punk;
|
||||
if (p->punk)
|
||||
{
|
||||
IUnknown_AddRef(p->punk);
|
||||
*pHandled = TRUE;
|
||||
}
|
||||
return S_OK;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return hr;
|
||||
}
|
||||
#endif
|
||||
|
||||
static HRESULT WINAPI ActiveScriptSite_QueryInterface(IActiveScriptSite *iface,
|
||||
REFIID riid, void **ppv)
|
||||
{
|
||||
@@ -89,6 +224,15 @@ static HRESULT WINAPI ActiveScriptSite_GetItemInfo(IActiveScriptSite *iface,
|
||||
{
|
||||
WINE_TRACE("(%s %x %p %p)\n", wine_dbgstr_w(pstrName), dwReturnMask, ppunkItem, ppti);
|
||||
|
||||
#ifdef __REACTOS__
|
||||
{
|
||||
BOOL handled = FALSE;
|
||||
HRESULT hr = get_globalitem_info(pstrName, dwReturnMask, ppunkItem, ppti, &handled);
|
||||
if (handled)
|
||||
return hr;
|
||||
}
|
||||
#endif
|
||||
|
||||
if(lstrcmpW(pstrName, wshW) && lstrcmpW(pstrName, wscriptW))
|
||||
return E_FAIL;
|
||||
|
||||
@@ -388,6 +532,231 @@ static void run_script(const WCHAR *filename, IActiveScript *script, IActiveScri
|
||||
WINE_FIXME("SetScriptState failed: %08x\n", hres);
|
||||
}
|
||||
|
||||
#ifdef __REACTOS__
|
||||
#include <msxml2.h>
|
||||
#include <shlwapi.h>
|
||||
|
||||
static HRESULT xmldomnode_getattributevalue(IXMLDOMNode *pnode, LPCWSTR name, BSTR *pout)
|
||||
{
|
||||
IXMLDOMNamedNodeMap *pmap;
|
||||
HRESULT hr = E_OUTOFMEMORY;
|
||||
BSTR bsname = SysAllocString(name);
|
||||
*pout = NULL;
|
||||
if (bsname && SUCCEEDED(hr = IXMLDOMNode_get_attributes(pnode, &pmap)))
|
||||
{
|
||||
if (SUCCEEDED(hr = IXMLDOMNamedNodeMap_getNamedItem(pmap, bsname, &pnode)))
|
||||
{
|
||||
hr = HRESULT_FROM_WIN32(ERROR_NOT_FOUND);
|
||||
if (pnode)
|
||||
{
|
||||
hr = IXMLDOMNode_get_text(pnode, pout);
|
||||
if (SUCCEEDED(hr) && !*pout)
|
||||
hr = HRESULT_FROM_WIN32(ERROR_NOT_FOUND);
|
||||
IXMLDOMNode_Release(pnode);
|
||||
}
|
||||
}
|
||||
IXMLDOMNamedNodeMap_Release(pmap);
|
||||
}
|
||||
SysFreeString(bsname);
|
||||
return hr;
|
||||
}
|
||||
|
||||
static HRESULT xmldomelem_getelembytag(IXMLDOMElement *pelem, LPCWSTR name, long index, IXMLDOMNode**ppout)
|
||||
{
|
||||
HRESULT hr = E_OUTOFMEMORY;
|
||||
IXMLDOMNodeList *pnl;
|
||||
BSTR bsname = SysAllocString(name);
|
||||
*ppout = NULL;
|
||||
if (bsname && SUCCEEDED(hr = IXMLDOMElement_getElementsByTagName(pelem, bsname, &pnl)))
|
||||
{
|
||||
hr = IXMLDOMNodeList_get_item(pnl, index, ppout);
|
||||
if (SUCCEEDED(hr) && !*ppout)
|
||||
hr = HRESULT_FROM_WIN32(ERROR_NO_MORE_ITEMS);
|
||||
IUnknown_Release(pnl);
|
||||
}
|
||||
SysFreeString(bsname);
|
||||
return hr;
|
||||
}
|
||||
|
||||
static HRESULT xmldomelem_getelembytagasdomelem(IXMLDOMElement *pelem, LPCWSTR name, long index, IXMLDOMElement**ppout)
|
||||
{
|
||||
IXMLDOMNode *pnode;
|
||||
HRESULT hr = xmldomelem_getelembytag(pelem, name, index, &pnode);
|
||||
*ppout = NULL;
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
hr = IUnknown_QueryInterface(pnode, &IID_IXMLDOMElement, (void**)ppout);
|
||||
IUnknown_Release(pnode);
|
||||
}
|
||||
return hr;
|
||||
}
|
||||
|
||||
static void wsf_addobjectfromnode(IActiveScript *script, IXMLDOMNode *obj)
|
||||
{
|
||||
BSTR bsid, bsclsid = NULL;
|
||||
if (SUCCEEDED(xmldomnode_getattributevalue(obj, L"id", &bsid)))
|
||||
{
|
||||
CLSID clsid;
|
||||
HRESULT hr;
|
||||
hr = xmldomnode_getattributevalue(obj, L"clsid", &bsclsid);
|
||||
if (FAILED(hr) || FAILED(CLSIDFromString(bsclsid, &clsid)))
|
||||
{
|
||||
SysFreeString(bsclsid);
|
||||
if (SUCCEEDED(hr = xmldomnode_getattributevalue(obj, L"progid", &bsclsid)))
|
||||
{
|
||||
hr = CLSIDFromProgID(bsclsid, &clsid);
|
||||
SysFreeString(bsclsid);
|
||||
}
|
||||
}
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
hr = add_globalitem_from_clsid(script, bsid, &clsid, SCRIPTITEM_ISVISIBLE);
|
||||
}
|
||||
SysFreeString(bsid);
|
||||
}
|
||||
}
|
||||
|
||||
static HRESULT run_wsfjob(IXMLDOMElement *jobtag)
|
||||
{
|
||||
// FIXME: We are supposed to somehow handle multiple languages in the same IActiveScript.
|
||||
IActiveScript *script;
|
||||
LPCWSTR deflang = L"JScript";
|
||||
IXMLDOMNode *scripttag;
|
||||
HRESULT hr = S_OK;
|
||||
if (SUCCEEDED(xmldomelem_getelembytag(jobtag, L"script", 0, &scripttag)))
|
||||
{
|
||||
CLSID clsid;
|
||||
IActiveScriptParse *parser;
|
||||
BSTR lang, code;
|
||||
if (FAILED(xmldomnode_getattributevalue(scripttag, L"language", &lang)))
|
||||
lang = NULL;
|
||||
hr = CLSIDFromProgID(lang ? lang : deflang, &clsid);
|
||||
SysFreeString(lang);
|
||||
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
hr = E_FAIL;
|
||||
if (create_engine(&clsid, &script, &parser))
|
||||
{
|
||||
if (init_engine(script, parser))
|
||||
{
|
||||
long index;
|
||||
for (index = 0; index < 0x7fffffff; ++index)
|
||||
{
|
||||
IXMLDOMNode *obj;
|
||||
if (SUCCEEDED(xmldomelem_getelembytag(jobtag, L"object", index, &obj)))
|
||||
{
|
||||
wsf_addobjectfromnode(script, obj);
|
||||
IUnknown_Release(obj);
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (SUCCEEDED(hr = IXMLDOMNode_get_text(scripttag, &code)))
|
||||
{
|
||||
hr = IActiveScriptParse_ParseScriptText(parser, code, NULL, NULL, NULL, 1, 1,
|
||||
SCRIPTTEXT_HOSTMANAGESSOURCE|SCRIPTITEM_ISVISIBLE,
|
||||
NULL, NULL);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
hr = IActiveScript_SetScriptState(script, SCRIPTSTATE_STARTED);
|
||||
IActiveScript_Close(script);
|
||||
}
|
||||
SysFreeString(code);
|
||||
}
|
||||
ITypeInfo_Release(host_ti);
|
||||
}
|
||||
IUnknown_Release(parser);
|
||||
IUnknown_Release(script);
|
||||
}
|
||||
}
|
||||
IUnknown_Release(scripttag);
|
||||
}
|
||||
return hr;
|
||||
}
|
||||
|
||||
/*
|
||||
.WSF files can contain a single job, or multiple jobs if contained in a package.
|
||||
Jobs are identified by their id and if no id is specified, the first job is used.
|
||||
Each job can contain multiple script tags and all scripts are merged into one.
|
||||
|
||||
<job><script language="JScript">WScript.Echo("JS");</script></job>
|
||||
or
|
||||
<package>
|
||||
<job><script language="JScript">WScript.Echo("JS");</script></job>
|
||||
</package>
|
||||
or
|
||||
<?xml version="1.0" ?>
|
||||
<job>
|
||||
<script language="JScript"><![CDATA[function JS(s) {WScript.Echo(s)}]]></script>
|
||||
<script language="VBScript">JS "VB2JS"</script>
|
||||
</job>
|
||||
*/
|
||||
static HRESULT run_wsf(LPCWSTR xmlpath)
|
||||
{
|
||||
WCHAR url[ARRAY_SIZE("file://") + max(ARRAY_SIZE(scriptFullName), MAX_PATH)];
|
||||
DWORD cch = ARRAY_SIZE(url);
|
||||
IXMLDOMDocument *pdoc;
|
||||
HRESULT hr = UrlCreateFromPathW(xmlpath, url, &cch, 0), hrCom;
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
|
||||
hrCom = CoInitialize(NULL);
|
||||
hr = CoCreateInstance(&CLSID_DOMDocument30, NULL, CLSCTX_INPROC_SERVER,
|
||||
&IID_IXMLDOMDocument, (void**)&pdoc);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
VARIANT_BOOL succ = VARIANT_FALSE;
|
||||
IXMLDOMElement *pdocelm;
|
||||
BSTR bsurl = SysAllocString(url);
|
||||
VARIANT v;
|
||||
V_VT(&v) = VT_BSTR;
|
||||
V_BSTR(&v) = bsurl;
|
||||
if (!bsurl || (hr = IXMLDOMDocument_load(pdoc, v, &succ)) > 0 || (SUCCEEDED(hr) && !succ))
|
||||
{
|
||||
hr = E_FAIL;
|
||||
}
|
||||
if (SUCCEEDED(hr) && SUCCEEDED(hr = IXMLDOMDocument_get_documentElement(pdoc, &pdocelm)))
|
||||
{
|
||||
BSTR tagName = NULL;
|
||||
if (SUCCEEDED(hr = IXMLDOMElement_get_tagName(pdocelm, &tagName)))
|
||||
{
|
||||
if (lstrcmpiW(tagName, L"package") == 0)
|
||||
{
|
||||
// FIXME: Accept job id as a function parameter and find the job here
|
||||
IXMLDOMElement *p;
|
||||
if (SUCCEEDED(hr = xmldomelem_getelembytagasdomelem(pdocelm, L"job", 0, &p)))
|
||||
{
|
||||
IUnknown_Release(pdocelm);
|
||||
pdocelm = p;
|
||||
}
|
||||
}
|
||||
else if (lstrcmpiW(tagName, L"job") != 0)
|
||||
{
|
||||
hr = 0x800400C0ul;
|
||||
}
|
||||
SysFreeString(tagName);
|
||||
}
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
// FIXME: Only support CDATA blocks if the xml tag is present?
|
||||
hr = run_wsfjob(pdocelm);
|
||||
}
|
||||
IUnknown_Release(pdocelm);
|
||||
}
|
||||
VariantClear(&v);
|
||||
IUnknown_Release(pdoc);
|
||||
}
|
||||
free_globals();
|
||||
if (SUCCEEDED(hrCom))
|
||||
CoUninitialize();
|
||||
return hr;
|
||||
}
|
||||
#endif
|
||||
|
||||
static BOOL set_host_properties(const WCHAR *prop)
|
||||
{
|
||||
static const WCHAR nologoW[] = {'n','o','l','o','g','o',0};
|
||||
@@ -453,6 +822,11 @@ int WINAPI wWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPWSTR cmdline, int cm
|
||||
return 1;
|
||||
|
||||
ext = wcsrchr(filepart, '.');
|
||||
#ifdef __REACTOS__
|
||||
if (ext && !lstrcmpiW(ext, L".wsf")) {
|
||||
return run_wsf(scriptFullName);
|
||||
}
|
||||
#endif
|
||||
if(!ext || !get_engine_clsid(ext, &clsid)) {
|
||||
WINE_FIXME("Could not find engine for %s\n", wine_dbgstr_w(ext));
|
||||
return 1;
|
||||
@@ -477,6 +851,10 @@ int WINAPI wWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPWSTR cmdline, int cm
|
||||
IActiveScript_Release(script);
|
||||
IActiveScriptParse_Release(parser);
|
||||
|
||||
#ifdef __REACTOS__
|
||||
free_globals();
|
||||
#endif
|
||||
|
||||
CoUninitialize();
|
||||
|
||||
return 0;
|
||||
|
@@ -52,7 +52,7 @@ XCOPY источник [целевой_объект] [/I] [/S] [/Q] [/F] [/L] [/
|
||||
/A Копирует только те файлы, для которых установлен атрибут ""архивный"".\n\
|
||||
/M Копирует только те файлы, для которых установлен атрибут ""архивный"",\n\
|
||||
при этом атрибут удаляется.\n\
|
||||
[/K] Copy file attributes, without this attributes are not preserved.\n\
|
||||
[/K] Копирует атрибуты файлов, без этого атрибуты не сохраняются.\n\
|
||||
/D | /D:m-d-y Копирование файлов, измененных не ранее указанной даты.\n\
|
||||
Если дата не указана, заменяются только конечные файлы,\n\
|
||||
более старые, чем исходные.\n"
|
||||
|
@@ -2,5 +2,7 @@
|
||||
add_rc_deps(control.rc ${CMAKE_CURRENT_SOURCE_DIR}/resources/config.ico)
|
||||
add_executable(control control.c control.rc)
|
||||
set_module_type(control win32gui UNICODE)
|
||||
add_delay_importlibs(control ole32)
|
||||
target_link_libraries(control uuid)
|
||||
add_importlibs(control advapi32 shell32 user32 msvcrt kernel32)
|
||||
add_cd_file(TARGET control DESTINATION reactos/system32 FOR all)
|
||||
|
@@ -4,12 +4,14 @@
|
||||
* PURPOSE: ReactOS System Control Panel
|
||||
* COPYRIGHT: Copyright 2004 Gero Kuehn (reactos.filter@gkware.com)
|
||||
* Copyright 2008 Colin Finck (colin@reactos.org)
|
||||
* Copyright 2014 Herm<EFBFBD>s B<EFBFBD>lusca-Ma<EFBFBD>to (hermes.belusca-maito@reactos.org)
|
||||
* Copyright 2014 Hermès Bélusca-Maïto (hermes.belusca-maito@reactos.org)
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#define WIN32_NO_STATUS
|
||||
#define COBJMACROS
|
||||
|
||||
|
||||
#include <windef.h>
|
||||
#include <winbase.h>
|
||||
@@ -17,6 +19,9 @@
|
||||
#include <winreg.h>
|
||||
#include <shellapi.h>
|
||||
#include <strsafe.h>
|
||||
#include <objbase.h>
|
||||
#include <shobjidl.h>
|
||||
#include <shlguid.h>
|
||||
|
||||
#include "resource.h"
|
||||
|
||||
@@ -34,21 +39,51 @@ VOID
|
||||
WINAPI
|
||||
Control_RunDLLW(HWND hWnd, HINSTANCE hInst, LPCWSTR cmd, DWORD nCmdShow);
|
||||
|
||||
static BOOL
|
||||
IsSwitch(LPCWSTR Switch, LPCWSTR Arg)
|
||||
{
|
||||
if (*Arg == '/' || *Arg == '-')
|
||||
{
|
||||
return !lstrcmpiW(Arg+1, Switch);
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static HRESULT
|
||||
OpenControlPanelItem(LPCWSTR Name, LPCWSTR Page)
|
||||
{
|
||||
HRESULT hr = CoInitialize(0);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
IOpenControlPanel *pOCP;
|
||||
hr = CoCreateInstance(&CLSID_OpenControlPanel, NULL, CLSCTX_INPROC_SERVER,
|
||||
&IID_IOpenControlPanel, (void**)&pOCP);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
hr = IOpenControlPanel_Open(pOCP, Name, Page, NULL);
|
||||
IOpenControlPanel_Release(pOCP);
|
||||
}
|
||||
CoUninitialize();
|
||||
}
|
||||
return hr;
|
||||
}
|
||||
|
||||
static INT
|
||||
OpenShellFolder(LPWSTR lpFolderCLSID)
|
||||
{
|
||||
WCHAR szParameters[MAX_PATH];
|
||||
|
||||
/*
|
||||
* Open a shell folder using "explorer.exe". The passed CLSIDs
|
||||
* are all subfolders of the "Control Panel" shell folder.
|
||||
* Open a shell folder using "explorer.exe". If Explorer shell is not
|
||||
* available, use ReactOS's alternative file browser instead.
|
||||
* The passed CLSIDs are all subfolders of the "Control Panel" shell folder.
|
||||
*/
|
||||
StringCbCopyW(szParameters, sizeof(szParameters), L"/n,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\::{21EC2020-3AEA-1069-A2DD-08002B30309D}");
|
||||
StringCbCatW(szParameters, sizeof(szParameters), lpFolderCLSID);
|
||||
|
||||
return (INT_PTR)ShellExecuteW(NULL,
|
||||
L"open",
|
||||
L"explorer.exe",
|
||||
GetShellWindow() ? L"explorer.exe" : L"filebrowser.exe",
|
||||
szParameters,
|
||||
NULL,
|
||||
SW_SHOWDEFAULT) > 32;
|
||||
@@ -73,11 +108,16 @@ wWinMain(HINSTANCE hInstance,
|
||||
INT nCmdShow)
|
||||
{
|
||||
HKEY hKey;
|
||||
LPWSTR *argv;
|
||||
int argc;
|
||||
|
||||
/* Show the control panel window if no argument or "panel" was passed */
|
||||
if (*lpCmdLine == 0 || !_wcsicmp(lpCmdLine, L"panel"))
|
||||
return OpenShellFolder(L"");
|
||||
|
||||
/* Map legacy control panels */
|
||||
if (!_wcsicmp(lpCmdLine, L"sticpl.cpl")) lpCmdLine = (LPWSTR) L"scannercamera";
|
||||
|
||||
/* Check one of the built-in control panel handlers */
|
||||
if (!_wcsicmp(lpCmdLine, L"admintools")) return OpenShellFolder(L"\\::{D20EA4E1-3957-11d2-A40B-0C5020524153}");
|
||||
else if (!_wcsicmp(lpCmdLine, L"color")) return RunControlPanel(L"desk.cpl,,2");
|
||||
@@ -99,6 +139,28 @@ wWinMain(HINSTANCE hInstance,
|
||||
else if (!_wcsicmp(lpCmdLine, L"userpasswords")) return RunControlPanel(L"nusrmgr.cpl"); /* Graphical User Account Manager */
|
||||
else if (!_wcsicmp(lpCmdLine, L"userpasswords2")) return RUNDLL(L"netplwiz.dll,UsersRunDll"); /* Dialog based advanced User Account Manager */
|
||||
|
||||
/* https://learn.microsoft.com/en-us/windows/win32/shell/executing-control-panel-items#windows-vista-canonical-names */
|
||||
argv = CommandLineToArgvW(lpCmdLine, &argc);
|
||||
if (argv)
|
||||
{
|
||||
UINT argi = 0;
|
||||
HRESULT hr = -1;
|
||||
if (argc >= 2 && IsSwitch(L"name", argv[argi + 0]))
|
||||
{
|
||||
LPCWSTR pszPage = NULL;
|
||||
if (argc >= 4 && IsSwitch(L"page", argv[argi + 2]))
|
||||
{
|
||||
pszPage = argv[argi + 3];
|
||||
}
|
||||
hr = OpenControlPanelItem(argv[argi + 1], pszPage);
|
||||
}
|
||||
LocalFree(argv);
|
||||
if (hr != -1)
|
||||
{
|
||||
return SUCCEEDED(hr);
|
||||
}
|
||||
}
|
||||
|
||||
/* It is none of them, so look for a handler in the registry */
|
||||
if (RegOpenKeyExW(HKEY_LOCAL_MACHINE,
|
||||
L"Software\\Microsoft\\Windows\\CurrentVersion\\Control Panel\\Cpls",
|
||||
|
100
base/applications/ctfmon/CLoaderWnd.cpp
Normal file
100
base/applications/ctfmon/CLoaderWnd.cpp
Normal file
@@ -0,0 +1,100 @@
|
||||
/*
|
||||
* PROJECT: ReactOS CTF Monitor
|
||||
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
|
||||
* PURPOSE: Cicero Tipbar (Language Bar) loader window
|
||||
* COPYRIGHT: Copyright 2023 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
|
||||
*/
|
||||
|
||||
#include "precomp.h"
|
||||
#include "CLoaderWnd.h"
|
||||
#include "CRegWatcher.h"
|
||||
|
||||
BOOL CLoaderWnd::s_bUninitedSystem = FALSE;
|
||||
BOOL CLoaderWnd::s_bWndClassRegistered = FALSE;
|
||||
|
||||
BOOL CLoaderWnd::Init()
|
||||
{
|
||||
if (s_bWndClassRegistered)
|
||||
return TRUE; // Already registered
|
||||
|
||||
// Register a window class
|
||||
WNDCLASSEX wc;
|
||||
ZeroMemory(&wc, sizeof(wc));
|
||||
wc.cbSize = sizeof(wc);
|
||||
wc.style = CS_HREDRAW | CS_VREDRAW;
|
||||
wc.hInstance = g_hInst;
|
||||
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
|
||||
wc.lpfnWndProc = WindowProc;
|
||||
wc.lpszClassName = TEXT("CiCTipBarClass");
|
||||
if (!::RegisterClassEx(&wc))
|
||||
return FALSE;
|
||||
|
||||
s_bWndClassRegistered = TRUE; // Remember
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
HWND CLoaderWnd::CreateWnd()
|
||||
{
|
||||
m_hWnd = ::CreateWindowEx(0, TEXT("CiCTipBarClass"), NULL, WS_DISABLED,
|
||||
0, 0, 0, 0, NULL, NULL, g_hInst, NULL);
|
||||
return m_hWnd;
|
||||
}
|
||||
|
||||
LRESULT CALLBACK
|
||||
CLoaderWnd::WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
switch (uMsg)
|
||||
{
|
||||
case WM_CREATE:
|
||||
break;
|
||||
|
||||
case WM_DESTROY:
|
||||
::PostQuitMessage(0);
|
||||
break;
|
||||
|
||||
case WM_QUERYENDSESSION:
|
||||
// NOTE: We don't support Win95/98/Me
|
||||
#ifdef SUPPORT_WIN9X
|
||||
if (!(g_dwOsInfo & CIC_OSINFO_NT) && (!g_fWinLogon || (lParam & ENDSESSION_LOGOFF)))
|
||||
{
|
||||
ClosePopupTipbar();
|
||||
TF_UninitSystem();
|
||||
CLoaderWnd::s_bUninitedSystem = TRUE;
|
||||
}
|
||||
#endif
|
||||
return TRUE;
|
||||
|
||||
case WM_ENDSESSION:
|
||||
if (wParam) // The session is being ended?
|
||||
{
|
||||
if (!s_bUninitedSystem)
|
||||
{
|
||||
// Un-initialize now
|
||||
UninitApp();
|
||||
TF_UninitSystem();
|
||||
s_bUninitedSystem = TRUE;
|
||||
}
|
||||
}
|
||||
else if (s_bUninitedSystem) // Once un-initialized?
|
||||
{
|
||||
// Re-initialize
|
||||
TF_InitSystem();
|
||||
if (!g_bOnWow64)
|
||||
GetPopupTipbar(hwnd, !!g_fWinLogon);
|
||||
|
||||
s_bUninitedSystem = FALSE;
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_SYSCOLORCHANGE:
|
||||
case WM_DISPLAYCHANGE:
|
||||
if (!g_bOnWow64) // Is the system x86/x64 native?
|
||||
CRegWatcher::StartSysColorChangeTimer();
|
||||
break;
|
||||
|
||||
default:
|
||||
return DefWindowProc(hwnd, uMsg, wParam, lParam);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
26
base/applications/ctfmon/CLoaderWnd.h
Normal file
26
base/applications/ctfmon/CLoaderWnd.h
Normal file
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
* PROJECT: ReactOS CTF Monitor
|
||||
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
|
||||
* PURPOSE: Cicero Tipbar (Language Bar) loader window
|
||||
* COPYRIGHT: Copyright 2023 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
class CLoaderWnd
|
||||
{
|
||||
public:
|
||||
HWND m_hWnd;
|
||||
static BOOL s_bUninitedSystem;
|
||||
static BOOL s_bWndClassRegistered;
|
||||
|
||||
CLoaderWnd() : m_hWnd(NULL) { }
|
||||
~CLoaderWnd() { }
|
||||
|
||||
BOOL Init();
|
||||
HWND CreateWnd();
|
||||
|
||||
protected:
|
||||
static LRESULT CALLBACK
|
||||
WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||
};
|
14
base/applications/ctfmon/CMakeLists.txt
Normal file
14
base/applications/ctfmon/CMakeLists.txt
Normal file
@@ -0,0 +1,14 @@
|
||||
|
||||
list(APPEND SOURCE
|
||||
ctfmon.cpp
|
||||
CLoaderWnd.cpp
|
||||
CRegWatcher.cpp)
|
||||
|
||||
add_rc_deps(ctfmon.rc ${CMAKE_CURRENT_SOURCE_DIR}/res/ctfmon.ico)
|
||||
add_executable(ctfmon ${SOURCE} ctfmon.rc)
|
||||
set_module_type(ctfmon win32gui UNICODE)
|
||||
add_dependencies(ctfmon msctf msutb)
|
||||
target_link_libraries(ctfmon uuid cicero)
|
||||
add_importlibs(ctfmon msctf msutb advapi32 shell32 user32 msvcrt kernel32)
|
||||
add_pch(ctfmon precomp.h SOURCE)
|
||||
add_cd_file(TARGET ctfmon DESTINATION reactos/system32 FOR all)
|
369
base/applications/ctfmon/CRegWatcher.cpp
Normal file
369
base/applications/ctfmon/CRegWatcher.cpp
Normal file
@@ -0,0 +1,369 @@
|
||||
/*
|
||||
* PROJECT: ReactOS CTF Monitor
|
||||
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
|
||||
* PURPOSE: Registry watcher
|
||||
* COPYRIGHT: Copyright 2023 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
|
||||
*/
|
||||
|
||||
#include "precomp.h"
|
||||
#include "CRegWatcher.h"
|
||||
|
||||
// The event handles to use in watching
|
||||
HANDLE CRegWatcher::s_ahWatchEvents[WATCHENTRY_MAX] = { NULL };
|
||||
|
||||
// The registry entries to watch
|
||||
WATCHENTRY CRegWatcher::s_WatchEntries[WATCHENTRY_MAX] =
|
||||
{
|
||||
{ HKEY_CURRENT_USER, TEXT("Keyboard Layout\\Toggle") }, // WI_TOGGLE
|
||||
{ HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Microsoft\\CTF\\TIP") }, // WI_MACHINE_TIF
|
||||
{ HKEY_CURRENT_USER, TEXT("Keyboard Layout\\Preload") }, // WI_PRELOAD
|
||||
{ HKEY_CURRENT_USER, TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run") }, // WI_RUN
|
||||
{ HKEY_CURRENT_USER, TEXT("SOFTWARE\\Microsoft\\CTF\\TIP") }, // WI_USER_TIF
|
||||
{ HKEY_CURRENT_USER, TEXT("SOFTWARE\\Microsoft\\Speech") }, // WI_USER_SPEECH
|
||||
{ HKEY_CURRENT_USER, TEXT("Control Panel\\Appearance") }, // WI_APPEARANCE
|
||||
{ HKEY_CURRENT_USER, TEXT("Control Panel\\Colors") }, // WI_COLORS
|
||||
{ HKEY_CURRENT_USER, TEXT("Control Panel\\Desktop\\WindowMetrics") }, // WI_WINDOW_METRICS
|
||||
{ HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Microsoft\\Speech") }, // WI_MACHINE_SPEECH
|
||||
{ HKEY_CURRENT_USER, TEXT("Keyboard Layout") }, // WI_KEYBOARD_LAYOUT
|
||||
{ HKEY_CURRENT_USER, TEXT("SOFTWARE\\Microsoft\\CTF\\Assemblies") }, // WI_ASSEMBLIES
|
||||
};
|
||||
|
||||
// The timer IDs: For delaying ignitions
|
||||
UINT CRegWatcher::s_nSysColorTimerId = 0;
|
||||
UINT CRegWatcher::s_nKbdToggleTimerId = 0;
|
||||
UINT CRegWatcher::s_nRegImxTimerId = 0;
|
||||
|
||||
// %WINDIR%/IME/sptip.dll!TF_CreateLangProfileUtil
|
||||
typedef HRESULT (WINAPI* FN_TF_CreateLangProfileUtil)(ITfFnLangProfileUtil**);
|
||||
|
||||
BOOL
|
||||
CRegWatcher::Init()
|
||||
{
|
||||
// NOTE: We don't support Win95/98/Me
|
||||
#ifdef SUPPORT_WIN9X
|
||||
if (!(g_dwOsInfo & CIC_OSINFO_NT))
|
||||
s_WatchEntries[WI_RUN].hRootKey = HKEY_LOCAL_MACHINE;
|
||||
#endif
|
||||
|
||||
// Create some nameless events and initialize them
|
||||
for (SIZE_T iEvent = 0; iEvent < _countof(s_ahWatchEvents); ++iEvent)
|
||||
{
|
||||
s_ahWatchEvents[iEvent] = ::CreateEvent(NULL, TRUE, FALSE, NULL);
|
||||
InitEvent(iEvent, FALSE);
|
||||
}
|
||||
|
||||
// Internat.exe is an enemy of ctfmon.exe
|
||||
KillInternat();
|
||||
|
||||
UpdateSpTip();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
VOID
|
||||
CRegWatcher::Uninit()
|
||||
{
|
||||
for (SIZE_T iEvent = 0; iEvent < _countof(s_ahWatchEvents); ++iEvent)
|
||||
{
|
||||
// Close the key
|
||||
WATCHENTRY& entry = s_WatchEntries[iEvent];
|
||||
if (entry.hKey)
|
||||
{
|
||||
::RegCloseKey(entry.hKey);
|
||||
entry.hKey = NULL;
|
||||
}
|
||||
|
||||
// Close the event handle
|
||||
HANDLE& hEvent = s_ahWatchEvents[iEvent];
|
||||
if (hEvent)
|
||||
{
|
||||
::CloseHandle(hEvent);
|
||||
hEvent = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// advapi32!RegNotifyChangeKeyValue
|
||||
typedef LONG (WINAPI *FN_RegNotifyChangeKeyValue)(HKEY, BOOL, DWORD, HANDLE, BOOL);
|
||||
|
||||
LONG WINAPI
|
||||
DelayedRegNotifyChangeKeyValue(
|
||||
HKEY hKey,
|
||||
BOOL bWatchSubtree,
|
||||
DWORD dwNotifyFilter,
|
||||
HANDLE hEvent,
|
||||
BOOL fAsynchronous)
|
||||
{
|
||||
static FN_RegNotifyChangeKeyValue s_fnRegNotifyChangeKeyValue = NULL;
|
||||
|
||||
if (!s_fnRegNotifyChangeKeyValue)
|
||||
{
|
||||
HINSTANCE hAdvApi32 = cicGetSystemModuleHandle(TEXT("advapi32.dll"), FALSE);
|
||||
s_fnRegNotifyChangeKeyValue =
|
||||
(FN_RegNotifyChangeKeyValue)GetProcAddress(hAdvApi32, "RegNotifyChangeKeyValue");
|
||||
if (!s_fnRegNotifyChangeKeyValue)
|
||||
return ERROR_CALL_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
return s_fnRegNotifyChangeKeyValue(hKey, bWatchSubtree, dwNotifyFilter, hEvent, fAsynchronous);
|
||||
}
|
||||
|
||||
BOOL
|
||||
CRegWatcher::InitEvent(
|
||||
_In_ SIZE_T iEvent,
|
||||
_In_ BOOL bResetEvent)
|
||||
{
|
||||
// Reset the signal status
|
||||
if (bResetEvent)
|
||||
::ResetEvent(s_ahWatchEvents[iEvent]);
|
||||
|
||||
// Close once to re-open
|
||||
WATCHENTRY& entry = s_WatchEntries[iEvent];
|
||||
if (entry.hKey)
|
||||
{
|
||||
::RegCloseKey(entry.hKey);
|
||||
entry.hKey = NULL;
|
||||
}
|
||||
|
||||
// Open or create a registry key to watch registry key
|
||||
LSTATUS error;
|
||||
error = ::RegOpenKeyEx(entry.hRootKey, entry.pszSubKey, 0, KEY_READ, &entry.hKey);
|
||||
if (error != ERROR_SUCCESS)
|
||||
{
|
||||
error = ::RegCreateKeyEx(entry.hRootKey, entry.pszSubKey, 0, NULL, 0,
|
||||
KEY_ALL_ACCESS, NULL, &entry.hKey, NULL);
|
||||
if (error != ERROR_SUCCESS)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// Start registry watching
|
||||
error = DelayedRegNotifyChangeKeyValue(entry.hKey,
|
||||
TRUE,
|
||||
REG_NOTIFY_CHANGE_LAST_SET | REG_NOTIFY_CHANGE_NAME,
|
||||
s_ahWatchEvents[iEvent],
|
||||
TRUE);
|
||||
#ifndef NDEBUG
|
||||
if (error != ERROR_SUCCESS)
|
||||
OutputDebugStringA("RegNotifyChangeKeyValue failed\n");
|
||||
#endif
|
||||
return error == ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
VOID
|
||||
CRegWatcher::UpdateSpTip()
|
||||
{
|
||||
// Post message 0x8002 to "SapiTipWorkerClass" windows
|
||||
::EnumWindows(EnumWndProc, 0);
|
||||
|
||||
// Clear "ProfileInitialized" value
|
||||
HKEY hKey;
|
||||
LSTATUS error = ::RegOpenKeyEx(HKEY_CURRENT_USER,
|
||||
TEXT("SOFTWARE\\Microsoft\\CTF\\Sapilayr"),
|
||||
0, KEY_WRITE, &hKey);
|
||||
if (error == ERROR_SUCCESS)
|
||||
{
|
||||
DWORD dwValue = 0, cbValue = sizeof(dwValue);
|
||||
::RegSetValueEx(hKey, TEXT("ProfileInitialized"), NULL, REG_DWORD, (LPBYTE)&dwValue, cbValue);
|
||||
::RegCloseKey(hKey);
|
||||
}
|
||||
|
||||
// Get %WINDIR%/IME/sptip.dll!TF_CreateLangProfileUtil function
|
||||
HINSTANCE hSPTIP = cicLoadSystemLibrary(TEXT("IME\\sptip.dll"), TRUE);
|
||||
FN_TF_CreateLangProfileUtil fnTF_CreateLangProfileUtil =
|
||||
(FN_TF_CreateLangProfileUtil)::GetProcAddress(hSPTIP, "TF_CreateLangProfileUtil");
|
||||
if (fnTF_CreateLangProfileUtil)
|
||||
{
|
||||
// Call it
|
||||
ITfFnLangProfileUtil *pProfileUtil = NULL;
|
||||
HRESULT hr = fnTF_CreateLangProfileUtil(&pProfileUtil);
|
||||
if ((hr == S_OK) && pProfileUtil) // Success!
|
||||
{
|
||||
// Register profile
|
||||
hr = pProfileUtil->RegisterActiveProfiles();
|
||||
if (hr == S_OK)
|
||||
TF_InvalidAssemblyListCacheIfExist(); // Invalidate the assembly list cache
|
||||
|
||||
pProfileUtil->Release();
|
||||
}
|
||||
}
|
||||
|
||||
if (hSPTIP)
|
||||
::FreeLibrary(hSPTIP);
|
||||
}
|
||||
|
||||
VOID
|
||||
CRegWatcher::KillInternat()
|
||||
{
|
||||
HKEY hKey;
|
||||
WATCHENTRY& entry = s_WatchEntries[WI_RUN];
|
||||
|
||||
// Delete internat.exe from registry "Run" key
|
||||
LSTATUS error = ::RegOpenKeyEx(entry.hRootKey, entry.pszSubKey, 0, KEY_ALL_ACCESS, &hKey);
|
||||
if (error == ERROR_SUCCESS)
|
||||
{
|
||||
::RegDeleteValue(hKey, TEXT("internat.exe"));
|
||||
::RegCloseKey(hKey);
|
||||
}
|
||||
|
||||
// Kill the "Indicator" window (that internat.exe creates)
|
||||
HWND hwndInternat = ::FindWindow(TEXT("Indicator"), NULL);
|
||||
if (hwndInternat)
|
||||
::PostMessage(hwndInternat, WM_CLOSE, 0, 0);
|
||||
}
|
||||
|
||||
// Post message 0x8002 to every "SapiTipWorkerClass" window.
|
||||
// Called from CRegWatcher::UpdateSpTip
|
||||
BOOL CALLBACK
|
||||
CRegWatcher::EnumWndProc(
|
||||
_In_ HWND hWnd,
|
||||
_In_ LPARAM lParam)
|
||||
{
|
||||
TCHAR ClassName[MAX_PATH];
|
||||
|
||||
UNREFERENCED_PARAMETER(lParam);
|
||||
|
||||
if (::GetClassName(hWnd, ClassName, _countof(ClassName)) &&
|
||||
_tcsicmp(ClassName, TEXT("SapiTipWorkerClass")) == 0)
|
||||
{
|
||||
PostMessage(hWnd, 0x8002, 0, 0); // FIXME: Magic number
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
VOID CALLBACK
|
||||
CRegWatcher::SysColorTimerProc(
|
||||
_In_ HWND hwnd,
|
||||
_In_ UINT uMsg,
|
||||
_In_ UINT_PTR idEvent,
|
||||
_In_ DWORD dwTime)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(hwnd);
|
||||
UNREFERENCED_PARAMETER(uMsg);
|
||||
UNREFERENCED_PARAMETER(idEvent);
|
||||
UNREFERENCED_PARAMETER(dwTime);
|
||||
|
||||
// Cancel the timer
|
||||
if (s_nSysColorTimerId)
|
||||
{
|
||||
::KillTimer(NULL, s_nSysColorTimerId);
|
||||
s_nSysColorTimerId = 0;
|
||||
}
|
||||
|
||||
TF_PostAllThreadMsg(15, 16);
|
||||
}
|
||||
|
||||
VOID
|
||||
CRegWatcher::StartSysColorChangeTimer()
|
||||
{
|
||||
// Call SysColorTimerProc 0.5 seconds later (Delayed)
|
||||
if (s_nSysColorTimerId)
|
||||
{
|
||||
::KillTimer(NULL, s_nSysColorTimerId);
|
||||
s_nSysColorTimerId = 0;
|
||||
}
|
||||
s_nSysColorTimerId = ::SetTimer(NULL, 0, 500, SysColorTimerProc);
|
||||
}
|
||||
|
||||
VOID CALLBACK
|
||||
CRegWatcher::RegImxTimerProc(
|
||||
_In_ HWND hwnd,
|
||||
_In_ UINT uMsg,
|
||||
_In_ UINT_PTR idEvent,
|
||||
_In_ DWORD dwTime)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(hwnd);
|
||||
UNREFERENCED_PARAMETER(uMsg);
|
||||
UNREFERENCED_PARAMETER(idEvent);
|
||||
UNREFERENCED_PARAMETER(dwTime);
|
||||
|
||||
// Cancel the timer
|
||||
if (s_nRegImxTimerId)
|
||||
{
|
||||
::KillTimer(NULL, s_nRegImxTimerId);
|
||||
s_nRegImxTimerId = 0;
|
||||
}
|
||||
|
||||
TF_InvalidAssemblyListCache();
|
||||
TF_PostAllThreadMsg(12, 16);
|
||||
}
|
||||
|
||||
VOID CALLBACK
|
||||
CRegWatcher::KbdToggleTimerProc(
|
||||
_In_ HWND hwnd,
|
||||
_In_ UINT uMsg,
|
||||
_In_ UINT_PTR idEvent,
|
||||
_In_ DWORD dwTime)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(hwnd);
|
||||
UNREFERENCED_PARAMETER(uMsg);
|
||||
UNREFERENCED_PARAMETER(idEvent);
|
||||
UNREFERENCED_PARAMETER(dwTime);
|
||||
|
||||
// Cancel the timer
|
||||
if (s_nKbdToggleTimerId)
|
||||
{
|
||||
::KillTimer(NULL, s_nKbdToggleTimerId);
|
||||
s_nKbdToggleTimerId = 0;
|
||||
}
|
||||
|
||||
TF_PostAllThreadMsg(11, 16);
|
||||
}
|
||||
|
||||
VOID
|
||||
CRegWatcher::OnEvent(
|
||||
_In_ SIZE_T iEvent)
|
||||
{
|
||||
InitEvent(iEvent, TRUE);
|
||||
|
||||
switch (iEvent)
|
||||
{
|
||||
case WI_TOGGLE:
|
||||
{
|
||||
// Call KbdToggleTimerProc 0.5 seconds later (Delayed)
|
||||
if (s_nKbdToggleTimerId)
|
||||
{
|
||||
::KillTimer(NULL, s_nKbdToggleTimerId);
|
||||
s_nKbdToggleTimerId = 0;
|
||||
}
|
||||
s_nKbdToggleTimerId = ::SetTimer(NULL, 0, 500, KbdToggleTimerProc);
|
||||
break;
|
||||
}
|
||||
case WI_MACHINE_TIF:
|
||||
case WI_PRELOAD:
|
||||
case WI_USER_TIF:
|
||||
case WI_MACHINE_SPEECH:
|
||||
case WI_KEYBOARD_LAYOUT:
|
||||
case WI_ASSEMBLIES:
|
||||
{
|
||||
if (iEvent == WI_MACHINE_SPEECH)
|
||||
UpdateSpTip();
|
||||
|
||||
// Call RegImxTimerProc 0.2 seconds later (Delayed)
|
||||
if (s_nRegImxTimerId)
|
||||
{
|
||||
::KillTimer(NULL, s_nRegImxTimerId);
|
||||
s_nRegImxTimerId = 0;
|
||||
}
|
||||
s_nRegImxTimerId = ::SetTimer(NULL, 0, 200, RegImxTimerProc);
|
||||
break;
|
||||
}
|
||||
case WI_RUN: // The "Run" key is changed
|
||||
{
|
||||
KillInternat(); // Deny internat.exe the right to live
|
||||
break;
|
||||
}
|
||||
case WI_USER_SPEECH:
|
||||
case WI_APPEARANCE:
|
||||
case WI_COLORS:
|
||||
case WI_WINDOW_METRICS:
|
||||
{
|
||||
StartSysColorChangeTimer();
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
45
base/applications/ctfmon/CRegWatcher.h
Normal file
45
base/applications/ctfmon/CRegWatcher.h
Normal file
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* PROJECT: ReactOS CTF Monitor
|
||||
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
|
||||
* PURPOSE: Registry watcher
|
||||
* COPYRIGHT: Copyright 2023 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
struct WATCHENTRY
|
||||
{
|
||||
HKEY hRootKey;
|
||||
LPCTSTR pszSubKey;
|
||||
HKEY hKey;
|
||||
};
|
||||
|
||||
#define WATCHENTRY_MAX 12
|
||||
|
||||
struct CRegWatcher
|
||||
{
|
||||
static HANDLE s_ahWatchEvents[WATCHENTRY_MAX];
|
||||
static WATCHENTRY s_WatchEntries[WATCHENTRY_MAX];
|
||||
static UINT s_nSysColorTimerId, s_nKbdToggleTimerId, s_nRegImxTimerId;
|
||||
|
||||
static BOOL Init();
|
||||
static VOID Uninit();
|
||||
static BOOL InitEvent(_In_ SIZE_T iEvent, _In_ BOOL bResetEvent);
|
||||
static VOID UpdateSpTip();
|
||||
static VOID KillInternat();
|
||||
static VOID StartSysColorChangeTimer();
|
||||
static VOID OnEvent(_In_ SIZE_T iEvent);
|
||||
|
||||
protected:
|
||||
static BOOL CALLBACK
|
||||
EnumWndProc(_In_ HWND hWnd, _In_ LPARAM lParam);
|
||||
|
||||
static VOID CALLBACK
|
||||
SysColorTimerProc(_In_ HWND hWnd, _In_ UINT uMsg, _In_ UINT_PTR idEvent, _In_ DWORD dwTime);
|
||||
|
||||
static VOID CALLBACK
|
||||
KbdToggleTimerProc(_In_ HWND hWnd, _In_ UINT uMsg, _In_ UINT_PTR idEvent, _In_ DWORD dwTime);
|
||||
|
||||
static VOID CALLBACK
|
||||
RegImxTimerProc(_In_ HWND hWnd, _In_ UINT uMsg, _In_ UINT_PTR idEvent, _In_ DWORD dwTime);
|
||||
};
|
365
base/applications/ctfmon/ctfmon.cpp
Normal file
365
base/applications/ctfmon/ctfmon.cpp
Normal file
@@ -0,0 +1,365 @@
|
||||
/*
|
||||
* PROJECT: ReactOS CTF Monitor
|
||||
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
|
||||
* PURPOSE: Providing Language Bar front-end
|
||||
* COPYRIGHT: Copyright 2023 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
|
||||
*/
|
||||
|
||||
#include "precomp.h"
|
||||
#include "CRegWatcher.h"
|
||||
#include "CLoaderWnd.h"
|
||||
|
||||
// kernel32!SetProcessShutdownParameters
|
||||
typedef BOOL (WINAPI *FN_SetProcessShutdownParameters)(DWORD, DWORD);
|
||||
FN_SetProcessShutdownParameters g_fnSetProcessShutdownParameters = NULL;
|
||||
|
||||
// kernel32!GetSystemWow64DirectoryA
|
||||
typedef UINT (WINAPI *FN_GetSystemWow64DirectoryA)(LPSTR, UINT);
|
||||
FN_GetSystemWow64DirectoryA g_fnGetSystemWow64DirectoryA = NULL;
|
||||
// kernel32!GetSystemWow64DirectoryW
|
||||
typedef UINT (WINAPI *FN_GetSystemWow64DirectoryW)(LPWSTR, UINT);
|
||||
FN_GetSystemWow64DirectoryW g_fnGetSystemWow64DirectoryW = NULL;
|
||||
|
||||
HINSTANCE g_hInst = NULL; // The application instance
|
||||
HINSTANCE g_hKernel32 = NULL; // The "kernel32.dll" instance
|
||||
UINT g_uACP = CP_ACP; // The active codepage
|
||||
BOOL g_fWinLogon = FALSE; // Is it a log-on process?
|
||||
HANDLE g_hCicMutex = NULL; // The Cicero mutex
|
||||
BOOL g_bOnWow64 = FALSE; // Is the app running on WoW64?
|
||||
BOOL g_fNoRunKey = FALSE; // Don't write registry key "Run"?
|
||||
BOOL g_fJustRunKey = FALSE; // Just write registry key "Run"?
|
||||
DWORD g_dwOsInfo = 0; // The OS version info. See cicGetOSInfo
|
||||
CLoaderWnd* g_pLoaderWnd = NULL; // Tipbar loader window
|
||||
|
||||
static VOID
|
||||
ParseCommandLine(
|
||||
_In_ LPCTSTR pszCmdLine)
|
||||
{
|
||||
g_fNoRunKey = g_fJustRunKey = FALSE;
|
||||
|
||||
for (LPCTSTR pch = pszCmdLine; *pch; ++pch)
|
||||
{
|
||||
// Skip space
|
||||
while (*pch == TEXT(' '))
|
||||
++pch;
|
||||
|
||||
if (*pch == TEXT('\0'))
|
||||
return;
|
||||
|
||||
if ((*pch == TEXT('-')) || (*pch == TEXT('/')))
|
||||
{
|
||||
++pch;
|
||||
switch (*pch)
|
||||
{
|
||||
case TEXT('N'): case TEXT('n'): // Found "/N" option
|
||||
g_fNoRunKey = TRUE;
|
||||
break;
|
||||
|
||||
case TEXT('R'): case TEXT('r'): // Found "/R" option
|
||||
g_fJustRunKey = TRUE;
|
||||
break;
|
||||
|
||||
case UNICODE_NULL:
|
||||
return;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static VOID
|
||||
WriteRegRun(VOID)
|
||||
{
|
||||
if (g_fNoRunKey) // If "/N" option is specified
|
||||
return; // Don't write
|
||||
|
||||
// Open "Run" key
|
||||
HKEY hKey;
|
||||
LSTATUS error = ::RegCreateKey(HKEY_CURRENT_USER,
|
||||
TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Run"),
|
||||
&hKey);
|
||||
if (error != ERROR_SUCCESS)
|
||||
return;
|
||||
|
||||
// Write the module path
|
||||
CicSystemModulePath ModPath;
|
||||
if (ModPath.Init(TEXT("ctfmon.exe"), FALSE))
|
||||
{
|
||||
DWORD cbData = (ModPath.m_cchPath + 1) * sizeof(TCHAR);
|
||||
::RegSetValueEx(hKey, TEXT("ctfmon.exe"), 0, REG_SZ, (BYTE*)ModPath.m_szPath, cbData);
|
||||
}
|
||||
|
||||
::RegCloseKey(hKey);
|
||||
}
|
||||
|
||||
static HRESULT
|
||||
GetGlobalCompartment(
|
||||
_In_ REFGUID guid,
|
||||
_Inout_ ITfCompartment **ppComp)
|
||||
{
|
||||
*ppComp = NULL;
|
||||
|
||||
ITfCompartmentMgr *pCompMgr = NULL;
|
||||
HRESULT hr = TF_GetGlobalCompartment(&pCompMgr);
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
|
||||
if (!pCompMgr)
|
||||
return E_FAIL;
|
||||
|
||||
hr = pCompMgr->GetCompartment(guid, ppComp);
|
||||
pCompMgr->Release();
|
||||
return hr;
|
||||
}
|
||||
|
||||
static HRESULT
|
||||
SetGlobalCompartmentDWORD(
|
||||
_In_ REFGUID guid,
|
||||
_In_ DWORD dwValue)
|
||||
{
|
||||
HRESULT hr;
|
||||
VARIANT vari;
|
||||
ITfCompartment *pComp;
|
||||
|
||||
hr = GetGlobalCompartment(guid, &pComp);
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
|
||||
V_VT(&vari) = VT_I4;
|
||||
V_I4(&vari) = dwValue;
|
||||
hr = pComp->SetValue(0, &vari);
|
||||
|
||||
pComp->Release();
|
||||
return hr;
|
||||
}
|
||||
|
||||
static BOOL
|
||||
CheckX64System(
|
||||
_In_ LPTSTR lpCmdLine)
|
||||
{
|
||||
// Is the system x64?
|
||||
SYSTEM_INFO SystemInfo;
|
||||
::GetSystemInfo(&SystemInfo);
|
||||
if (SystemInfo.wProcessorArchitecture != PROCESSOR_ARCHITECTURE_IA64 ||
|
||||
SystemInfo.wProcessorArchitecture != PROCESSOR_ARCHITECTURE_AMD64)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// Get GetSystemWow64DirectoryW function
|
||||
g_hKernel32 = cicGetSystemModuleHandle(TEXT("kernel32.dll"), FALSE);
|
||||
#ifdef UNICODE
|
||||
g_fnGetSystemWow64DirectoryW =
|
||||
(FN_GetSystemWow64DirectoryW)::GetProcAddress(g_hKernel32, "GetSystemWow64DirectoryW");
|
||||
if (!g_fnGetSystemWow64DirectoryW)
|
||||
return FALSE;
|
||||
#else
|
||||
g_fnGetSystemWow64DirectoryA =
|
||||
(FN_GetSystemWow64DirectoryA)::GetProcAddress(g_hKernel32, "GetSystemWow64DirectoryA");
|
||||
if (!g_fnGetSystemWow64DirectoryA)
|
||||
return FALSE;
|
||||
#endif
|
||||
|
||||
// Build WoW64 ctfmon.exe pathname
|
||||
TCHAR szPath[MAX_PATH];
|
||||
#ifdef UNICODE
|
||||
UINT cchPath = g_fnGetSystemWow64DirectoryW(szPath, _countof(szPath));
|
||||
#else
|
||||
UINT cchPath = g_fnGetSystemWow64DirectoryA(szPath, _countof(szPath));
|
||||
#endif
|
||||
if (!cchPath && FAILED(StringCchCat(szPath, _countof(szPath), TEXT("\\ctfmon.exe"))))
|
||||
return FALSE;
|
||||
|
||||
// Create a WoW64 ctfmon.exe process
|
||||
PROCESS_INFORMATION pi;
|
||||
STARTUPINFO si = { sizeof(si) };
|
||||
si.wShowWindow = SW_SHOWMINNOACTIVE;
|
||||
if (!::CreateProcess(szPath, lpCmdLine, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
|
||||
return FALSE;
|
||||
|
||||
::CloseHandle(pi.hThread);
|
||||
::CloseHandle(pi.hProcess);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static BOOL
|
||||
InitApp(
|
||||
_In_ HINSTANCE hInstance,
|
||||
_In_ LPTSTR lpCmdLine)
|
||||
{
|
||||
g_hInst = hInstance; // Save the instance handle
|
||||
|
||||
g_bOnWow64 = cicIsWow64(); // Is the current process on WoW64?
|
||||
cicGetOSInfo(&g_uACP, &g_dwOsInfo); // Get OS info
|
||||
|
||||
// Create a mutex for Cicero
|
||||
g_hCicMutex = TF_CreateCicLoadMutex(&g_fWinLogon);
|
||||
if (!g_hCicMutex)
|
||||
return FALSE;
|
||||
|
||||
// Write to "Run" registry key for starting up
|
||||
WriteRegRun();
|
||||
|
||||
// Call SetProcessShutdownParameters if possible
|
||||
if (g_dwOsInfo & CIC_OSINFO_NT)
|
||||
{
|
||||
g_hKernel32 = cicGetSystemModuleHandle(TEXT("kernel32.dll"), FALSE);
|
||||
g_fnSetProcessShutdownParameters =
|
||||
(FN_SetProcessShutdownParameters)
|
||||
::GetProcAddress(g_hKernel32, "SetProcessShutdownParameters");
|
||||
if (g_fnSetProcessShutdownParameters)
|
||||
g_fnSetProcessShutdownParameters(0xF0, SHUTDOWN_NORETRY);
|
||||
}
|
||||
|
||||
// Start text framework
|
||||
TF_InitSystem();
|
||||
|
||||
// Start watching registry if x86/x64 native
|
||||
if (!g_bOnWow64)
|
||||
CRegWatcher::Init();
|
||||
|
||||
// Create Tipbar loader window
|
||||
g_pLoaderWnd = new(cicNoThrow) CLoaderWnd();
|
||||
if (!g_pLoaderWnd || !g_pLoaderWnd->Init())
|
||||
return FALSE;
|
||||
|
||||
if (g_pLoaderWnd->CreateWnd())
|
||||
{
|
||||
// Go to the bottom of the hell
|
||||
::SetWindowPos(g_pLoaderWnd->m_hWnd, HWND_BOTTOM, 0, 0, 0, 0,
|
||||
SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);
|
||||
}
|
||||
|
||||
// Display Tipbar Popup if x86/x64 native and necessary
|
||||
if (!g_bOnWow64)
|
||||
GetPopupTipbar(g_pLoaderWnd->m_hWnd, g_fWinLogon);
|
||||
|
||||
// Do x64 stuffs
|
||||
CheckX64System(lpCmdLine);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
VOID
|
||||
UninitApp(VOID)
|
||||
{
|
||||
// Close Tipbar Popup
|
||||
ClosePopupTipbar();
|
||||
|
||||
// Close the mutex
|
||||
::CloseHandle(g_hCicMutex);
|
||||
g_hCicMutex = NULL;
|
||||
|
||||
// Quit watching registry if x86/x64 native
|
||||
if (!g_bOnWow64)
|
||||
CRegWatcher::Uninit();
|
||||
}
|
||||
|
||||
static INT
|
||||
DoMainLoop(VOID)
|
||||
{
|
||||
MSG msg;
|
||||
|
||||
if (g_bOnWow64) // Is the current process on WoW64?
|
||||
{
|
||||
// Just a simple message loop
|
||||
while (::GetMessage(&msg, NULL, 0, 0))
|
||||
{
|
||||
::TranslateMessage(&msg);
|
||||
::DispatchMessage(&msg);
|
||||
}
|
||||
return (INT)msg.wParam;
|
||||
}
|
||||
|
||||
// Open the existing event by the name
|
||||
HANDLE hSwitchEvent = ::OpenEvent(SYNCHRONIZE, FALSE, TEXT("WinSta0_DesktopSwitch"));
|
||||
|
||||
// The target events to watch
|
||||
HANDLE ahEvents[WATCHENTRY_MAX + 1];
|
||||
|
||||
// Borrow some handles from CRegWatcher
|
||||
CopyMemory(ahEvents, CRegWatcher::s_ahWatchEvents, WATCHENTRY_MAX * sizeof(HANDLE));
|
||||
|
||||
ahEvents[WI_DESKTOP_SWITCH] = hSwitchEvent; // Add it
|
||||
|
||||
// Another message loop
|
||||
for (;;)
|
||||
{
|
||||
// Wait for target signal
|
||||
DWORD dwWait = ::MsgWaitForMultipleObjects(_countof(ahEvents), ahEvents, 0, INFINITE,
|
||||
QS_ALLINPUT);
|
||||
if (dwWait == (WAIT_OBJECT_0 + _countof(ahEvents))) // Is input available?
|
||||
{
|
||||
// Do the events
|
||||
while (::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
|
||||
{
|
||||
if (msg.message == WM_QUIT)
|
||||
goto Quit;
|
||||
|
||||
::TranslateMessage(&msg);
|
||||
::DispatchMessage(&msg);
|
||||
}
|
||||
}
|
||||
else if (dwWait == (WAIT_OBJECT_0 + WI_DESKTOP_SWITCH)) // Desktop switch?
|
||||
{
|
||||
SetGlobalCompartmentDWORD(GUID_COMPARTMENT_SPEECH_OPENCLOSE, 0);
|
||||
::ResetEvent(hSwitchEvent);
|
||||
}
|
||||
else // Do the other events
|
||||
{
|
||||
CRegWatcher::OnEvent(dwWait - WAIT_OBJECT_0);
|
||||
}
|
||||
}
|
||||
|
||||
Quit:
|
||||
::CloseHandle(hSwitchEvent);
|
||||
|
||||
return (INT)msg.wParam;
|
||||
}
|
||||
|
||||
// The main function for Unicode Win32
|
||||
EXTERN_C INT WINAPI
|
||||
_tWinMain(
|
||||
HINSTANCE hInstance,
|
||||
HINSTANCE hPrevInst,
|
||||
LPTSTR lpCmdLine,
|
||||
INT nCmdShow)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(hPrevInst);
|
||||
UNREFERENCED_PARAMETER(nCmdShow);
|
||||
|
||||
// Parse command line
|
||||
ParseCommandLine(lpCmdLine);
|
||||
|
||||
if (g_fJustRunKey) // If "/R" option is specified
|
||||
{
|
||||
// Just write registry and exit
|
||||
WriteRegRun();
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Initialize the application
|
||||
if (!InitApp(hInstance, lpCmdLine))
|
||||
return 0;
|
||||
|
||||
// The main loop
|
||||
INT ret = DoMainLoop();
|
||||
|
||||
// Clean up the loader
|
||||
if (g_pLoaderWnd)
|
||||
{
|
||||
delete g_pLoaderWnd;
|
||||
g_pLoaderWnd = NULL;
|
||||
}
|
||||
|
||||
// Un-initialize app and text framework
|
||||
if (!CLoaderWnd::s_bUninitedSystem)
|
||||
{
|
||||
UninitApp();
|
||||
TF_UninitSystem();
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
19
base/applications/ctfmon/ctfmon.rc
Normal file
19
base/applications/ctfmon/ctfmon.rc
Normal file
@@ -0,0 +1,19 @@
|
||||
/*
|
||||
* PROJECT: ReactOS CTF Monitor
|
||||
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
|
||||
* PURPOSE: Providing Language Bar front-end
|
||||
* COPYRIGHT: Copyright 2023 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
|
||||
*/
|
||||
|
||||
#include <windef.h>
|
||||
|
||||
#include "resource.h"
|
||||
|
||||
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||
|
||||
#define REACTOS_STR_FILE_DESCRIPTION "ReactOS CTF Monitor"
|
||||
#define REACTOS_STR_INTERNAL_NAME "ctfmon"
|
||||
#define REACTOS_STR_ORIGINAL_FILENAME "ctfmon.exe"
|
||||
#include <reactos/version.rc>
|
||||
|
||||
IDI_MAIN ICON "res/ctfmon.ico"
|
47
base/applications/ctfmon/precomp.h
Normal file
47
base/applications/ctfmon/precomp.h
Normal file
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* PROJECT: ReactOS CTF Monitor
|
||||
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
|
||||
* PURPOSE: Providing Language Bar front-end
|
||||
* COPYRIGHT: Copyright 2023 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define WIN32_NO_STATUS
|
||||
#include <windows.h>
|
||||
#include <shellapi.h>
|
||||
#include <shlwapi.h>
|
||||
#include <stdlib.h>
|
||||
#include <tchar.h>
|
||||
#include <strsafe.h>
|
||||
#include <msctf.h>
|
||||
#include <ctfutb.h>
|
||||
#include <ctffunc.h>
|
||||
#include <cicbase.h>
|
||||
#include <cicutb.h>
|
||||
|
||||
#include "resource.h"
|
||||
|
||||
extern HINSTANCE g_hInst;
|
||||
extern BOOL g_bOnWow64;
|
||||
extern BOOL g_fWinLogon;
|
||||
extern DWORD g_dwOsInfo;
|
||||
|
||||
VOID UninitApp(VOID);
|
||||
|
||||
typedef enum WATCH_INDEX
|
||||
{
|
||||
WI_TOGGLE = 0,
|
||||
WI_MACHINE_TIF = 1,
|
||||
WI_PRELOAD = 2,
|
||||
WI_RUN = 3,
|
||||
WI_USER_TIF = 4,
|
||||
WI_USER_SPEECH = 5,
|
||||
WI_APPEARANCE = 6,
|
||||
WI_COLORS = 7,
|
||||
WI_WINDOW_METRICS = 8,
|
||||
WI_MACHINE_SPEECH = 9,
|
||||
WI_KEYBOARD_LAYOUT = 10,
|
||||
WI_ASSEMBLIES = 11,
|
||||
WI_DESKTOP_SWITCH = 12,
|
||||
} WATCH_INDEX;
|
BIN
base/applications/ctfmon/res/ctfmon.ico
Normal file
BIN
base/applications/ctfmon/res/ctfmon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 22 KiB |
4
base/applications/ctfmon/resource.h
Normal file
4
base/applications/ctfmon/resource.h
Normal file
@@ -0,0 +1,4 @@
|
||||
#pragma once
|
||||
|
||||
/* Icons */
|
||||
#define IDI_MAIN 100
|
@@ -18,7 +18,6 @@ GetFileModifyTime(LPCWSTR pFullPath, WCHAR * szTime, int szTimeSize)
|
||||
FILETIME AccessTime;
|
||||
SYSTEMTIME SysTime, LocalTime;
|
||||
UINT Length;
|
||||
TIME_ZONE_INFORMATION TimeInfo;
|
||||
|
||||
hFile = CreateFileW(pFullPath, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
|
||||
if (!hFile)
|
||||
@@ -31,13 +30,10 @@ GetFileModifyTime(LPCWSTR pFullPath, WCHAR * szTime, int szTimeSize)
|
||||
}
|
||||
CloseHandle(hFile);
|
||||
|
||||
if(!GetTimeZoneInformation(&TimeInfo))
|
||||
return FALSE;
|
||||
|
||||
if (!FileTimeToSystemTime(&AccessTime, &SysTime))
|
||||
return FALSE;
|
||||
|
||||
if (!SystemTimeToTzSpecificLocalTime(&TimeInfo, &SysTime, &LocalTime))
|
||||
if (!SystemTimeToTzSpecificLocalTime(NULL, &SysTime, &LocalTime))
|
||||
return FALSE;
|
||||
|
||||
Length = GetDateFormatW(LOCALE_USER_DEFAULT, DATE_SHORTDATE, &LocalTime, NULL, szTime, szTimeSize);
|
||||
|
@@ -1,7 +1,9 @@
|
||||
/*
|
||||
* FILE: base/applications/dxdiag/lang/ro-RO.rc
|
||||
* ReactOS Project (https://reactos.org)
|
||||
* TRANSLATOR: Ștefan Fulea (stefan dot fulea at mail dot com)
|
||||
* PROJECT: ReactOS DX Diagnostic
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: Romanian resource file
|
||||
* TRANSLATORS: Copyright 2011-2019 Ștefan Fulea <stefan.fulea@mail.com>
|
||||
* Copyright 2023 Andrei Miloiu <miloiuandrei@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
|
||||
@@ -15,7 +17,7 @@ BEGIN
|
||||
CONTROL "Tab1", IDC_TAB_CONTROL, "SysTabControl32", WS_TABSTOP, 2, 2, 474, 250
|
||||
PUSHBUTTON "&Manual…", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
DEFPUSHBUTTON "&Următorul compartiment", IDC_BUTTON_NEXT, 187, 260, 120, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Păstrare informații…", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
PUSHBUTTON "S&alvare informații…", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
PUSHBUTTON "Î&nchide", IDC_BUTTON_EXIT, 425, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
END
|
||||
|
||||
@@ -23,7 +25,7 @@ IDD_SYSTEM_DIALOG DIALOGEX 0, 0, 462, 220
|
||||
STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Acest instrument oferă informații detaliate despre componentele ReactX și modulele-pilot instalate în sistem.", IDC_STATIC, 5, 0, 443, 17
|
||||
LTEXT "Acest instrument oferă informații detaliate despre componentele ReactX și drivere instalate în sistem.", IDC_STATIC, 5, 0, 443, 17
|
||||
LTEXT "Dacă aveți la cunoștință careva probleme la o anumită categorie, mergeți la compartimentul corespunzător de mai sus. Altfel, puteți utiliza butonul „Următorul compartiment” de mai jos pentru a trece secvențial prin fiecare categorie.", IDC_STATIC, 5, 15, 443, 25
|
||||
GROUPBOX "Informații despre sistem", IDC_STATIC, 5, 35, 452, 150, SS_RIGHT
|
||||
LTEXT "Data/Ora curentă:", IDC_STATIC, 70, 50, 80, 10, SS_RIGHT
|
||||
@@ -70,8 +72,8 @@ BEGIN
|
||||
EDITTEXT IDC_STATIC_ADAPTER_MEM, 95, 50, 150, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL
|
||||
EDITTEXT IDC_STATIC_ADAPTER_MODE, 95, 60, 150, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL
|
||||
EDITTEXT IDC_STATIC_ADAPTER_MONITOR, 95, 70, 150, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL
|
||||
GROUPBOX "Modúl-pilot", IDC_STATIC, 260, 0, 197, 95
|
||||
RTEXT "Modulul-pilot primar:", IDC_STATIC, 275, 10, 55, 10
|
||||
GROUPBOX "Driver", IDC_STATIC, 260, 0, 197, 95
|
||||
RTEXT "Driver primar:", IDC_STATIC, 275, 10, 55, 10
|
||||
RTEXT "Versiune:", IDC_STATIC, 275, 20, 55, 10
|
||||
RTEXT "Dată:", IDC_STATIC, 275, 30, 55, 10
|
||||
RTEXT "Semnăt. WHQL:", IDC_STATIC, 275, 40, 55, 10
|
||||
@@ -118,7 +120,7 @@ BEGIN
|
||||
EDITTEXT IDC_STATIC_DSOUND_PRODUCTID, 95, 40, 150, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL
|
||||
EDITTEXT IDC_STATIC_DSOUND_TYPE, 95, 50, 150, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL
|
||||
EDITTEXT IDC_STATIC_DSOUND_STANDARD, 95, 60, 150, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL
|
||||
GROUPBOX "Modúl-pilot", IDC_STATIC, 260, 0, 197, 95
|
||||
GROUPBOX "Driver", IDC_STATIC, 260, 0, 197, 95
|
||||
RTEXT "Nume:", IDC_STATIC, 275, 10, 55, 10
|
||||
RTEXT "Versiune:", IDC_STATIC, 275, 20, 55, 10
|
||||
RTEXT "Dată:", IDC_STATIC, 275, 30, 55, 10
|
||||
@@ -218,7 +220,7 @@ BEGIN
|
||||
IDS_DEVICE_CONTROLLER "ID controlor"
|
||||
IDS_DEVICE_MANUFACTURER "ID producător"
|
||||
IDS_DEVICE_PRODUCT "ID produs"
|
||||
IDS_DEVICE_FORCEFEEDBACK "Forțează reacția modulului-pilot"
|
||||
IDS_DEVICE_FORCEFEEDBACK "Forțează reacția driverului"
|
||||
IDS_NOT_APPLICABLE "n/a"
|
||||
IDS_OPTION_YES "Da"
|
||||
IDS_DIRECTPLAY_COL_NAME1 "Nume"
|
||||
|
@@ -1,17 +1,23 @@
|
||||
/* Translator: Ștefan Fulea (stefan dot fulea at mail dot com) */
|
||||
/*
|
||||
* PROJECT: ReactOS fltmc utility
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: Romanian resource file
|
||||
* TRANSLATORS: Copyright 2011-2019 Ștefan Fulea <stefan.fulea@mail.com>
|
||||
* Copyright 2023-2024 Andrei Miloiu <miloiuandrei@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_USAGE "\nComenzi valide:\n\
|
||||
load Încarcă un modul-pilot de tip filtru\n\
|
||||
unload Descarcă un modul-pilot de tip filtru\n\
|
||||
load Încarcă un driver de tip filtru\n\
|
||||
unload Descarcă un driver de tip filtru\n\
|
||||
filters Afișează filtrele înregistrate acum în sistem\n\n\
|
||||
volumes Afișează toate volumele\n\n"
|
||||
|
||||
IDS_USAGE_LOAD "Încarcă un modul-pilot de tip filtru\n"
|
||||
IDS_USAGE_UNLOAD "Descarcă un modul-pilot de tip filtru\n"
|
||||
IDS_USAGE_LOAD "Încarcă un driver de tip filtru\n"
|
||||
IDS_USAGE_UNLOAD "Descarcă un driver de tip filtru\n"
|
||||
IDS_USAGE_FILTERS "Afișează toate filtrele înregistrate\n"
|
||||
IDS_USAGE_VOLUMES "Afișează toate volumele\n"
|
||||
END
|
||||
@@ -25,9 +31,9 @@ END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_ERROR_PRIV "Eșec la instituirea dreptului de încărcare pentru modulul-pilot (0x%X)\n"
|
||||
IDS_ERROR_FILTERS "Eșec la afișarea filtrelor (0x%X)\n"
|
||||
IDS_ERROR_LOAD "Eșec la încărcarea filtrului (0x%X)\n"
|
||||
IDS_ERROR_UNLOAD "Eșec la descărcarea filtrului (0x%X)\n"
|
||||
IDS_ERROR_VOLUMES "Eșec la afișarea volumelor (0x%X)\n"
|
||||
IDS_ERROR_PRIV "Nu s-a putut seta dreptul de încărcare pentru driverul (0x%X)\n"
|
||||
IDS_ERROR_FILTERS "Nu s-au putut afișa filtrele (0x%X)\n"
|
||||
IDS_ERROR_LOAD "Nu s-a putut încărca filtrul (0x%X)\n"
|
||||
IDS_ERROR_UNLOAD "Nu s-a putut descărca filtrul (0x%X)\n"
|
||||
IDS_ERROR_VOLUMES "Nu s-au putut afișa volumele (0x%X)\n"
|
||||
END
|
||||
|
@@ -11,7 +11,7 @@ BEGIN
|
||||
IDS_USAGE_LOAD "Загружает драйвер фильтра\n"
|
||||
IDS_USAGE_UNLOAD "Выгружает драйвер фильтра\n"
|
||||
IDS_USAGE_FILTERS "Выводит список всех зарегистрированных фильтров\n"
|
||||
IDS_USAGE_VOLUMES "Lists all volumes\n"
|
||||
IDS_USAGE_VOLUMES "Выводит список всех томов\n"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
@@ -27,5 +27,5 @@ BEGIN
|
||||
IDS_ERROR_FILTERS "Не удалось получить список фильтров (0x%X)\n"
|
||||
IDS_ERROR_LOAD "Не удалось загрузить фильтр (0x%X)\n"
|
||||
IDS_ERROR_UNLOAD "Не удалось выгрузить фильтр (0x%X)\n"
|
||||
IDS_ERROR_VOLUMES "Failed to list the volumes (0x%X)\n"
|
||||
IDS_ERROR_VOLUMES "Не удалось получить список томов (0x%X)\n"
|
||||
END
|
||||
|
@@ -18,11 +18,11 @@ BEGIN
|
||||
IDS_ERROR "Eroare"
|
||||
IDS_ERROR_NOMEM "Nu e destulă memorie pentru a încheia operația."
|
||||
IDS_ERROR_NOFONT "Fișierul «%1» este un fișier font deteriorat."
|
||||
IDS_ERROR_NOCLASS "Clasa de ferestre nu a putut fi inițializată."
|
||||
IDS_ERROR_NOCLASS "Nu s-a putut inițializa clasa de ferestre."
|
||||
IDS_ERROR_ISINSTALLED "Acest font este deja instalat!"
|
||||
IDS_ERROR_FONTCPY "Nu a putut fi copiat acest fișier de font!"
|
||||
IDS_ERROR_OPENKEY "Nu a putut fi deschisă această cheie de regiștrii a fonturilor!"
|
||||
IDS_ERROR_REGISTER "Nu a putut fi înregistrat noul font!"
|
||||
IDS_ERROR_FONTCPY "Nu s-a putut copia acest fișier de font!"
|
||||
IDS_ERROR_OPENKEY "Nu s-a putut deschide această cheie de regiștrii a fonturilor!"
|
||||
IDS_ERROR_REGISTER "Nu s-a putut înregistra noul font!"
|
||||
IDS_SUCCESS "Succes"
|
||||
IDS_COMPLETED "Instalarea fontului completă."
|
||||
IDS_FILTER_LIST "Toate fonturile recunoscute (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
|
@@ -5,6 +5,7 @@
|
||||
* TRANSLATORS: Copyright 2009 Elton Chung aka MfldElton <elton328@gmail.com>
|
||||
* Copyright 2017 Li Keqing <auroracloud4096@gmail.com>
|
||||
* Copyright 2018-2022 Luke Luo <njlyf2011@hotmail.com>
|
||||
* Copyright 2024 Ratin Gao <ratin@knsoft.org>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
|
||||
@@ -19,12 +20,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "没有足够的内存来完成操作。"
|
||||
IDS_ERROR_NOFONT "%1不是一个有效的字体文件。"
|
||||
IDS_ERROR_NOCLASS "无法初始化窗口。"
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts registry key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_ERROR_ISINSTALLED "此字体已安装!"
|
||||
IDS_ERROR_FONTCPY "复制字体文件失败!"
|
||||
IDS_ERROR_OPENKEY "无法访问字体注册表项!"
|
||||
IDS_ERROR_REGISTER "注册新字体失败!"
|
||||
IDS_SUCCESS "成功"
|
||||
IDS_COMPLETED "字体安装完成。"
|
||||
IDS_FILTER_LIST "所有支持的字体 (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
字体文件 (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType 字体 (*.ttf)\0*.ttf\0\
|
||||
|
@@ -10,6 +10,6 @@ add_rc_deps(rsrc.rc ${CMAKE_CURRENT_SOURCE_DIR}/solitaire.ico)
|
||||
add_executable(sol ${SOURCE} rsrc.rc)
|
||||
target_link_libraries(sol cardlib)
|
||||
set_module_type(sol win32gui UNICODE)
|
||||
add_importlibs(sol advapi32 comctl32 user32 gdi32 msvcrt kernel32)
|
||||
add_importlibs(sol advapi32 comctl32 shell32 user32 gdi32 msvcrt kernel32)
|
||||
add_pch(sol solitaire.h SOURCE)
|
||||
add_cd_file(TARGET sol DESTINATION reactos/system32 FOR all)
|
||||
|
@@ -55,7 +55,7 @@ END
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_SOL_NAME "Пасианс"
|
||||
IDS_SOL_ABOUT "Solitaire by J Brown\n\nCardLib version 1.0."
|
||||
IDS_SOL_ABOUT "Solitaire by J Brown\nCardLib version 1.0"
|
||||
IDS_SOL_QUIT "Да прекратя ли играта?"
|
||||
IDS_SOL_WIN "Поздравления, победихте!!"
|
||||
IDS_SOL_DEAL "Ново раздаване?"
|
||||
|
@@ -55,7 +55,7 @@ END
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_SOL_NAME "Solitari"
|
||||
IDS_SOL_ABOUT "Solitari per J Brown\n\nCardLib versio 1.0."
|
||||
IDS_SOL_ABOUT "Solitari per J Brown\nCardLib versio 1.0"
|
||||
IDS_SOL_QUIT "Voleu sortir del joc actual?"
|
||||
IDS_SOL_WIN "Felicitats, heu guanyat!!"
|
||||
IDS_SOL_DEAL "Deal again?"
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user