tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルVB6のフォントのコモンダイアログが開かずエラー
記事No16619
投稿日: 2021/11/16(Tue) 13:15
投稿者けんけん
以下のコードでフォントのコモンダイアログを開けていたのですが、
本日実行してみたところ開けなくなってしまいました。
(先月までは開けていることを確認)
デバッグを行い、Actionプロパティへ設定するタイミングで実行時エラーが発生し、
Err.Numberが32768となることまでは確認できています。

32768の意味合いが分からず、回避策がわからない状況です。
ネットで調べてみましたが、有用な情報は見当たりませんでした。
調査方法や原因、回避策など何かお分かりの方、教えていただけないでしょうか。

    cdgBox.CancelError = True
    cdgBox.Flags = &H3& Or &H10000
    cdgBox.Action = 4

[ツリー表示へ]
タイトルRe: VB6のフォントのコモンダイアログが開かずエラー
記事No16620
投稿日: 2021/11/19(Fri) 19:23
投稿者魔界の仮面弁士
> 以下のコードでフォントのコモンダイアログを開けていたのですが、
VB2 を彷彿とさせるコードですね…。

> cdgBox.Action = 4
Action プロパティは、16bit 版当時のカスタムコントール版の
コモンダイアログで使われていた古い記述です。

現在は非推奨となっていますので、.Action = 4 という「プロパティへの代入操作」の代わりに、
「.ShowFont メソッドによる呼び出し」を使う事が望ましいです。


> 以下のコードでフォントのコモンダイアログを開けていたのですが、

関係あるかは不明ですが、久しぶりに手元の仮想マシン(Win7x86)上の VB6 を起動して、
[F2] のオブジェクト ブラウザから [MSComDlg] を選択したところ
100% の確率で開発環境がクラッシュする状況に陥っていました。orz

※OLEAUT32.DLL / 0xC0000005: Access Violation


> デバッグを行い、Actionプロパティへ設定するタイミングで実行時エラーが発生し、
> Err.Numberが32768となることまでは確認できています。

エラー発生時の Err.Source と Err.Description は調べられますか?

エラー定数(MSComDlg.ErrorConstants)で値が近いのは、
| -32768 : cdlDialogFailure
|  32763 : cdlNoInstance
ぐらいですね。32768 を示す定数は見つけられませんでした。

あとは、MSComDlg.FileOpenConstants に
|  32768 : cdlOFNNoReadOnlyReturn
というのがありましたが、これは流石に関係無さそう。


> 32768の意味合いが分からず、回避策がわからない状況です。
> ネットで調べてみましたが、有用な情報は見当たりませんでした。
同じ事象に悩んでいる人は、20年以上前から居たみたいですね…。
hhttps://groups.google.com/g/comp.lang.basic.visual.misc/c/7uAexJa8zhA/m/BcbXUl3CGmYJ

これといった回避策は発見できていませんが、たとえば
「Action プロパティを使うべきではない」という回答が付いている物がありました。
(やってみます、という返信があったものの、その後の結果報告なし)

あとは特定バージョンの OLEAUT32.DLL との組み合わせによる障害(いわゆる DLL Hell)もあったようです。

後者の DLL Hell の方は、Microsoft Knowlegebase の Q214845 を参照と
書いてありましたが…これはどうやら、後の KB214845 を指しているようです。
Win95〜Win98SE 用の資料なので、今となっては役には立ちそうにない KB ですが。

[ツリー表示へ]
タイトルRe^2: VB6のフォントのコモンダイアログが開かずエラー
記事No16622
投稿日: 2021/12/03(Fri) 15:37
投稿者けんけん
魔界の仮面弁士さん、返信いただきありがとうございます。
調査に少し進展があり、別のアプリケーション(ファイル暗号化ソフト)が悪さをしていることまで分かりました。
(そのアプリケーションをインストールしていると再現する。アンインストールすると再現しない。)
ですが、インストールしたままでの回避策の有無が分からないといった状況です。
以下、返信への回答となります。

> 現在は非推奨となっていますので、.Action = 4 という「プロパティへの代入操作」の代わりに、
> 「.ShowFont メソッドによる呼び出し」を使う事が望ましいです。

.ShowFont メソッドによる呼び出しを試してみましたが、解消せず再現してしまいました。

> 関係あるかは不明ですが、久しぶりに手元の仮想マシン(Win7x86)上の VB6 を起動して、
> [F2] のオブジェクト ブラウザから [MSComDlg] を選択したところ
> 100% の確率で開発環境がクラッシュする状況に陥っていました。orz

こちらではクラッシュせず、メンバが参照できました。(環境はWin10x64の実機)
なので関係はなさそうです。

> エラー発生時の Err.Source と Err.Description は調べられますか?

Err.Sourceが"CommonDialog"、Err.Descriptionが""でした。
この情報では調べようが無いですよね。。。

> 同じ事象に悩んでいる人は、20年以上前から居たみたいですね…。
> hhttps://groups.google.com/g/comp.lang.basic.visual.misc/c/7uAexJa8zhA/m/BcbXUl3CGmYJ

> あとは特定バージョンの OLEAUT32.DLL との組み合わせによる障害(いわゆる DLL Hell)もあったようです。
>
> 後者の DLL Hell の方は、Microsoft Knowlegebase の Q214845 を参照と
> 書いてありましたが…これはどうやら、後の KB214845 を指しているようです。
> Win95〜Win98SE 用の資料なので、今となっては役には立ちそうにない KB ですが。

情報ありがとうございます、確認してみます。

[ツリー表示へ]