問題タブ [urlmon]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - IE8ボックスでURLDownloadToFileを使用する方法(クラッシュしないといいでしょう)?
メソッド(urlmon.dllで定義)を使用してファイルをダウンロードするC++アプリ(これに似ています)を入手しました。URLDownloadToFile
IE8 までE_ABORT
は、progress コールバックを返すことでダウンロードを中止することができました。
IE8 がインストールされているシステムでは、これを行うとプログラムがクラッシュし、エラー レポートが生成されます。
経由で開始されたダウンロードをキャンセルする別の方法を知っている人はいますURLDownloadToFile
か?
internet-explorer - Url Monikers またはその他の方法を使用して IE で Accept-Encoding ヘッダーを変更するにはどうすればよいですか?
カスタム エンコーディング タイプでコンテンツをストリーミングするブラウザ プラグインとサーバー コンポーネント システムを開発しています。クライアントが特別なエンコーディングを処理できるかどうかをサーバー側で検出できるようになり、HTTP での通常の動作と一貫性を保ちたいので、ブラウザ プラグインから新しいエンコーディングを追加したいと思います。 Accept-Encoding リクエスト ヘッダーのエンコーディング。すなわち:
Accept-Encoding: gzip、deflate、myencoding
IHttpNegotiate を実装して、BeginningTransaction の追加ヘッダーとして設定しようとしましたが、無視するか、後で上書きされるようです。
c++ - URLDownloadToFile と認証
「ダウンロードマネージャー」として使用される古いATL OCXに取り組んでいます。URLDownloadToFile APIを使用してファイルをダウンロードします。
以前は、Web ページで ActiveX としてホストされていたため、サーバーで認証が必要な場合は IE によって行われていました。現在は実行可能ファイルの一部になっているため、認証を処理する必要があります。ユーザーがユーザー名とパスワードを提供したとしましょう。実際に「認証」を行うにはどうすればよいですか? IIS 用の簡易 Web 認証とNTLMをサポートする必要があります。
Simple Web Authenticationの場合、URL の前にユーザー名/パスワードを渡すと問題なく機能することがわかりました。しかし、それが適切な方法であるかどうかはわかりません。
アドバイスしてください ありがとうザキー
c++ - 使用するおよび URLDownloadToFile を使用して、HTTPS Web リソースを取得します。
全て、
ローカル ネットワークの内外でさまざまな Web サイトからコンテンツをダウンロードできるプログラミングを作成しています。これを行うには、互換性の理由からライブラリと C++ を使用する必要があります。これまでのところ、通常の HTTP ページと Web 上の HTTPS ページに正常にアクセスできました。例:
できないことが 2 つあります。1) ローカル CA 証明書を使用するローカル ネットワーク リソースにアクセスする。
2) ローカル CA 証明書を使用するローカル ネットワーク リソースにアクセスし、クライアント証明書を介してクライアント認証を要求します。
最初のケースでは、信頼できる CA の Windows リストにないため、Windows が接続を許可していないと思います。
2番目に、クライアント証明書/秘密鍵を URLDownloadToFile の呼び出しに統合する方法を見つける必要があると思いますが、これを達成する方法がわかりません。さらに、ローカル CA を信頼するよう Windows に指示する必要もあります。
どんな助けでも大歓迎です。
c++ - URLOpenPullStream および gzip コンテンツのダウンロード - 非圧縮データが必要
URLOpenPullStream を IBindStatusCallback および IHttpNegotiate コールバックと共に使用して、ネゴシエート、ステータス、およびデータ メッセージを処理しています。私が抱えている問題は、コンテンツが gzip の場合です (例: Content-Encoding: gzip)。OnDataAvailable 経由で受信しているデータは圧縮されています。非圧縮データが必要です。BINDF_PULLDATA | を使用しています。BindF_GETNEWESTVERSION | BINDF_NOWRITECACHE バインディング フラグ。gzip 形式をサポートする必要があるという投稿をいくつか読みました。
私は最初、Accept-Encoding リクエスト ヘッダーを変更して、gzip が不要であることを指定しようとしましたが、これではうまくいきませんでした。BeginningTransaction でヘッダーを変更または追加できますが、Accept-Content の変更に失敗します。User-Agent を変更でき、新しいヘッダーを追加できたので、プロセスは機能しましたが、何らかの理由で Accept-Content をオーバーライドしませんでした。
他のオプションは、自分でデータを解凍することです。C++ gzip ライブラリを使用した簡単なテストでは、コンテンツを unzip できました。したがって、これはオプションかもしれません。これが私がしなければならないことである場合、それを検出するための最良の方法は gzip です。BINDSTATUS_MIMETYPEAVAILABLE で OnProgress イベントが発生し、テキストが "application/x-gzip-compressed" に設定されていることに気付きました。これは私がそれを検出する方法ですか?
この問題を回避するための解決策を探しています! 私は URLOpenPullStream を使い続けたいと思っています。これはリリースされた製品であり、変更を最小限に抑えたいと考えています。
c++ - URLDownloadToFile()が終了するのを待っています
インターネットからページをダウンロードして解析するプログラムを作りたいです。2番目の部分は簡単です、問題は最初です。
URLDownloadToFile()関数を使用したい。ただし、デフォルトでは、ダウンロードが完了するのを待ちません。MSDNによると、最後のパラメーターは一種のコールバック関数ですが、その使用方法に関する情報は見つかりません(呼び出されたときと実行する必要があること、関数の種類も)。誰かがその最後のパラメーターとは何か、そしてそれを(C ++で)使用してアプリを待機させる方法を説明できますか?
c# - FindMimeFromDataが1つのホストで画像/tiffを認識しているのに、別のホストでは認識しないのはなぜですか?
アップロードされたファイルのMIMEタイプをスニッフィングするためにFindMimeFromData
fromを使用しています。Internet ExplorerのMIMEタイプ検出にurlmon.dll
よると、は認識されているMIMEタイプの1つです。私の開発マシン(Windows 7 64ビット、IE9)では正常に動作しますが、テスト環境(Windows Server 2003 R2 64ビット、IE8)では動作しません-の代わりに戻ります。image/tiff
application/octet-stream
image/tiff
上記の記事では、MIMEタイプを判別するために実行する正確な手順について説明していますが、これimage/tiff
は26の認識されたタイプの1つであるため、ステップ2(実際のデータをスニッフィング)で終了する必要があります。これにより、ファイル拡張子と登録済みアプリケーション(およびその他のレジストリ関連のもの)が関係ありません。
ちなみに、TIFFファイルは実際にはテストサーバー上のプログラム(Windows画像とFAXビューア)に関連付けられています。WindowsレジストリにTIFFへの参照がないわけではありません。
期待どおりに機能しない理由はありますか?
編集: FindMimeFromDataは次のように使用されます:
これは次のように呼ばれます:
c# - Visual Basic 6.0で「パブリック宣言Ansi関数」を実行するにはどうすればよいですか?
このVB.NET/C#宣言をVisual Basic 6.0宣言に変換しようとしていますが、問題があります(C#バージョンが含まれていますが、VB.NETへの変換は問題ありません)。
ご覧のとおり、Visual Basic / C#にCharSet=CharSet.Ansi
は、Visual Basic 6.0での方法がわからない部分があります。エイリアス名の最後にAを追加しようとしましたAlias "UrlMkSetSessionOptionA"
が、実際にはそうではありませんでした。動作しません(と言いますcan't find DLL entrypoint in urlmon.dll
)。これがないと、pBufferに送信された文字列がぎこちないものとして出てきます(私が認識できない奇妙な文字)。
これが私がこれまでに得たものです...
delphi - Delphi XE2 winapi.urlmon.CoInternetSetFeatureEnabled が見つかりませんか?
twebbrowser コントロールでナビゲート音の煩わしいクリックを無効にしようとしていますが、winapi.urlmon が表示されないようです。どこでも CoInternetSetFeatureEnabled?
c# - urlmon.dll FindMimeFromData() は 64 ビットのデスクトップ/コンソールでは完全に動作しますが、ASP.NET ではエラーが発生します
デスクトップ環境と Web 環境の両方で使用されるユーティリティのライブラリを作成しています。
これには、ファイルのコンテンツ (拡張子ではなく) によってファイルの MIME タイプを取得するユーティリティなど、私のアプリケーションで頻繁に繰り返されると思われるいくつかの機能が含まれています。
チェックする必要があるファイルは最も一般的なもの (jpg、png、pdf、txt) であるため、外部メソッドFindMimeFromData
(上記のリンク)を使用することにしました。
.NET を使用して、拡張子ではなくファイル署名に基づいてファイルの MIME タイプを見つける方法
この方法はうまく機能しますが、JPG ( image/pjpg
) と PNG ( image/x-png
) の 2 つの不適切な MIME タイプを除いては、return ステートメントの前にチェックを行うことで簡単に解決できます。
ライブラリは、32 ビットと 64 ビットの両方でサーバー/クライアントにインストールする必要があるため、プラットフォーム AnyCPU 用にコンパイルされています。
デスクトップ環境でテストした時点では、x86 および x64 用にコンパイルされたアプリケーションの両方ですべて正常に動作しました。
ASP.NET アプリケーション (テスト用の http ハンドラーを含む空のサイト) のテスト時に、HRESULT タイプのエラーが発生し、デバッガーはそれ以上の情報を提供できないことを通知します。
プールの ID をローカル システムに変更するなど、いくつかのテスト構成を行った後 (結果なし)、問題を特定しました。
プールは 32 ビット アプリケーションを許可する必要があります (上の画像を参照)。
なんで?
urlmon.dll
現在の 64 ビット システムの dll をロードするべきではありませんか?
FindMimeFromData
このライブラリのどこからでもメソッドを呼び出すことができるため、これは大きな問題です。
その結果、別のユーティリティ メソッドによってこのメソッドを呼び出すと、この例外がスローされる可能性があり、デバッグによっても問題を追跡することが困難になります。
アイデア/経験はありますか?
テストに使用したオペレーティング システム
デスクトップ:
- Windows 8 x64 -動作
- Windows 7 x64 -動作
- Windows Server 2008 Standard R2 x64 -動作
- Windows Server 2008 Standard x86 -動作
- Windows Server 2003 Standard x86 -動作
- Windows XP Professional SP3 -動作します
ウェブ:
- Windows 8 x64 -最初のエラーが見つかりました。32 ビット アプリケーションが有効になっている場合にのみ動作します
- Windows Server 2008 Standard R2 x64 -エラーが確認されました。32 ビット アプリケーションが有効になっている場合にのみ動作します
- Windows Server 2008 Standard x86 -動作
EDIT 2(質問は解決しました)
Noseratioによって解決:
パラメータの正しいタイプは、ではなく である必要がありppwzMimeOut
ます。pBC
System.IntPtr
System.UInt32
System.UInt32
完全な 64 ビット Web アプリで問題が発生することはわかっていますが、その理由はわかりません。
誰かがこれらの問題の理由を知っている場合は、コメントでよりよく説明できますか?
前もって感謝します