問題タブ [atl]
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++ - COM を使用して Outlook 連絡先を検索しますか?
ローカルの Outlook 連絡先を検索するためのサポートを ATL/WTL アプリに追加したいと考えています。連絡先を検索できる Outlook COM インターフェイス (Office 2003 以降) を知っている人はいますか? 私はすでに LDAP ルックアップをサポートしていますが、ユーザーはプライベートな連絡先も検索できるようにしたいと考えています。
どんな情報でも大歓迎です。
c++ - 新しい C++ プロジェクトで ATL、MFC、Win32、CLR のいずれを使用するかを決定するにはどうすればよいですか?
初めての C++ プロジェクトを始めたばかりです。Visual Studio 2008を使用しています。これは、いくつかのデータベースにアクセスして WebSphere MQ トランザクションを開始する単一フォームの Windows アプリケーションです。ATL、MFC、Win32(実際には少しぼんやりしています)、CLRの違いは基本的に理解していますが、どのように選択すればよいか途方に暮れています。
これらの 1 つまたは複数は、下位互換性のためだけのものですか?
CLRは悪い考えですか?
任意の提案をいただければ幸いです。
編集: このプロジェクトでは C++ を選択しましたが、それは完全に技術的なものではないため、この記事では説明しませんでした。では、C++ が唯一の/最良の選択肢であると仮定すると、どれを選択すればよいでしょうか?
c++ - ActiveX(Webbrowerがホストする)プロジェクトを静的ライブラリプロジェクトに変換するにはどうすればよいですか?
特定のURLにアクセスするためのコントロール(複合コントロールダイアログペインに埋め込まれたWebブラウザーコントロール)を含むActiveXコンポーネントがあります。URLにアクセスするActiveXコンポーネントは、他のMFCまたはVBプロジェクトで使用できます。使用法は、ActiveXコンポーネントを登録し(zippy32 cmdを使用)、「ActiveXコントロールの挿入」を使用してダイアログウィンドウにコントロールを挿入することです。
今、私はActiveXコンポーネントを同じブラウザウィンドウとWebアクセス機能を備えた静的ライブラリに変換することを計画しています。どうすればいいの?さらに、(静的ライブラリ内の)ブラウザウィンドウを他のMFCプロジェクトで使用する方法。関数呼び出しによるものですか?利用可能なサンプルプロジェクトはありますか?
開発ツールとしてMicrosoft.Net2003を使用しました。
事前にどうもありがとうございました。
windows - COMインターフェイスのマーシャリングを有効にするには何が必要ですか?
タイプライブラリのない32ビットATLCOMコンポーネントがあります。複数のインターフェースを実装する特定のクラスのクラスファクトリがあります。
これをインプロセスサーバーとして使用すると、すべてが正常に機能します。クライアント側がCoCreateInstance()を呼び出し、オブジェクトがインスタンス化され、QueryInterface()が要求されたインターフェイスへのポインターを取得します。しかし、コンポーネントをCOM +に入れると、クラスをインスタンス化できなくなります。CoCreateInstance()はE_NOINTERFACEを返すようになりました。
問題は、タイプライブラリがないためにCOM+がマーシャリングを実行できないことだと思います。マーシャリングの方法がわかりません。これを解決するためにタイプライブラリを生成して登録する必要がありますか、それとも他の方法がありますか?
c++ - 制限付きユーザーとして実行すると、DLLMain で GPF が発生するのはなぜですか?
このコードを制限付きユーザーとして実行するとクラッシュするのに、マシンの管理者として実行するとクラッシュしないのはなぜですか?
戻り時にコードがクラッシュしています...理由はわかりません。
私は得ています:
さらに、_AtlModule.DLLMain は次のようになります。
ATL DLL をインポートし、静的リンクも試みましたが、うまくいきませんでした。
アップデート
ProcMon を使用すると、ここでバッファ オーバーフローが発生します。
RegQueryValue HKU\S-1-5-21-448539723-854245398-1957994488-1005\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Cache BUFFER OVERFLOW 長さ: 144
これは何を意味するのでしょうか?
email - Outlook :: Attachment(埋め込みメール)からOutlook ::_MailItemを取得する
VC/ATLを使用してOutlookアドインを作成しています。この特定のアドインは、選択された電子メールメッセージを受け取り、それらをディスクに書き込みます。また、関連するすべての添付ファイルをディスクに書き込みます。次に、Outlookの外部のアプリケーションにすべてを読み込みます。
Outlookオブジェクトモデルを使用すると、_MailItemとAttachmentの両方にSaveAsメソッドがあるため、これは非常に簡単です。問題は、添付ファイルが埋め込まれた電子メール自体である場合に発生します。これも、分割して個別のファイルとして保存する必要があります。
理想的な世界では、_MailItemインターフェースの添付ファイルを照会して、選択の通常の部分のように処理することができます。ただし、QueryInterfaceは「インターフェイスなし」を返します。
Outlook XP(2002)からOutlook 2010までで動作するソリューションが必要です。Outlook2007では、アプリケーションオブジェクトにメソッド(CreateItemFromTemplate)があり、ディスクに保存されたメッセージからMailItemを取り戻すことができます。 Outlook XP/2003では機能しません。送信者/受信者の情報もそのまま必要です。
また、サードパーティの償還ライブラリが拡張MAPIを使用してこれを実行できることも知っています。ただし、サードパーティのライブラリの使用は避けようとしています。
c++ - ツールバーのアイコンが透明ではありません
IEツールバーを作成しました。静的コントロールを使用してツールバーにアイコンを表示し、その上に画像を保持しています。
この静的コントロールは透明ではないため、このアイコンは背景色を表示しています(これはWindowsの一般的なコントロールのデフォルトの色です)。
ブラウザのテーマに関係なく、静的コントロールを透過的にすることは可能ですか。
プロジェクトはATLC++で開発されています。
静的制御のプロパティとしてWS_EX_TRANSPARENTを指定しようとしましたが、OnCtrlColorStaticイベントでnull_brushを返そうとしましたが、それでも問題は解決されません。
visual-studio - AddRef() なしで EnvDTE の CoCreateInstance?
これは、私が尋ねた別の質問に多少関連しています。パズルの最後のピースは、GetActiveObject() の代わりに CoCreateInstance() を使用することです。EnvDTE の既存のインスタンスを使用したくないので、VisualStudio の新しいインスタンスを適切に起動する CoCreateInstance を呼び出します。CoCreateInstance() は AddRef() を呼び出し、出力ポインターを CComPtr に格納します。これにより、破棄時に Release が適切に呼び出されます。この Release() が発生すると、見よ、VS のインスタンスが閉じる! もちろん、refcount が 0 であるためです。私がやりたいことは、新しいプロセスがその最後のインスタンスを所有するようにすることです。そのため、ユーザーが閉じる (X) ボタンで VS を閉じると、COM オブジェクトが破棄されます。
私が試したことはいくつかあります。確かに機能しますが、閉じるボタンで VS を閉じても、実際にはプロセスが強制終了されません (タスク マネージャー リストでまだ実行されています)。2. VS の別のプロセスを起動し、ROT を使用して新しいインスタンスを見つけます。COM オブジェクトの新しいインスタンスを見つけようとする前に、アプリケーションが起動するのを不確定な時間待たなければならないので、これは醜いです。3. グローバルまたは静的 CComPtr を使用し、アプリを閉じるときにオブジェクトを手動で破棄します。こういうやり方はやめた方がいい。