掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VB6で保護モードAPIを動かすには? (ID:103077)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>といった組み合わせが考えられそうですね。 >念のため、Windows 7 の Service Pack 状況と、 >Internet Explorer のバージョンと SP も明記してください。 Windows7はSPなしの32bit版です。 IEは、IE8 32bit版(InPrivate ブラウズ無効)です。 InPrivate ブラウズ、初めて知りました。 >> IEShowSaveFileDialog関数がE_ACCESSDENIEDを返してしまい、 >E_ACCESSDENIED が返されるということは、下記のコードを実行したときに、 >『実行時エラー '70': 書き込みできません。』になるということでしょうか。 はい、そうです。 >API が求めているのは『__in LPWSTR lpwstrInitialFileName』ですが、 >上記の定義だと、LPWSTR ではなく LPSTR の呼び出しになってしまいます。 >> ByRef filePath As String, _ LPSTRの呼び出し方で正しいと思ってました。 大間違いですね。 >もしも C 言語でいうところの NULL 値を指定したいのであれば、ByVal 0& を渡しましょう。 これも知りませんでした。 丁寧にありがとうございました。 で、ここまでの情報を踏まえていろいろ試した結果、 第一引数にNULLではなくハンドルを渡すことと LPWSTRの呼び出し方を正しく変えることにより、 ダイアログが表示され、正常終了が返るようになりました。 第八引数で値を受けることはできていませんが・・・。 >> ByRef filePath As String, _ >その宣言で受け取れるのは、BSTR* の場合かと思います。実際には >『__out LPWSTR *lppwstrDestinationFilePath』が求められていますので、 >ByVal Long あたりで宣言した方が都合が良いのでは無いでしょうか。 こちら、ByVal Longで宣言してStrPtr関数でアドレスを渡してみましたが、 何の値も受け取れていません。もうちょっと調べて何とかしたいと思います。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.