![]() |
Ordner erstellen international korrekt
Hallo,
mein ShellTreeView soll per KontextMenü Ordner erstellen können. Das ganze soll international in der richtigen Sprache geschehen. Also nicht á la Pfad + 'Neuer Ordner'. Gibt es einen kanonischen Befehl für das IContextMenü? (wie z.B. cut, copy, paste) Falls nein, wo und wie kann ich die Bezeichnung für 'Neuer Ordner' auslesen? Irgendwo wird Windows, dass ja auch machen.. Oder gibt es den supercoolen Befehl, der die Windows-Funktion Ordner erstellen aufruft und dabei automatisch auf die Namensvergabe achtet?? Grüße Sebastian |
Re: Ordner erstellen international korrekt
Kann es sein, dass ich der Erste bin, der vor dem Problem steht?
Hat denn noch nie jemand auf irgendwelche Windows-Variablen zurückgegriffen um User-Menüs zu bauen? Ich kann den Namen 'Neuer Ordner' leider nicht als ressourceString deklarieren, da er in einer Komponente benutzt wird. Keine Ideen??? |
Re: Ordner erstellen international korrekt
ja frag doch die system sprache ab und ändere entsprechend deine bezeichnungen
viele andere programme haben dazu auch entsprechende language dateien mit beiliegen mach also im einfachsten fall ne ini wo du alle bezeichnungen in den entsprechenden sprache drin hast und lade dann die bezeichner systemsprache abfragen:
Delphi-Quellcode:
nachtrag:
function TForm1.GetOSLanguage: string;
var LanguageID : LangID; Language: array [0..100] of char; begin LanguageID:=GetSystemDefaultLangID; VerLanguageName(LanguageID,Language,100); Result := String(Language); end; neue posts erst nach 24-48h :zwinker: (nicht bös gemeint) |
Re: Ordner erstellen international korrekt
mmh, die idee hatte ich auch schon. einen localizer setze ich sowieso ein.
wie gesagt soll das eine komponente werden, die autark funktioniert. und so eine lösung wäre nicht gerade elegant. vielleicht kommt ja noch was.. :) Grüße Sebastian |
Re: Ordner erstellen international korrekt
ich hab mal suchen lassen und "neuer Ordner" taucht mehrmals als Resource in irgendwelchen Dateien auf, aber leider nicht in der Regitry ... dass wäre ja das einfachste gewesen -.-
Aber ich vermute mal diese F:\Programme\Gemeinsame Dateien\Microsoft Shared\Web Folders\MSOWS407.DLL ist die vielversprechenste Datei, wo du dir das rausholen könntest. Brauchst ja nur Anhand der aktuellen LanguageID dir die passende Datei in diesem Verzeichnis raussuchen und wenn's keine gibt (z.B. Win98), dann gehst du einfach auf die Sprachdatei vom Windwos WINDOWS\SYSTEM\SHELL32.DLL los (welche aber nicht immer mit der aktuellen Sprache übereinstimmen muß) Ich vermute aber auch noch, das es bestimmt 'nen netten API-Befehl gibt, wo man bestimmtAnhand 'ner ID den gewünschten Sting bekommt. Hier mal die alle möglichen Dateien XP: Programme\Gemeinsame Dateien\Microsoft Shared\Web Folders\MSOWS407.DLL Programme\MSN\MSNCoreFiles\mail.mar Programme\MSN\MSNCoreFiles\ui.mar Programme\Outlook Express\msoeres.dll Programme\Windows NT\dialer.exe Windows\PCHEALTH\HELPCTR\Indices\merged.hhk Windows\Prefetch\WEB-INSTALL.EXE-05FBC1E6.pf Windows\system32\appwiz.cpl Windows\system32\avtapi.dll Windows\system32\browselc.dll Windows\system32\capesnpn.dll Windows\system32\cdosys.dll Windows\system32\config\system Windows\system32\dllcache\appwiz.cpl Windows\system32\dllcache\avtapi.dll Windows\system32\dllcache\browselc.dll Windows\system32\dllcache\capesnpn.dll Windows\system32\dllcache\cdosys.dll Windows\system32\dllcache\dialer.exe Windows\system32\dllcache\dmdskres.dll Windows\system32\dllcache\ieakui.dll Windows\system32\dmdskres.dll Windows\system32\ieakui.dll Windows\system32\mmc.exe Windows\system32\mmcbase.dll Windows\system32\msieftp.dll Windows\system32\mydocs.dll Windows\system32\shdoclc.dll Windows\system32\shell32.dll Windows\system32\wmploc.dll hier für 2K: Programme\Gemeinsame Dateien\Microsoft Shared\Web Folders\MSOWS407.DLL Programme\Outlook Express\msoeres.dll Programme\Windows NT\dialer.exe WINNT\system32\appwiz.cpl WINNT\system32\avtapi.dll WINNT\system32\browselc.dll WINNT\system32\capesnpn.dll WINNT\system32\dllcache\avtapi.dll WINNT\system32\dllcache\browselc.dll WINNT\system32\dllcache\capesnpn.dll WINNT\system32\dllcache\dialer.exe WINNT\system32\dllcache\dmdskres.dll WINNT\system32\dllcache\ieakui.dll WINNT\system32\dllcache\mmc.exe WINNT\system32\dllcache\mmcndmgr.dll WINNT\system32\dllcache\msieftp.dll WINNT\system32\dllcache\msoeres.dll WINNT\system32\dllcache\shdoclc.dll WINNT\system32\dllcache\shell32.dll WINNT\system32\dmdskres.dll WINNT\system32\ieakui.dll WINNT\system32\mmc.exe WINNT\system32\mmcndmgr.dll WINNT\system32\msieftp.dll WINNT\system32\shdoclc.dll WINNT\system32\shell32.dll und 98: WINDOWS\SYSTEM\APPWIZ.CPL WINDOWS\SYSTEM\SHDOCVW.DLL WINDOWS\SYSTEM\SHELL32.DLL |
Re: Ordner erstellen international korrekt
Zwei davon sind aber unsinnig !
[Edit]Naja, die dialer.exe nicht ganz (dachte, das wär'n dialer 8) )aber die Prefetch auf jeden Fall Neue Liste: Programme\Gemeinsame Dateien\Microsoft Shared\Web Folders\MSOWS407.DLL Programme\MSN\MSNCoreFiles\mail.mar Programme\MSN\MSNCoreFiles\ui.mar Programme\Outlook Express\msoeres.dll Programme\Windows NT\dialer.exe Windows\PCHEALTH\HELPCTR\Indices\merged.hhk Windows\Prefetch\WEB-INSTALL.EXE-05FBC1E6.pf Windows\system32\appwiz.cpl Windows\system32\avtapi.dll Windows\system32\browselc.dll Windows\system32\capesnpn.dll Windows\system32\cdosys.dll Windows\system32\config\system Windows\system32\dllcache\appwiz.cpl Windows\system32\dllcache\avtapi.dll Windows\system32\dllcache\browselc.dll Windows\system32\dllcache\capesnpn.dll Windows\system32\dllcache\cdosys.dll Windows\system32\dllcache\dialer.exe Windows\system32\dllcache\dmdskres.dll Windows\system32\dllcache\ieakui.dll Windows\system32\dmdskres.dll Windows\system32\ieakui.dll Windows\system32\mmc.exe Windows\system32\mmcbase.dll Windows\system32\msieftp.dll Windows\system32\mydocs.dll Windows\system32\shdoclc.dll Windows\system32\shell32.dll Windows\system32\wmploc.dll |
Re: Ordner erstellen international korrekt
Wurde schon mal die Unit ShlObj oder ShellAPI angedacht?
Da steht der String garantiert auch nicht drin :shock: Aber eine der beiden Units erzeugt M.M. den "Neuen Ordner" in der Landessprache. mfg |
Re: Ordner erstellen international korrekt
das mit den dll würde bestimmt zum erfolg führen, aber warum kompliziert machen wenn es auch einfacher geht? :) Vor allem weiß man nie, ob die DLLs nicht verändert wurden und dann noch verschiedende orte und versionen auf den plattformen.
schaut euch mal bitte ![]() Habt ihr das schon benutzt? Lese ich richtig, dass CMDSTR_NEWFOLDER eine Befehls-Konstante ist, die eigentlich genau mein Ziel erreichen müsste? Grüße Sebastian [Nachschlag:] hier ist wohl das, was ich suche: ![]() Die Sache ist die, dass man um Neu -> Neuer Ordner aufzurufen auch das Kontext-Menü des Hintergrunds benötigt. Das geht über IShellView.GetItemObject usw. Das wird ein hartes Stück Arbeit. Vor allem das ganze in Delphi hinzubekommen. Wenn es dann auf Win9x bis XP läuft wird erstmal gefeiert. :drunken: Grüße Sebastian |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz