tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^6: ファイルパスの機種依存文字を取得する方法について
投稿日: 2014/12/03(Wed) 11:33
投稿者マサタロウ
マサタロウです。

・質問した『ファイルパスの機種依存文字を取得する方法について』は、
  (α) の方法で行います。
 GetOpenFileNameW API で呼び出したダイアログボックスで選択した
 ファイルのパス(プロパティ)を、『ADODB.Stream』のLoadFromFile
 プロパティに格納して自分で設定した拡張子のファイルを読み込む。
 ファイル内には実行(プログラムランチャー)するプログラムの
 パスが記録されている。

・(β)の内容は、『ADODB.Stream』でファイルの内容を読み込んだ場合に
 内容を変数に格納するためにファイル内の内容がメモ帳などで開いた
 内容と同じにならないといけないと思いました。
 『ADODB.Stream』で読み込んだ内容を変数に格納する方法の処理の1つ
 で必要と思います。『 内容を変数に格納する方法が1つわかりました 』
 と記述する必要があったと思います。

・Unicode 対応の AcitveX コントロール は、下記にも記述しましたが、
 表示可能の場合は使用しません。


> > これがあれば、コントロールのプロパティを取得して
> 先述したように、VB5 のコントロールは Unicode 文字を扱えません。
> 別途、Unicode 対応コントロールを用意する必要があります。
用意したUnicode 対応コントロールのプロパティを取得(TextやCaption)して
『ADODB.Stream』で読み書き可能かという意味でした。
Unicode 対応コントロールのプロパティにパスの文字列を格納してある
場合です。またUnicode 対応コントロールを用意してあるだけでも
ありません。
用意するUnicode 対応コントロールは、たとえば
http://yaplog.jp/orator/archive/80のコントロールとか。


> > コモンダイアログのFilenameプロパティを格納しても文字化けしない?
> 先述したように、標準のコモンダイアログコントロールは、Unicode 文字を
> 扱えないため、コモンダイアログ API に置き換える必要があります。
コモンダイアログでファイルを選択(パスを取得)した時点で文字化けますか?
表示の仕様のみで、管理では取得されているということはないですか?
『ADODB.Stream』のLoadFromFileで読み込むパスをCommonDialog1.filenameに
変更するとエラーになるので文字化ける・・?


> > プログラムランチャーや、ファイルのパスの文字数を確認するプログラムで
> > ラベルにパスを表示させています。
> Label は使えません。
> Label は標準コントロール(≠ActiveX コントロール)であり、Unicode 非対応です。
> TextOutW API を用いて「描画」することで回避してみて下さい。
機種依存文字を含むパスの表示は、この方法で表示してみます。
この方法でうまくいけばUnicode 対応コントロールは使用しません。


>  (案1) FileSystemObject などを用いて、Unicode 名な画像ファイルを、
>   別のファイル名(C:\TEMP\123.BMP など)にコピーし、その後で
>   改めて LoadPicture 関数で表示する。
機種依存文字を含むパスのある画像ファイルの表示は、この方法で表示してみます。
オブジェクトの生成は、勉強が必要です。
GDI+ Flat APIのページは英文でC言語で書かれてますよね?
"AV"というVBのAPIの宣言をコピーできるフリーソフトにもないので
自分では理解できないと思います。


> > VB2005がありますが、VB5.0でやりたいです。
> VB5 って、17年前の代物ですよ? (VB2005 でも古すぎるぐらい…)
>
> 標準でサポートしていないことを、API などを使って回避していくわけですから、
> 実現するためには、上級者レベルの知識と経験が必要になることは覚悟しておいてください。
VBのバージョンが最新になると質問した
ファイルパスの機種依存文字を取得する方法について
などの内容も対応されている・・?
VBのバージョンが最新になると標準でサポートされている内容が増える・・・?

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。