tlbimp

今度は「COM 相互運用機能」ってやつ.
Tlbimp.exe を利用して,AsFile.tlb を ISFile.dll として出力.
  SDK コマンドプロンプトを開き,~\ReleaseU のフォルダに移動.
  tlbimp AsFile.tlb ISFile.dll
C# フォームアプリケーションを作成して,ボタンを配置.
  参照の追加で,iSFile.dll を追加.
    using iSFile; を追加.
    private void button1_Click(object sender,EventArgs e) {
      iSFile.SearchF srchF = new iSFile.SearchF() ;
      string selFile = srchF.BrowseFile(“%Temp%\\”,””) ;
      MessageBox.Show(selFile) ;
      }
同様の動作の vbs での呼び出しは,
  dim oFSch : set oFSch = CreateObject(“AsFile.SearchF”)
  selFile = oFSch.BrowseFile(“%Temp%\”,””) ;
  MsgBox x
以前聞いた時には,もっと面倒なイメージがあったがそれ程でもない.
  ただ COM の部分が確定していない(平行してコードを書いている)時は面倒なのかも.


同様に AsHVR.exe をやってみたら,実行時エラー.
型 ‘AsHVR.AsHVRClass’ の COM オブジェクトをインターフェイス型 ‘AsHVR.IAsHVR’ にキャストできません。
IID ‘{1625D8E7-B67B-4592-878F-ECFAD1227734}’ が指定されたインターフェイスの COM コンポーネント上での QueryInterface 呼び出しのときに次のエラーが発生したため、この操作に失敗しました:
インターフェイスがサポートされていません (HRESULT からの例外: 0x80004002 (E_NOINTERFACE))。
0x80004002 (E_NOINTERFACE)
これが面倒だったのかも?


他にも,T54W7U64 環境で,DevXP\~\CSCallL\bin\Debug\CSCallL.exe を起動して,「ボタン 1」 もエラーとなる.
  これは,AsFile.dll の 64 ビット版がないことによるものと思うが,…
  うまい方法がよくわからない.


2013/08/06
既存の AsHVR.exe などがうまく動作しないのは変わらないが,
  VC 8 で新規に MFC ダイアログベースのプロジェクト TstComE を作成.オートメーションを有効に.
  メソッド GetTmpPath を追加して実行するとうまくいった.


C++/CLI コンソール AP として作成.
// CPCallL.cpp : メイン プロジェクト ファイルです。
#include "stdafx.h"
using namespace System;
using namespace System::Windows::Forms;
int main(array<System::String ^> ^args)
{
  {
    iSFile::SearchF^ srchF = gcnew iSFile::SearchF();
  // String^ selFile = srchF->BrowseFile("%Temp%\\","") ;
  // MessageBox::Show(selFile) ;
    }
  {
    AsHVR::AsHVR^ hmpvr = gcnew AsHVR::AsHVR();
  // String^ key = hmpvr->GetKeySP();
  // MessageBox::Show(key);
    }
  {
    TstComE::TstComE^ tce = gcnew TstComE::TstComE() ;
    String^ tmpFile = tce->GetTmpPath() ;
    MessageBox::Show(tmpFile) ;
    }
  return 0;
  }
今度は TstComE 以外うまく動作しない.

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ



コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください