Delphiでyacscom.dllを使う方法

このQ&Aのポイント
  • Delphi6を使用してType Libより、Yahoo! Audio Conferencing(yacscom.dll)を使用する方法について
  • Delphi6でyacscom.dllを使用する際に発生するエラーについて
  • VB6でのyacscom.dllの使用と比較して、Delphi6でフォームに貼り付けができない場合がある
回答を見る
  • ベストアンサー

Delphiでyacscom.dllを使いたい

Delphi6を使用してType Libより、Yahoo! Audio Conferencing(yacscom.dll)を使用してみようと思ったのですが、エラーになってしまいます。 タイプライブラリからのYACSCOMLib_TLB.pas書き出しはメニューから実行し完了します。それをパッケージに登録も問題はありません。 新規アプリを開き、追加したコンポーネントTYAcsをフォームに置こうとすると「インターフェイスがサポートされていません.」と表示されてしまいます。 同じコンポーネントをVB6で使おうとした場合は、フォームに貼り付けでき使えそうです。 ちなみに、Delphi2010でも確認しましたが、同じ結果です。 yacscom.dllは、ヤフーメッセンジャーV7インストール時に導入されるものを対象で考えています。 Delphiで使えるようにできる方法があれば知りたいと思い、ここに書き込みさせていただきました。判られる方が居られましたら、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#182251
noname#182251
回答No.1

「その他プログラミング」カテゴリー(と云うか、教えてgoo!)の回答者にDelphiユーザーは少ないようです。下記URLのメーリングリストに参加されては? http://www.freeml.com/delphi-users こちらにはDelphiエキスパートが多数いるようです。

ABC_DES
質問者

お礼

そうですね。 試しに使ってみたいって程度でしたので、ひとまずここは締めさせていただきます。 ありがとうございました。

関連するQ&A

  • C#で作成したDLLをDelphiで呼ぶ方法

    プログラミング初心者です。 以下の内容について、どなたか教えてください。 Visual studio 2010(C#のフォームアプリケーション)とCOM(ActiveX Tool bar)で作成されたフォームをDelphiで呼び出すことは可能でしょうか。 上記の内容を試験的に作成し(Visual studio 2010C#のフォームにCOMから参照したToolbarを貼り付けた物)、プロジェクトの出力方式をクラスライブラリに変更して、DLLの作成までは行えました。しかし、その先のDelphiからの呼び出し方がわかりません。 上記のDLLを用いてDelphiから呼び出す方法をご存知の方がいれば、教えてください。 なお現在の開発環境は以下の通りです。 Visual Studio 2010(C#) Delphi XE2(Trial) ご教授のほど、よろしくお願い致します。

  • Delphi で作成中 DLL の中で ProcessMessages を行うには?

    ソケット通信を行うDLLをDelphiで作っています。クライアント側になるので、まずは普通のフォームで作成し、動作を確認したのでフォームを除去してDLLに移行しています。 TClientSocket を利用しているので、たとえば通信終了時の OnSocketDisconnect 等、ソケット通信に関連するイベントに応答しなければならないのですが、DLLとして外部からコールされるとき、イベントをどのように待ったらよいのか分かりません。 Application.ProcessMessages が使えれば、それで何とかなりそうなのですが、他の手段はあるでしょうか。 もしくは、TClientSocket 等のコンポーネント以外の方法でソケット通信を実現すれば良いのかも知れませんが、どのような方法があるのか分かりません。 何かアドバイスをいただければ幸いです。

  • Delphi6でVB.NETで作成のDLL呼出

    VisualSutudio2005で作成され提供されているDLLをDelphi6から呼びだしたいと思っています。 提供ファイルとしてあるのは以下のものです。 ・DLLファイル本体 ・XMLファイル 直接は呼びだせない(?)と思ったので、 VB.NETでDLLを作って間に入れて、 下のように呼び出せばいいのかなと考えています。 Delphi6で作成のEXE → VB.NETで作成のDLL(COM登録?) → 対象のDLL まずはDelphi6のEXE→VB.NETのDLLの部分を作って試してみたですが Delphi6のEXEの起動時にエラーとなってしまいます。 「アプリケーションの初期化に失敗しました」 ネットなどで調べてみて作り方は下記のようにしました。 <呼ばれる側:VB.NETのDLL> 1.COMクラスを作る。   ・COM参照可能の設定にした。 (タイプライブラリが作成され、レジストリへのCOM登録は自動でされる?) 2.作成したDLLはCドライブ直下に置いた。 ※下の*****は自動作成された固定値が入っています。  また見やすくするためここでは半角空白を全角空白に変えています。 -------------------------------------------------------------------- Imports System.Windows.Forms <ComClass(Middle_Dll.ClassId, Middle_Dll.InterfaceId, Middle_Dll.EventsId)> _ Public Class Middle_Dll #Region "COM GUID"   ' これらの GUID は、このクラスおよびその COM インターフェイスの COM ID を   ' 指定します。この値を変更すると、   ' 既存のクライアントはクラスにアクセスできなくなります。   Public Const ClassId As String   = "**************************"   Public Const InterfaceId As String = "**************************"   Public Const EventsId As String  = "**************************" #End Region   ' 作成可能な COM クラスにはパラメータなしの Public Sub New() を指定しなければ   ' なりません。これを行わないと、クラスは COM レジストリに登録されず、   ' CreateObject 経由で   ' 作成できません。   Public Sub New()     MyBase.New()   End Sub   Public Sub DispMsg()     Dim MsgRet As MsgBoxResult     MsgRet = MessageBox.Show("VB.NET DLLより表示!", "確認メッセージ", MessageBoxButtons.YesNo, MessageBoxIcon.Information)   End Sub End Class --------------------------------------------------------------------- <呼び出し側:Delphi6のEXE> 1.タイプライブラリの取り込み設定で登録したDLLを選択し、   「コンポーネントラッパーの作成」にチェックを入れてインストールを実行。 --------------------------------------------------------------------- unit Unit1; interface uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls,OleCtnrs,ComObj, OleServer; type  TForm1 = class(TForm)   Button1: TButton;   Edit1: TEdit;   procedure Button1Click(Sender: TObject);  private   { Private 宣言 }  public   { Public 宣言 }  end; var  Form1: TForm1;  //----------  //静的呼出  //----------  procedure DispMsg();Stdcall; external 'c:\Middle_Dll.dll' name 'DispMsg'; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin  //----------  //静的呼出  //----------  DispMsg(); end; end. ----------------------------------------------------------------- Delphi6のEXEはすでにあるものなので、 呼び出し元はDelphi6から変えられませんが、 呼び出し先はC#やC++でも構いません。 (1)Delphi6のEXE→VB.NETのDLLの呼び出しは可能でしょうか? (2)可能でしたら不具合と思われる箇所はどこでしょうか? (3)この方法より良いと思われる方法はありますでしょうか? DLLを作った事がないので見よう見まねで作っています。 気になる点やアドバイス程度でも構いませんので、 どうかよろしくお願いいたします。 == 開発環境 == WindowsXP SP3 Delphi6 Enterprise SP2 VisualSutudio2005 ProffesionalEdition 評価版 .NET Framework 1.1~3.5

  • DLLについて

    VC++でDLLを作成しようとしているのですがいくつか判らない点があります。 1. スタティックライブラリとスタティックリンクライブラリの違い。この二つの用語の違いが分かりません。 2.VBからVC++で作成したDLLを使用するときには.libファイルは必要ないのでしょうか。使用しなくても、使うことができたので。

  • import をせずにmshtmlの機能を使いたい

    mshtml を、インタフェースだけインクルードして DLL に処理依頼をさせたいです。 それをする上で、 DDL と、 タイプライブラリ(.tlb)と、 タイプライブラリヘッダー(.tlh)と、 タイプライブラリインプリメント(.tli)と、 インタフェース定義(.IDL)と、 の関係が分からず、困っています。 最終目的としては、 #import を行うことなく、mshtmlの機能を使いたいのです。 【自分の認識】  アーリーバインディングにせよ、  レイトバインディングにせよ、  オブジェクトへの参照/ポインタから起動されたメソッド呼び出しを,  実際に呼び出される関数本体のアドレスに結び付ける、ということができればよいと認識しています。 しかし、 だとしたら、 コンパイル時にバインドさせるときの なぜ .h と lib のような形にならないのでしょう?? レイトバインディングだとしても、 .h があれば、メソッドの種類とIN/OUTはわかりますよね? タイプライブラリ(.tlb)も、 タイプライブラリヘッダー(.tlh)も、 インタフェース定義(.IDL)も、 似たような役割のように感じ、 #import を行うことなく、mshtmlの機能を使うには、 どれとどれを使えばよいのかわからず困っています。

  • DLLサンプルプログラムが動きません

    Delphi XE5 starter で、 http://www39.atwiki.jp/kgh07155/pages/28.html を参考にして以下のようなプログラムを作りました。 コンパイルはできたのですが、Button1をクリックすると「TDllFormリソースが見つかりません」というエラーメッセージが出ます。 どういう風に修正すればいいのでしょうか? //***************************** //SamoleUnit2.pasの内容 unit Unit_Sample2; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private 宣言 } public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.dfm} function ShowDLLForm(hOwner: HWND): TModalResult; stdcall; external 'DLLSample.dll'; procedure ShowDLLForm2; external 'DLLSample.dll'; // ここまで、DLLを呼び出すための記述。 procedure TForm1.Button1Click(Sender: TObject); begin ShowDLLForm(Application.Handle); // DLL側でフォームを作成した後、 // 通常のフォームのShowModalメソッドと同じ動作をして // 作成したフォームを破棄。 end; procedure TForm1.Button2Click(Sender: TObject); begin ShowDLLForm2; // DLL側でフォームを作成した後、 // 作成したフォームを表示。 end; end. //******************************** //DllSample.dprの内容 library DLLSample; uses System.SysUtils, System.Classes, Windows, Forms, Controls, Unit_DLLForm in 'Unit_DLLForm.pas' {Form1}, Unit_Sample2 in 'Unit_Sample2.pas' {Form2}; type TDllForm = class(TForm) end; {$R *.res} function ShowDLLForm(hOwner: HWND): TModalResult; stdcall; var DllForm:TDllForm; begin Application.Handle := hOwner; // 呼び出し元の情報をDLL側が受け取る。 DllForm := TDllForm.Create(Application); // DLL側でフォームを作成する。 // フォームに配置された各オブジェクトも、自動で作成される。 Result := DllForm.ShowModal; // 返し値を設定。 DllForm.Free; // DLL側で作成したフォームを破棄。 Application.Handle := 0; // 呼び出し元の情報を破棄。 end; procedure ShowDLLForm2; var DllForm:TDllForm; begin DllForm := TDllForm.Create(Application); // DLL側でフォームを作成する。 DllForm.Show; // 作成したフォームを表示。 end; exports ShowDLLForm, ShowDLLForm2; begin end. //******************************** //unit_DLLForm.pasの内容 unit Unit_DLLForm; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; type TForm1 = class(TForm) Button1: TButton; private { Private 宣言 } public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.dfm} end.

  • タイプライブラリのレジストリの登録?

    タイプライブラリのレジストリの登録の方法をご存知の方、お教えください!! tlbはdllのようにレジストリに登録が必要だと思っているのですがどのように 行えばよいのでしょうか?今行いたいのはmsado20.tlbです。多分Officeを 入れれば入ると思うのですが?そうなのでしょうか? そもそもタイプライブラリってどのようなものなのでしょうか? 初心者で質問自体がおかしいかもしれませんが宜しくお願いします。

  • VC++でDLL、エントリポイントが出来ない?

    VisualStudio2010 VC++でDLLを作成し既存のDelphiXE2アプリで利用したいのですが MSのサンプルソースそのままでDLLを作成しても、__stdcall;しても、Delphiの読み込み時に 「エントリポイントが見つかりません」と言われます。 http://msdn.microsoft.com/ja-jp/library/ms235636.aspx ソースはMSのチュートリアルそのままです。 ためしに VS2010のツール dumpbin.exe /exports ????.dll と中身を覗くと 1 0 ooo11104 ?Add@MyMathFuncs@MathFuncs@@SGNNN@Z 2 1 ,,,,,,,,,,,,,, のような表示とSummary 以下しか表示されずスタティックライブラリにしても中身は同じです。 それでは、と他のDLLをいくつか覗いてみましたが、大概のDLLやLIBファイルを覗くと すっきりしたきれいな関数名の一覧がdumpbin /exports で表示されます。 では、DLLになっていないのかというと、作ったDLLを同じVC++でチュートリアル通りに 呼び出すと何の問題もなく使えますので、多分正常なのでしょう。 しかし、どうして エントリポイントの一覧が見える形にならないのか分かりません。多言語で利用するには 必要かと思います。 VC++で作成したDLLやLibが他の環境で使えないとは考えられないので、なにか、常識的な 部分を知らないのだと思いますが、どなたかよろしくお願いします。

  • Windows2000でのDLLエラー

    ReakPlayerやMSNメッセンジャーを起動すると、 「序章314がダイナミックライブラリOLEAUT32.DLLから 見つかりません」 というメッセージボックスが出てきます。 このOLEAUT32.DLLは、WINNT\system32内にあるDLLで、 OSのCDからコピーしようとしても、Windowsが使用して いる為、上書きできません。 なんとか解決する方法はないでしょうか?

  • ネイティブからマネージドdllの呼び出し方法

    主題について、どなたかご教授願います。 主題の詳細として、ネイティブコード(Win32 アプリ C++)からマネージド(Visual studio C#)のDLLを呼び出したいと考えています。 一度、C#フォームアプリケーションにて、ダイアログ(フォーム)をもったアプリを作成し、アプリを作成したプロジェクトの出力をクラスライブラリに変更して.dllと.tlbを作成しました。 しかし、その後の呼び出し方法が不明なため、ネイティブコードからの呼び出し方法がわかっていない状態となっています。 つきましては、下記の質問について、どなたかお答えしていただけないでしょうか? 1:C#でのダイアログをもったDLLの作成は可能か(上記の作成方法が正確か否か) 2:上記が可能であれば、その作成方法 3:C++Win32 アプリケーションからの呼び出し方 サンプルや参考サイトなど、どんな情報でも構いませんので、ご教授のほど、よろしくお願い致します。

専門家に質問してみよう