AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Non-Unicode-Codepage für einzelnes Programm setzen
Thema durchsuchen
Ansicht
Themen-Optionen

Non-Unicode-Codepage für einzelnes Programm setzen

Ein Thema von jaenicke · begonnen am 30. Jun 2012 · letzter Beitrag vom 1. Jul 2012
Antwort Antwort
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.580 Beiträge
 
Delphi 11 Alexandria
 
#1

Non-Unicode-Codepage für einzelnes Programm setzen

  Alt 30. Jun 2012, 20:24
Hallo,

es geht um ein Programm, das Ansizeichen benutzt. Dementsprechend zeigt dieses diese nur an, wenn auch die entsprechende Codepage in den Regionseinstellungen für Programme eingestellt ist, die nicht unicodefähig sind.

Nun gibt es das Tool AppLocale von Microsoft, das dies für ein Programm verändert, wenn man dieses über das Tool startet:
http://www.microsoft.com/en-us/downl....aspx?id=13209

Die Frage ist nun wie das funktioniert. Wie macht das Tool das? Das könnte man dann ja sicher auch direkt in das entsprechende Programm einbauen. (Mit den Entwicklern stehe ich in Kontakt.)
Ich habe z.B. mit SetThreadLocale experimentiert, aber so wirklich zu funktionieren schien das nicht.

Hintergrund:
Es handelt sich um gesetzliche Vorschriften sowie um für ein internationales Firmennetzwerk notwendige Vorgaben, die dazu führen, dass sich die Voraussetzungen nicht ändern lassen. Sprich das Programm darf nur diese Codepage benutzen (und kein Unicode) und auf dem PC muss aufgrund mehrerer anderer Programme und Vorgaben eine andere Codepage eingestellt sein.

Zusätzliche Info:
Es geht um Windows XP und höher.

Vielen Dank schon einmal,
schönen Gruß,
Sebastian
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.049 Beiträge
 
Delphi 12 Athens
 
#2

AW: Non-Unicode-Codepage für einzelnes Programm setzen

  Alt 30. Jun 2012, 21:24
Im Prnzip bräuchtest du also die Umkehrfunktion von GetACP

Eventuell hilft ja MSDN-Library durchsuchenSetThreadLocale und MSDN-Library durchsuchenSetLocaleInfo.
Oder du stellst im gesamten System die Standard-CodePage um.

http://superuser.com/questions/23981...g-in-windows-7



Was das Programm macht, daß müßte man mal nachsehn ... eventuell setzt es die CodePage oder hoockt Funktionen wie GetACP.



Für Datteien kenn ich da nur
MSDN-Library durchsuchenAreFileApisANSI, MSDN-Library durchsuchenSetFileApisToANSI und MSDN-Library durchsuchenSetFileApisToOEM, womit man die CodePages für Dateioperationen umstellen kann, zwischen ANSI (Windows/VCL) und DOS (Konsole).
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.580 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Non-Unicode-Codepage für einzelnes Programm setzen

  Alt 30. Jun 2012, 21:33
Das hatte ich ja geschrieben, dass ich das damit schon versucht hatte. Ich habe die Codepage damit vor dem Erstellen der GUI angegeben, aber sobald ich es auf einem PC mit einer anderen Codepage im System kopiert habe ging es nicht mehr. aber ich schaue mir das noch einmal genauer an.

Soweit ich die Dokumentation verstehe kann man das damit nur für den Benutzer insgesamt setzen.
Zitat:
This function writes to the registry, where it sets values that are associated with a particular user instead of a particular application. These registry values affect the behavior of other applications run by the user.


Oder du stellst im gesamten System die Standard-CodePage um.
Wie schon geschrieben ist das absolut nicht möglich.

Für Datteien kenn ich da nur
MSDN-Library durchsuchenAreFileApisANSI, MSDN-Library durchsuchenSetFileApisToANSI und MSDN-Library durchsuchenSetFileApisToOEM, womit man die CodePages für Dateioperationen umstellen kann, zwischen ANSI (Windows/VCL) und DOS (Konsole).
Das ist auch interessant, aber hier geht es um die Anzeige dieser Zeichen, also die Oberfläche selbst.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#4

AW: Non-Unicode-Codepage für einzelnes Programm setzen

  Alt 1. Jul 2012, 07:00
In einer Sandbox (z.B. Sandboxie.com) könnte das Programm in einer isolierten Umgebung mit geänderter Codepage laufen.
Das nur als Idee, falls alle anderen Stricke reisen...
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.580 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Non-Unicode-Codepage für einzelnes Programm setzen

  Alt 1. Jul 2012, 09:18
Dann würden wir wohl eher auf virtuelle Maschinen setzen. Aber da es mit dem Tool ja funktioniert, muss es ja irgendwie gehen und notfalls eben direkt damit.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz