ギリシャ文字のショートカットファイルのResolve – プログラミング – Home

ギリシャ文字のショートカットファイルの...
 
通知
すべてクリア

[解決済] ギリシャ文字のショートカットファイルのResolve


キット
 キット
(@キット)
ゲスト
結合: 18年前
投稿: 14
Topic starter  

いつもお世話になっております。

ショートカットファイルから実態を得る方法として、IPersistFileのLoad
で行っています。しかしuTorrent(ミュー:ギリシャ文字)の様なファイル
をLoadすると失敗してしまいます。

何か良策は有りませんでしょうか?

使用コードを下記に記載しておきます。
宜しくお願いいたします。

CString
Foo::ResolveLinkFile( LPCSTR pszShortcutFile )
{
BOOL ret = false;
HRESULT res;
IShellLink* psl;
WIN32_FIND_DATA wfd;
char szAppName[ MAX_PATH ];

CoInitialize( 0 );
res = CoCreateInstance( CLSID_ShellLink, 0, CLSCTX_INPROC_SERVER,
IID_IShellLink, (void **)&psl );

if( SUCCEEDED( res ) ){
IPersistFile* ppf;
res = psl->QueryInterface( IID_IPersistFile, ( void ** )
&ppf );
if( SUCCEEDED( res ) ){
WCHAR wsShcut[ MAX_PATH ];

MultiByteToWideChar( CP_ACP, 0, pszShortcutFile, -
1, wsShcut, MAX_PATH );

if( SUCCEEDED( ppf->Load( wsShcut, STGM_READ ) ) )
ret = SUCCEEDED( psl->GetPath( szAppName,
MAX_PATH, &wfd, SLGP_UNCPRIORITY ) );

ppf->Release();
}
psl->Release();
}
CoUninitialize();

return szAppName;
}


引用未解決
トピックタグ
キット
 キット
(@キット)
ゲスト
結合: 18年前
投稿: 14
Topic starter  

すみません、記載漏れです。

環境
Visual C++ 2005 SP1
Windows XP/Vista

文字セット
マルチバイト文字

で開発しております。


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

UNICODE設定にしてみるとか。


返信引用
キット
 キット
(@キット)
ゲスト
結合: 18年前
投稿: 14
Topic starter  

そのプロジェクトは昔からの名残も有り、Unicodeへ全域変更するのは
正直かなり苦しい感じなので、マルチバイト文字の設定のまま何とか
したいのですが、何か良い手はないものでしょうか?


返信引用
ぬふや
 ぬふや
(@ぬふや)
ゲスト
結合: 18年前
投稿: 34
 

ユニコードなファイル名を扱う部分だけ使用するAPIやデータをUNICODEにするだ
けでもいいとは思います。
そして、一度マルチバイトに変換した文字列は完全に元には戻せない筈です。


返信引用
キット
 キット
(@キット)
ゲスト
結合: 18年前
投稿: 14
Topic starter  

シャノン様、ぬふや様、

情報有難うございます。
むふー一度マルチバイトで受けてしまった後に元に戻せないとすると
結構根本的にコードを見直さないといけない感じに思えて来ました。
# 色々な箇所にそのデータを流用している為

もう少しトライ&エラーしてみて、何からの結論が見えた段階で
解決チェックしようと思います。

うーん、苦しいですねぇ ^-^;;


返信引用
キット
 キット
(@キット)
ゲスト
結合: 18年前
投稿: 14
Topic starter  

色々トライしたのですが、結局Unicodeに染まる事にしました(涙)

一応解決にしておきます。

有難うございました~


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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