日本語環境以外での「 – コピー」の文字列の取得 – プログラミング – Home

日本語環境以外での「 - コピー」の文...
 
通知
すべてクリア

[解決済] 日本語環境以外での「 - コピー」の文字列の取得


AR2
 AR2
(@ar2)
Estimable Member
結合: 5年前
投稿: 110
Topic starter  

 VCから若干内容がそれている気がしますが、多言語環境で困っておりますのでよろしく
お願いします。

 OSが日本語以外の環境で、指定されたフォルダー以下のファイルを走査し、エクスプ
ローラーの誤操作で作られたファイルを、タイマーで定期的に検索して自動で削除したい
という目的です。

 日本語Windowsのエクスプローラー上で、「hoge.txt」を選択してCtrl+C/Ctrl+Vを実行
すると、「hoge - コピー.txt」というファイル名で複製されます。
 さらにCtrl+Vを押下すると「hoge - コピー (2).txt」という名称になります。
 ところが他の言語のOSで上記操作をした場合は「コピー」なんて表記にはなりません。

 ですから、日本語表記の場合の「 - コピー」や「 - コピー (2)」の部分に相当する文
字列を動的に取得したいのです。
 ロケール依存となるテキスト部分を、OSから動的に取得する方法や、何かしらヒントに
なるようなことをご存知の方がいらっしゃいましたら、よろしくお願いします。
 (とりあえずの暫定回避ですが「 - コピー」を設定させてお茶を濁している状況です)

・厳密には、IExplorerBrowserを用いた擬似エクスプローラーなので、誤操作そのものを
ブロックしたかったのですが、正常操作でCtrl+C/Ctrl+Vをすることもあるとのことで上
位プロセスでの対策を断念してます。
・対応言語が英、蘭、独、韓、中・・・と現時点で約10ヶ国語ですが、どこまで増えるか
未定です。
・環境は、現時点でOSがWindows7、VS2012です。
 (XPの場合の「コピー ~ 」は、現時点では除外して考えています)


引用
トピックタグ
おぼんてなに
 おぼんてなに
(@おぼんてなに)
ゲスト
結合: 10年前
投稿: 2
 

レジストリ
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorerに
CopyNameTemplateを追加すると初期の名前を変更できるようですが

http://nonsubject.arinco.org/2011/12/blog-post_17.html

ない場合は
Shell32.dll.muiの中に%s - コピー ()という文字列がありますので
多分これがデフォルトで使われるのではないでしょうか。

CopyNameTemplate
Microsoft Multi-Lingual User Interface(MUI)等も調べてみてください。

#include <locale.h>

HMODULE thdl = GetModuleHandle(_T(C:\\Windows\\System32\\shell32.dll));

TCHAR buff[210];
setlocale( LC_ALL, " );

for(int i=0;i<=10000;i++) {
memset(buff,0,sizeof(200));
int nLen = ::LoadString(thdl,i,buff,200);
buff[200]='\0';
if(nLen !=0 && wcsstr(buff,_T(コピー)) != NULL) {
TRACE(_T(%.04x %s\n),i,buff);
}
}

うちの環境では、StringTableの0x1052にこの文字列が入っていました。
MUIの変更とかは怖いので試してません。


返信引用
おぼんてなに
 おぼんてなに
(@おぼんてなに)
ゲスト
結合: 10年前
投稿: 2
 

あ、うちは日本語環境しかありません。


返信引用
AR2
 AR2
(@ar2)
Estimable Member
結合: 5年前
投稿: 110
Topic starter  

 レジストリ情報の有無と2段構えでしたか・・・気づきませんでした。
 MUIに対しても表面的なところしか勉強してなかったので、もう少し突っ込んで調べて
みます。
 ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました