Autor Beitrag
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Di 01.08.06 08:48 
Hallo,

wie einige vlt. schon an meinen OpenSource-Units festgestellt haben, arbeite ich momentan mit UniCode-API. Nun ich stehe da immer wieder vor ein kloeines Problem: Und zwar kennen Win95, Win98 und WinME die API nicht und reagiren verschieden, wenn die dort benutzt werden ;).

Weiß einer von euich, wie man am sichersten erkennt, ob ein System UniCode-fähig ist? Ich mache es momentan so hier:

ausblenden Delphi-Quelltext
1:
2:
initialization
  UniCodeSupport:= Win32Platform = VER_PLATFORM_WIN32_NT;


Allerdings ist dort die Schwachstelle, dass auf 95, 98 oder ME noch MSLU (Microsoft Layer for Unicode on Windows 95/98/Me Systems) installiert sein kann, aber wie erkenne ich, dass das installiert ist?

Ich bin schon auf die WinAPI IsWindowUnicode gestoßen, aber laut MSDN gibt es die auch erst seit MSLU (mein 98 SE hatte komischerwiese trotzdem kein Problem damit ;) ) und ich weiß dort auch nicht, welches Handle man angeben muss, da ich ja eigentlich das Win-Handle für mein Ziel bräuchte ;).
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Di 01.08.06 12:52 
2 Möglichkeiten:
1. Auslesen des Registry-Pfades, der die Software-Patches von MS registriert (unzuverlässig und Aufwändig)
2. Versuchen, eine nur mit MSLU verfügbare Funktion mit GetProcAddress zu laden

Ich wär für Zweiteres, ersteres müsstest Du kurz nachgucken, ich weiß aber, dass es zumindest auf NT-Systemen auf jeden Fall, auf Win9x höchst wahrscheinlich nen Key dafür in der Reg gibt.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Di 01.08.06 13:23 
Es kommt ganz darauf an, was du tun möchtest, ob deine bisherige Abfrage bereits ausreicht.
Das MSLU wird dem System keinen Unicode-Support unterschieben, wenn das System es nicht schon ohne den MSLU unterstützt hätte. Das einzige, was der MSLU macht, ist, Unicode-Zeichen nach ANSI zu mappen und entsprechend die ANSI-Funktionen aufzurufen. Wenn du Unicode ausgeben willst, wird dir auch der MSLU keine Möglichkeit geben, das unter Win9x zu tun.

user profile iconHeiko hat folgendes geschrieben:
Ich bin schon auf die WinAPI IsWindowUnicode gestoßen, aber laut MSDN gibt es die auch erst seit MSLU (mein 98 SE hatte komischerwiese trotzdem kein Problem damit ;) ) und ich weiß dort auch nicht, welches Handle man angeben muss, da ich ja eigentlich das Win-Handle für mein Ziel bräuchte ;).
Laut Dokumentation das Handle eines Fensters, mit dem du interagieren möchtest.

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
Bernhard Geyer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 721
Erhaltene Danke: 3



BeitragVerfasst: Do 03.08.06 17:55 
Unter Win9x/ME sind ca. 12 Funktionen der Win32-API Unicodefähig (und nicht nur Dummy). Erst ab NT kann die Win32-API Unicode im "rest" der Win32-API.

Willst Du unter Win9x/ME unter Win32 auch Unicode-Verwenden mußt du vieles selbst machen oder z.B. das Elpack nehmen das dir die Arbeit abnimmt.
Heiko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: So 13.08.06 14:58 
user profile icontommie-lie hat folgendes geschrieben:
Es kommt ganz darauf an, was du tun möchtest, ob deine bisherige Abfrage bereits ausreicht.
Das MSLU wird dem System keinen Unicode-Support unterschieben, wenn das System es nicht schon ohne den MSLU unterstützt hätte. Das einzige, was der MSLU macht, ist, Unicode-Zeichen nach ANSI zu mappen und entsprechend die ANSI-Funktionen aufzurufen. Wenn du Unicode ausgeben willst, wird dir auch der MSLU keine Möglichkeit geben, das unter Win9x zu tun.


Wenn es so ist, bleibe ich leiber bei der alten Variante (soviele werden das MSLU ja auch nicht haben ;) ).