掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
[アプリケーションの追加と削除] の情報 (ID:100802)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
# つっこみどころが多過ぎるので、「一部のみ」つっこんでいきます。 > こちらの魔界の仮面弁士さんのコードを > お借りして、参照設定無しで、行ってますが、 これの元ネタは、私の作った裏サンプルです。 # 基本部分はほとんどパ◯リ? いや、別に訴えたりしないけど。 ## というか、そもそも流用されて当然として公開しています。 ## オリジナリティを主張するほどのものではないですし。 ちなみに、DispCallFuncを使う元のサンプルは、大人向けを想定しています。 それを利用してうまく行かないことがあったら人に尋ねるような子供に 対しては利用することを考慮しておりません。 # そもそも、他の人に訊くような段階では、利より害のが多いので、裏に設置。 というわけで、素直にタイプライブラリを使ってください。 > E_NOTIMPLを返してくる E_NOTIMPL が返ってきたら、この先はないと判断して、「他」の方法に 当たるのが、真っ当なCOMの利用法です。 # E_INVALIDARGS などではないのですし。 > Private Type tag_ShellAppCategoryList > cCategories As Long > pCategory As tag_ShellAppCategory > End Type pCategory As Long にすべきですよね。 > Dim p As stdole.IUnknown 'ShellAppManager > Dim peia As stdole.IUnknown 'IEnumInstalledApps > Dim pia As stdole.IUnknown 'IInstalledApp As IUnknown とするなら、DispCallFunc を使ってはいけません。 使えるケースと使えないケースの区別がつくならば別ですが、 その判断には(コードで記述できるような)一般性がありませんし。 # そういう点でも、タイプライブラリを素直に使うべきかと。 > IIDFromString ByVal "{352EC2B7-8B9A-11D1-B8AE-006008059382}", _ > CLSID_ShellAppManager(0) Dim abBuffer() As Byte abBuffer = "{352EC2B7-8B9A-11D1-B8AE-006008059382}" & vbNullChar Call IIDFromString(abBuffer(0&), CLSID_ShellAppManager(0&)) > End If > Set pia = Nothing > 'Wend > Set peia = Nothing > End If > Set p = Nothing > End Sub > > だと大丈夫でした(何でだろう)。 Release し過ぎだから。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.