root/windows/neo-vars/src/source/tools.ahk @ 1657

Revision 1657, 19.7 KB (checked in by mösi, 4 years ago)

unnötigen TrayTip entfernt

Line 
1; ���
2
3; R�mische Zahlen
4
5CMSCompU0072 := 1
6CMSCompU0052 := 1
7CDSCompU0072U0072 := "PRom1"
8CDSCompU0072U0031 := "PRom1"
9CDSCompU0052U0031 := "PRom1"
10CDSCompU0072U0052 := "PRom2"
11CDSCompU0072U0032 := "PRom2"
12CDSCompU0052U0032 := "PRom2"
13CDSCompU0052U0072 := "PRom3"
14CDSCompU0072U0033 := "PRom3"
15CDSCompU0052U0033 := "PRom3"
16CDSCompU0052U0052 := "PRom4"
17CDSCompU0072U0034 := "PRom4"
18CDSCompU0052U0034 := "PRom4"
19
20CharProcRom1() {
21  global
22  ; starte gro� geschriebene r�mische Zahlen, verwende U2160++
23  PressHookProc := "Roman"
24  RomanMode := 1
25  RomanSum := 0
26}
27
28CharProcRom2() {
29  global
30  ; starte klein geschriebene r�mische Zahlen, verwende U2160++
31  PressHookProc := "Roman"
32  RomanMode := 2
33  RomanSum := 0
34}
35
36CharProcRom3() {
37  global
38  ; starte gro� geschriebene r�mische Zahlen, verwende Buchstaben
39  PressHookProc := "Roman"
40  RomanMode := 3
41  RomanSum := 0
42}
43
44CharProcRom4() {
45  global
46  ; starte klein geschriebene r�mische Zahlen, verwende Buchstaben
47  PressHookProc := "Roman"
48  RomanMode := 4
49  RomanSum := 0
50}
51
52GenRomanDigit(Pos, DigitIs, DigitTest, str0, str1, str2, str3, str4, str5) {
53  res := ""
54  if (DigitIs == DigitTest)
55    res := str%Pos%
56  return res
57}
58
59PressHookRoman(PhysKey, ActKey, Char) {
60  global
61  if (SubStr(Char,1,1) == "P")
62    CharStarDown(PhysKey, ActKey, Char)
63  else if ((Char == "U0030") or (Char == "SN__0"))
64    RomanSum := 10*RomanSum
65  else if ((Char == "U0031") or (Char == "SN__1"))
66    RomanSum := 10*RomanSum + 1
67  else if ((Char == "U0032") or (Char == "SN__2"))
68    RomanSum := 10*RomanSum + 2
69  else if ((Char == "U0033") or (Char == "SN__3"))
70    RomanSum := 10*RomanSum + 3
71  else if ((Char == "U0034") or (Char == "SN__4"))
72    RomanSum := 10*RomanSum + 4
73  else if ((Char == "U0035") or (Char == "SN__5"))
74    RomanSum := 10*RomanSum + 5
75  else if ((Char == "U0036") or (Char == "SN__6"))
76    RomanSum := 10*RomanSum + 6
77  else if ((Char == "U0037") or (Char == "SN__7"))
78    RomanSum := 10*RomanSum + 7
79  else if ((Char == "U0038") or (Char == "SN__8"))
80    RomanSum := 10*RomanSum + 8
81  else if ((Char == "U0039") or (Char == "SN__9"))
82    RomanSum := 10*RomanSum + 9
83  else if ((Char == "U000D") or (Char == "U0020")) {
84    RomanSum := mod(RomanSum,400000)
85    RomanStr := ""
86    RomanPos := 0
87    if (RomanMode == 1)
88      loop {
89        RomanDigit := mod(RomanSum,10)
90        RomanSum := RomanSum//10
91        RomanStr := GenRomanDigit(RomanPos,RomanDigit,1,"U2170","U2179","U217D","U217F","U2182","U2188") . RomanStr
92        RomanStr := GenRomanDigit(RomanPos,RomanDigit,2,"U2170U2170","U2179U2179","U217DU217D","U217FU217F","U2182U2182","U2188U2188") . RomanStr
93        RomanStr := GenRomanDigit(RomanPos,RomanDigit,3,"U2170U2170U2170","U2179U2179U2179","U217DU217DU217D","U217FU217FU217F","U2182U2182U2182","U2188U2188U2188") . RomanStr
94        RomanStr := GenRomanDigit(RomanPos,RomanDigit,4,"U2170U2174","U2179U217C","U217DU217E","U2180U2181","U2182U2187","") . RomanStr
95        RomanStr := GenRomanDigit(RomanPos,RomanDigit,5,"U2174","U217C","U217E","U2181","U2187","") . RomanStr
96        RomanStr := GenRomanDigit(RomanPos,RomanDigit,6,"U2174U2170","U217CU2179","U217EU217D","U2181U2180","U2187U2182","") . RomanStr
97        RomanStr := GenRomanDigit(RomanPos,RomanDigit,7,"U2174U2170U2170","U217CU2179U2179","U217EU217DU217D","U2181U2180U2180","U2187U2182U2182","") . RomanStr
98        RomanStr := GenRomanDigit(RomanPos,RomanDigit,8,"U2174U2170U2170U2170","U217CU2179U2179U2179","U217EU217DU217DU217D","U2181U2180U2180U2180","U2187U2182U2182U2182","") . RomanStr
99        RomanStr := GenRomanDigit(RomanPos,RomanDigit,9,"U2178","U2179U217D","U217DU217F","U2180U2182","U2182U2188","") . RomanStr
100        if (RomanSum == 0)
101          break
102        RomanPos := RomanPos + 1
103      }
104    else if (RomanMode == 2)
105      loop {
106        RomanDigit := mod(RomanSum,10)
107        RomanSum := RomanSum//10
108        RomanStr := GenRomanDigit(RomanPos,RomanDigit,1,"U2160","U2169","U216D","U216F","U2182","U2188") . RomanStr
109        RomanStr := GenRomanDigit(RomanPos,RomanDigit,2,"U2160U2160","U2169U2169","U216DU216D","U216FU216F","U2182U2182","U2188U2188") . RomanStr
110        RomanStr := GenRomanDigit(RomanPos,RomanDigit,3,"U2160U2160U2160","U2169U2169U2169","U216DU216DU216D","U216FU216FU216F","U2182U2182U2182","U2188U2188U2188") . RomanStr
111        RomanStr := GenRomanDigit(RomanPos,RomanDigit,4,"U2160U2164","U2169U216C","U216DU216E","U2180U2181","U2182U2187","") . RomanStr
112        RomanStr := GenRomanDigit(RomanPos,RomanDigit,5,"U2164","U216C","U216E","U2181","U2187","") . RomanStr
113        RomanStr := GenRomanDigit(RomanPos,RomanDigit,6,"U2164U2160","U216CU2169","U216EU216D","U2181U2180","U2187U2182","") . RomanStr
114        RomanStr := GenRomanDigit(RomanPos,RomanDigit,7,"U2164U2160U2160","U216CU2169U2169","U216EU216DU216D","U2181U2180U2180","U2187U2182U2182","") . RomanStr
115        RomanStr := GenRomanDigit(RomanPos,RomanDigit,8,"U2164U2160U2160U2160","U216CU2169U2169U2169","U216EU216DU216DU216D","U2181U2180U2180U2180","U2187U2182U2182U2182","") . RomanStr
116        RomanStr := GenRomanDigit(RomanPos,RomanDigit,9,"U2160U2169","U2169U216D","U216DU216F","U2180U2182","U2182U2188","") . RomanStr
117        if (RomanSum == 0)
118          break
119        RomanPos := RomanPos + 1
120      }
121    else if (RomanMode == 3)
122      loop {
123        RomanDigit := mod(RomanSum,10)
124        RomanSum := RomanSum//10
125        RomanStr := GenRomanDigit(RomanPos,RomanDigit,1,"U0069","U0078","U0063","U006D","","") . RomanStr
126        RomanStr := GenRomanDigit(RomanPos,RomanDigit,2,"U0069U0069","U0078U0078","U0063U0063","U006DU006D","","") . RomanStr
127        RomanStr := GenRomanDigit(RomanPos,RomanDigit,3,"U0069U0069U0069","U0078U0078U0078","U0063U0063U0063","U006DU006DU006D","","") . RomanStr
128        RomanStr := GenRomanDigit(RomanPos,RomanDigit,4,"U0069U0076","U0078U006C","U0063U0064","","","") . RomanStr
129        RomanStr := GenRomanDigit(RomanPos,RomanDigit,5,"U0076","U006C","U0064","","","") . RomanStr
130        RomanStr := GenRomanDigit(RomanPos,RomanDigit,6,"U0076U0069","U006CU0078","U0064U0063","","","") . RomanStr
131        RomanStr := GenRomanDigit(RomanPos,RomanDigit,7,"U0076U0069U0069","U006CU0078U0078","U0064U0063U0063","","","") . RomanStr
132        RomanStr := GenRomanDigit(RomanPos,RomanDigit,8,"U0076U0069U0069U0069","U006CU0078U0078U0078","U0064U0063U0063U0063","","","") . RomanStr
133        RomanStr := GenRomanDigit(RomanPos,RomanDigit,9,"U0069U0078","U0078U0063","U0063U006D","","","") . RomanStr
134        if (RomanSum == 0)
135          break
136        RomanPos := RomanPos + 1
137      }
138    else if (RomanMode == 4)
139      loop {
140        RomanDigit := mod(RomanSum,10)
141        RomanSum := RomanSum//10
142        RomanStr := GenRomanDigit(RomanPos,RomanDigit,1,"U0049","U0058","U0043","U004D","","") . RomanStr
143        RomanStr := GenRomanDigit(RomanPos,RomanDigit,2,"U0049U0049","U0058U0058","U0043U0043","U004DU004D","","") . RomanStr
144        RomanStr := GenRomanDigit(RomanPos,RomanDigit,3,"U0049U0049U0049","U0058U0058U0058","U0043U0043U0043","U004DU004DU004D","","") . RomanStr
145        RomanStr := GenRomanDigit(RomanPos,RomanDigit,4,"U0049U0056","U0058U004C","U0043U0044","","","") . RomanStr
146        RomanStr := GenRomanDigit(RomanPos,RomanDigit,5,"U0056","U004C","U0044","","","") . RomanStr
147        RomanStr := GenRomanDigit(RomanPos,RomanDigit,6,"U0056U0049","U004CU0058","U0044U0043","","","") . RomanStr
148        RomanStr := GenRomanDigit(RomanPos,RomanDigit,7,"U0056U0049U0049","U004CU0058U0058","U0044U0043U0043","","","") . RomanStr
149        RomanStr := GenRomanDigit(RomanPos,RomanDigit,8,"U0056U0049U0049U0049","U004CU0058U0058U0058","U0044U0043U0043U0043","","","") . RomanStr
150        RomanStr := GenRomanDigit(RomanPos,RomanDigit,9,"U0049U0058","U0058U0043","U0043U004D","","","") . RomanStr
151        if (RomanSum == 0)
152          break
153        RomanPos := RomanPos + 1
154      }
155    loop {
156      if (RomanStr == "")
157        break ; erledigt
158      CharOut(SubStr(RomanStr,1,5))
159      RomanStr := SubStr(RomanStr,6)
160    }
161    PressHookProc := ""
162  } else
163    PressHookProc := ""
164}
165
166CMSCompU0075 := 1
167CMSCompU0055 := 1
168CDSCompU0075U0075 := "P_Uni"
169CDSCompU0075U0055 := "P_Uni"
170CDSCompU0055U0075 := "P_Uni"
171CDSCompU0055U0055 := "P_Uni"
172CMSCompU0064 := 1
173CMSCompU0044 := 1
174CDSCompU0064U0064 := "PDUni"
175CDSCompU0064U0044 := "PDUni"
176CDSCompU0044U0064 := "PDUni"
177CDSCompU0044U0044 := "PDUni"
178
179CP5VK41SC01E := "P_Uni"
180
181CharProc_Uni() {
182  global
183  ; starte Unicode-Hex-in-Zeichen-Umwandlung
184  PressHookProc := "Uni"
185  UniSum := ""
186}
187
188CharProcDUni() {
189  global
190  ; starte Unicode-Zeichen-in-Hex-Umwandlung
191  CharOutFilterProc := "DUni"
192}
193
194PressHookUni(PhysKey, ActKey, Char) {
195  global
196  if (SubStr(Char,1,1) == "P")
197    CharStarDown(PhysKey, ActKey, Char)
198  else if ((Char == "U0030") or (Char == "SN__0"))
199    UniSum := UniSum . "0"
200  else if ((Char == "U0031") or (Char == "SN__1"))
201    UniSum := UniSum . "1"
202  else if ((Char == "U0032") or (Char == "SN__2"))
203    UniSum := UniSum . "2"
204  else if ((Char == "U0033") or (Char == "SN__3"))
205    UniSum := UniSum . "3"
206  else if ((Char == "U0034") or (Char == "SN__4"))
207    UniSum := UniSum . "4"
208  else if ((Char == "U0035") or (Char == "SN__5"))
209    UniSum := UniSum . "5"
210  else if ((Char == "U0036") or (Char == "SN__6"))
211    UniSum := UniSum . "6"
212  else if ((Char == "U0037") or (Char == "SN__7"))
213    UniSum := UniSum . "7"
214  else if ((Char == "U0038") or (Char == "SN__8"))
215    UniSum := UniSum . "8"
216  else if ((Char == "U0039") or (Char == "SN__9"))
217    UniSum := UniSum . "9"
218  else if ((Char == "U0041") or (Char == "U0061"))
219    UniSum := UniSum . "A"
220  else if ((Char == "U0042") or (Char == "U0062"))
221    UniSum := UniSum . "B"
222  else if ((Char == "U0043") or (Char == "U0063"))
223    UniSum := UniSum . "C"
224  else if ((Char == "U0044") or (Char == "U0064"))
225    UniSum := UniSum . "D"
226  else if ((Char == "U0045") or (Char == "U0065"))
227    UniSum := UniSum . "E"
228  else if ((Char == "U0046") or (Char == "U0066"))
229    UniSum := UniSum . "F"
230  else if ((Char == "U000D") or (Char == "U0020")) {
231    UniSum := "U" . SubStr("0000" . UniSum, -3)
232    PP%PhysKey% := UniSum
233    PR%PhysKey% := UniSum
234    CharOutDown(UniSum)
235    PressHookProc := ""
236  } else
237    PressHookProc := ""
238}
239
240CharOutFilterDUni(char,down,up) {
241  global
242  if (!down or char == "SL_M2" or char == "SR_M2")
243    return char
244  CharOutFilterProc := ""
245  TrayTip,Unicode-Zeichen,%char%,10,1
246  return char
247}
248
249EncodeUni(str) {
250SetFormat, Integer, hex
251;  MsgBox % Asc(SubStr(str,1,1)) . Asc(SubStr(str,2,1))
252  result := ""
253  loop {
254    char := SubStr(str,1,1)
255    str  := SubStr(str,2)
256    if (asc(char) < 0x80)
257      result := result . "U00" . SubStr(asc(char),3)
258    else if (asc(char) < 0xC0) {
259      ; error
260    } else if (asc(char) < 0xE0) {
261       char2 := Substr(str,1,1)
262       str   := SubStr(str,2)
263       if ((asc(char2) < 0x80) or (asc(char2) > 0xBF)) {
264         ; error
265       } else {
266         result := result . "U" . SubStr("0000" . SubStr((((asc(char) & 0x1F) << 6) + (asc(char2) & 0x3F)),3),-3)
267       }
268    } else if (asc(char) < 0xF8) {
269       char2 := SubStr(str,1,1)
270       char3 := SubStr(str,2,1)
271       str   := SubStr(str,3)
272;       MsgBox % "chars: " . char . ", " . char2 . ", " . char3 . ", str: " . str
273       if ((asc(char2) < 0x80) or (asc(char2) > 0xBF)
274           or (asc(char3) < 0x80) or (asc(char3) > 0xBF)) {
275         ; error
276       } else {
277;         MsgBox % asc(char) . asc(char2) . asc(char3)
278;         MsgBox % (((asc(char) & 0x0F) << 12) + ((asc(char2) & 0x3F) << 6) + (asc(char3) & 0x3F))
279         result := result . "U" . SubStr("0000" . SubStr((((asc(char) & 0x0F) << 12) + ((asc(char2) & 0x3F) << 6) + (asc(char3) & 0x3F)),3),-3)
280       }
281    }
282    if (str == "")
283      break
284  }
285  SetFormat, Integer, d
286  StringUpper,result,result
287  return result
288}
289
290
291; Simple calculator
292
293CDSCompU0075U0063 := "PCal1"
294CDSCompU0055U0043 := "PCal2"
295
296CharProcCal1() {
297  global
298  ; starte Calculator ohne Echo
299  PressHookProc := "Calc"
300  CalcEcho := 0
301  CalcVar1 := ""
302  CalcVar2 := ""
303  CalcOp := ""
304  CalcPhase := 0
305  CalcHexOut := 0
306}
307
308CharProcCal2() {
309  global
310  ; starte Calculator mit Echo
311  PressHookProc := "Calc"
312  CalcEcho := 1
313  CalcVar1 := ""
314  CalcVar2 := ""
315  CalcOp := ""
316  CalcPhase := 0
317  CalcHexOut := 0
318}
319
320PressHookCalc(PhysKey, ActKey, Char) {
321  global
322  if (SubStr(Char,1,1) == "P")
323    CharStarDown(PhysKey, ActKey, Char)
324  else if (CalcPhase == 0) {
325    if      ((Char == "U0030") or (Char == "SN__0"))
326      CalcVar1 := CalcVar1 . "0"
327    else if ((Char == "U0031") or (Char == "SN__1"))
328      CalcVar1 := CalcVar1 . "1"
329    else if ((Char == "U0032") or (Char == "SN__2"))
330      CalcVar1 := CalcVar1 . "2"
331    else if ((Char == "U0033") or (Char == "SN__3"))
332      CalcVar1 := CalcVar1 . "3"
333    else if ((Char == "U0034") or (Char == "SN__4"))
334      CalcVar1 := CalcVar1 . "4"
335    else if ((Char == "U0035") or (Char == "SN__5"))
336      CalcVar1 := CalcVar1 . "5"
337    else if ((Char == "U0036") or (Char == "SN__6"))
338      CalcVar1 := CalcVar1 . "6"
339    else if ((Char == "U0037") or (Char == "SN__7"))
340      CalcVar1 := CalcVar1 . "7"
341    else if ((Char == "U0038") or (Char == "SN__8"))
342      CalcVar1 := CalcVar1 . "8"
343    else if ((Char == "U0039") or (Char == "SN__9"))
344      CalcVar1 := CalcVar1 . "9"
345    else if ((Char == "U0039") or (Char == "SN__9"))
346      CalcVar1 := CalcVar1 . "9"
347    else if ((Char == "U0041") or (Char == "U0061"))
348      CalcVar1 := CalcVar1 . "A"
349    else if ((Char == "U0042") or (Char == "U0062"))
350      CalcVar1 := CalcVar1 . "B"
351    else if ((Char == "U0043") or (Char == "U0063"))
352      CalcVar1 := CalcVar1 . "C"
353    else if ((Char == "U0044") or (Char == "U0064"))
354      CalcVar1 := CalcVar1 . "D"
355    else if ((Char == "U0045") or (Char == "U0065"))
356      CalcVar1 := CalcVar1 . "E"
357    else if ((Char == "U0046") or (Char == "U0066"))
358      CalcVar1 := CalcVar1 . "F"
359    else if ((Char == "U002E") or (Char == "U002C") or (Char=="SNDot"))
360      CalcVar1 := CalcVar1 . "."
361    else if ((Char == "U0078") or (Char == "U0058")) {
362      CalcVar1 := CalcVar1 . "x"
363      CalcHexOut := 1
364    } else if ((Char == "U002B") or (Char == "SNAdd")) {
365      CalcOp := "+"
366      CalcPhase := 1
367    } else if ((Char == "U002D") or (Char == "SNSub")) {
368      CalcOp := "-"
369      CalcPhase := 1
370    } else if ((Char == "U002A") or (Char == "SNMul")) {
371      CalcOp := "*"
372      CalcPhase := 1
373    } else if ((Char == "U002F") or (Char == "SNDiv")) {
374      CalcOp := "/"
375      CalcPhase := 1
376    } else if (Char == "U0026") {
377      CalcOp := "&"
378      CalcPhase := 1
379    } else if (Char == "U007C") {
380      CalcOp := "|"
381      CalcPhase := 1
382    } else
383      PressHookProc := ""
384    if (CalcEcho) {
385      PP%PhysKey% := Char
386      PR%PhysKey% := Char
387      CharOutDown(Char)
388    }
389  } else if (CalcPhase == 1) {
390    if      ((Char == "U0030") or (Char == "SN__0"))
391      CalcVar2 := CalcVar2 . "0"
392    else if ((Char == "U0031") or (Char == "SN__1"))
393      CalcVar2 := CalcVar2 . "1"
394    else if ((Char == "U0032") or (Char == "SN__2"))
395      CalcVar2 := CalcVar2 . "2"
396    else if ((Char == "U0033") or (Char == "SN__3"))
397      CalcVar2 := CalcVar2 . "3"
398    else if ((Char == "U0034") or (Char == "SN__4"))
399      CalcVar2 := CalcVar2 . "4"
400    else if ((Char == "U0035") or (Char == "SN__5"))
401      CalcVar2 := CalcVar2 . "5"
402    else if ((Char == "U0036") or (Char == "SN__6"))
403      CalcVar2 := CalcVar2 . "6"
404    else if ((Char == "U0037") or (Char == "SN__7"))
405      CalcVar2 := CalcVar2 . "7"
406    else if ((Char == "U0038") or (Char == "SN__8"))
407      CalcVar2 := CalcVar2 . "8"
408    else if ((Char == "U0039") or (Char == "SN__9"))
409      CalcVar2 := CalcVar2 . "9"
410    else if ((Char == "U0041") or (Char == "U0061"))
411      CalcVar2 := CalcVar2 . "A"
412    else if ((Char == "U0042") or (Char == "U0062"))
413      CalcVar2 := CalcVar2 . "B"
414    else if ((Char == "U0043") or (Char == "U0063"))
415      CalcVar2 := CalcVar2 . "C"
416    else if ((Char == "U0044") or (Char == "U0064"))
417      CalcVar2 := CalcVar2 . "D"
418    else if ((Char == "U0045") or (Char == "U0065"))
419      CalcVar2 := CalcVar2 . "E"
420    else if ((Char == "U0046") or (Char == "U0066"))
421      CalcVar2 := CalcVar2 . "F"
422    else if ((Char == "U002E") or (Char == "U002C") or (Char=="SNDot"))
423      CalcVar2 := CalcVar2 . "."
424    else if ((Char == "U0078") or (Char == "U0058")) {
425      CalcVar2 := CalcVar2 . "x"
426      CalcHexOut := 1
427    } else if ((Char == "U000D") or (Char == "SNEnt") or (Char=="U0020") or (Char=="U003D")) {
428      if      (CalcOp == "+")
429        CalcResult := CalcVar1 + CalcVar2
430      else if (CalcOp == "-")
431        CalcResult := CalcVar1 - CalcVar2
432      else if (CalcOp == "*")
433        CalcResult := CalcVar1 * CalcVar2
434      else if (CalcOp == "/")
435        CalcResult := CalcVar1 / CalcVar2
436      else if (CalcOp == "&")
437        CalcResult := CalcVar1 & CalcVar2
438      else if (CalcOp == "|")
439        CalcResult := CalcVar1 | CalcVar2
440      else
441        CalcResult := "Invalid"
442      if (CalcHexOut and (CalcResult != "")) {
443        SetFormat,Integer,h
444        CalcResult := CalcResult + 0
445        SetFormat,Integer,d
446      }
447      tosend := EncodeUni(CalcResult)
448      if (CalcEcho) {
449        Char := "U003D"
450        PP%PhysKey% := Char
451        PR%PhysKey% := Char
452        CharOutDown(Char)
453      }
454      loop {
455        if (SubStr(tosend,1,1)=="P") {
456          SubProc := SubStr(tosend,2,4)
457          CharProc%SubProc%()
458        } else {
459          CharOut(SubStr(tosend,1,5))
460        }
461        tosend := SubStr(tosend,6)
462        if (tosend == "")
463          break                ; erledigt
464      }
465      PressHookProc := ""
466      return ; vermeide, bei CharEcho das aktuelle Zeichen nach dem Ergebnis noch einmal auszugeben
467    } else
468      PressHookProc := ""
469    if (CalcEcho) {
470      PP%PhysKey% := Char
471      PR%PhysKey% := Char
472      CharOutDown(Char)
473    }
474  } else {
475    PressHookProc := ""
476    if (CalcEcho) {
477      PP%PhysKey% := Char
478      PR%PhysKey% := Char
479      CharOutDown(Char)
480    }
481  }
482}
483
484CDSCompU0055U0057 := "P_WMN"
485CDSCompU0075U0077 := "P_WMN"
486
487CharProc_WMN() {
488  global
489  ok := DllCall("OpenClipboard")
490  if (!ok) {
491    TrayTip,Wie mit NEO,Fehler in OpenClipboard,10,1
492    return
493  }
494  uclph:=DllCall("GetClipboardData","uint",CF_UNICODETEXT:=13)
495  if (uclph == 0) {
496    DllCall("CloseClipboard")
497    TrayTip,Wie mit NEO,Fehler in GetClipboardData,10,1
498    return
499  }
500  uclp := DllCall("GlobalLock","uint",uclph)
501  if (uclp == 0) {
502    DllCall("CloseClipboard")
503    TrayTip,Wie mit NEO,Fehler in GlobalLock,10,1
504    return
505  }
506  a := *(uclp+0)
507  b := *(uclp+1)
508
509  DllCall("GlobalUnlock","uint",uclph)
510  DllCall("CloseClipboard")
511
512SetFormat,Integer,h
513    a += 256*b
514SetFormat,Integer,d
515  a := "U" . substr("0000" . substr(a,3),-3)
516  wtt := CRC%a% . " " . CRK%a% . " "
517  if (wtt=="") {
518    TrayTip,Wie mit NEO,Keine Information`, wie %a% eingegeben werden kann!,10,1
519    return
520  }
521;  MsgBox,% wtt
522
523  wmn := ""
524  loop,parse,wtt,%A_Space%
525  {
526    this_wmn := ""
527    this_wtt := A_LoopField
528    if (this_wtt == "")
529      continue ; probably at first or last entry
530    loop {
531      if (this_wtt == "")
532        break
533      this_char := substr(this_wtt,1,5)
534      this_wtt := substr(this_wtt,6)
535      if (CB%this_char% != "")
536        this_char := CB%this_char%
537      else if (CS%this_char% != "")
538        this_char := CS%this_char%
539      ; this_char will contain Uxxxx if no shortcut is present. Fix this here.
540      if (substr(this_char,-1) == ")+")
541        this_wmn .= this_char
542      else if (substr(this_wmn,-1) == ")+")
543        this_wmn .= "<" . this_char . ">"
544      else
545        this_wmn .= " <" . this_char . ">"
546    }
547    wmn .= this_wmn . "`r`n"
548  }
549  TrayTip,Wie mit NEO,% wmn,10,1
550}
Note: See TracBrowser for help on using the browser.