プロが教える店舗&オフィスのセキュリティ対策術

実際自分でも言ってることが正しいものなのか疑問なのですが、よろしくお願いします。

ActiveX+SDKを用いて、HTTPS接続を行いファイルをダウンロードプログラムを組んでいるのですが、
先輩が言うには

呼び出す自身のIID_IUnKnownを取得の仕方を調べることで問題が解決するそうなのですが、いまいちというか、まったく分からない状態です(泣

現在のソースの一部を乗せておきます。
といっても現在ソースが手元にないので記憶からほりおこしてます・・・
QueryInterface(IID_IUnKnown ,※ )

※この部分わすれました

実際、自分でもこんな説明であっているのかなどもわかりません、足りない情報があるなら補足いたします。ちなみにC言語をまだ1ヶ月ほどのレベルです。

どうか、よろしくお願いいたします。

A 回答 (3件)

質問文にある「自分自身」というオブジェクトの中で実行するのなら。

。。

IUnknown* pUnk;
pUnk = NULL;
QueryInterface(IID_IUnknown,(void**)&pUnk);

自分以外の部分から実行する場合は自分自身を○○とすると。。。

IUnknown* pUnk;
pUnk = NULL;
○○->QueryInterface(IID_IUnknown,(void**)&pUnk);

のようにすればいいかと思います。

この回答への補足

>質問文にある「自分自身」というオブジェクトの中で実行するのなら。。。

というのが現在の欲している答えなのですが、現在そのやり方でやっているのですが、どうもうまくいきません。
自分もこのやり方でOKだろうと思っていたのですが、、、

簡潔に現在やっていることを述べますと、

JScriptから呼び出し(URL,ファイルの保存先)を引数としてHTTPSのサイトにアクセスし、ファイルをダウンロードするのですが、
デスクトップにおいたHTMLファイルを開きJScriptを実行し、その際に証明書の選択画面が出てきてファイルをダウンロードすると言った流れです。

補足日時:2005/02/25 09:28
    • good
    • 0
この回答へのお礼

返信したと思ったのですが、どうもできてなかったみたいですいません。

とりあえず、
自分自身のインターフェイスポインタを取得したいというのが現在の問題点です。

補足で、現在のソースを載せておきます。

お礼日時:2005/02/25 09:15

> ...問題が解決する...


何が問題なのでしょうか?


> QueryInterface(IID_IUnKnown ,※ )
>
> ※この部分わすれました
ココにはインターフェースポインタを格納する変数のアドレス(void**)がはいります...ってこれが問題ですか?

この回答への補足

/*------------------------------------
** @param URLダウンロード先のフルパス
** @param FileNameローカル保存先のパス
------------------------------------*/
STDMETHODIMP CDownloader::Download(BSTR URL, BSTR FileName)
{
USES_CONVERSION;

LPCSTR szURL = OLE2T(URL);// download先フルパス
LPCSTR szFileName = OLE2T(FileName);// ローカル保存先パス
HRESULT result = NULL;//エラー,成功コード格納
char lpBuf[256];

CComPtr<IUnknown> punk;
QueryInterface(IID_IUnknown, (void**)&punk);//<-ここで自身のインターフェイスポインタを取得したい

//ダウンロード
result = URLDownloadToFile( punk, szURL, szFileName, 0, NULL);//<-第一引数で取得したポインタをセットしたい

//ダウンロード結果の判定
if( result == S_OK ){
sprintf( lpBuf, "OK" );
}else{
sprintf( lpBuf, "ERROR" );
}

//ダウンロード結果の表示
MessageBox(NULL,lpBuf,"MSG",MB_OK);

return S_OK;
}

現在のソースなのです。よろしくお願いします。

補足日時:2005/02/25 09:16
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。

問題というのは 自身のインターフェイスポインタを取得したいということです。

質問する側が質問をわかっていないのは問題なのは重々承知しています。自分でも理解できるようがんばりたいと思います、よろしくお願いします。

お礼日時:2005/02/25 01:17

自信はないですが。

。。

>result = URLDownloadToFile( punk, szURL, szFileName, 0, NULL);//<-第一引数で取得したポインタをセットしたい

URLDownloadToFileの第5引数をNULL(進行状況を取得しない)にするのでしたら、第1引数もNULLのままで大丈夫だと思います。試してみてはどうでしょうか?
    • good
    • 0
この回答へのお礼

どうもActiveXをつかった場合は第一引数をNULLにはできないようです、
一応おっしゃる方法で試してみましたがだめでした。。。

週末ということで現在開発環境がなくどうしようもありません。もうすこしがんばってみたいと思います

お礼日時:2005/02/26 22:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!