WindowsXPのダイヤラ(TAPI32.DLL)のコールについて

このQ&Aのポイント
  • WindowsXPのダイヤラ(TAPI32.DLL)のコールについて
  • WindowsXPのダイヤラ(TAPI32.DLL)を使用して顧客管理システムから電話をかける方法について説明します。
  • WindowsXPのダイヤラ(TAPI32.DLL)を使用して自動で電話をかけるシステムを構築する方法をご教授ください。
回答を見る
  • ベストアンサー

WindowsXPのダイヤラ(TAPI32.DLL)のコールについて

現在あるC/S型システムにて顧客管理のシステムを構築しており、 顧客情報から、WindowsXPのダイヤラを呼び出して、登録された 電話番号に自動でモデム接続された電話機から電話をかける システムを構築しております。 利用しているDLLは、TAPI32.DLLで、 tapiRequestMakeCall( string dial, string app, string CallParty, string Comment) という関数をコールしております。 tapiRequestMakeCall( CallNum, "", "", "") ※CallNum=電話番号 のようにプログラム内に記述しておりますが、ダイヤラ起動時に「インターネット通話」で起動してしまいます。 (ダイヤル先が応答しません…のメッセージが出てしまいます。) これを「電話」で起動するように、処理したいのですが、上記の関数の引数に何か設定しなければならないのでしょうか? これまではWindows98で上記関数を利用しておりましたが、98のダイヤラではインターネット通話のようなオプションが無かったので、問題無く動作しておりました。 お手数をおかけいたしますが、 どなたかご教授いただけますでしょうか。 よろしくお願いします。

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

  • ベストアンサー
noname#22650
noname#22650
回答No.3

WindowsXP Home、Excel2000 VBAで検証してみました Public Declare Function tapiRequestMakeCall Lib "TAPI32.DLL" ( _  ByVal Dest As String, _  ByVal AppName As String, _  ByVal CalledParty As String, _  ByVal Comment As String) As Long Sub PhoneCall() Dim Number As String Dim Ret As Long  Number = "117"  Ret = tapiRequestMakeCall(Number, "", "", "") End Sub こちらの環境ではダイアラの設定に関係なく、電話番号で自動的に判断されるようです。 Number = "117" 電話で起動 Number = "117." インターネット通話で起動 Number = "090-1111-1111" 電話で起動 Number = "090/1111/1111" インターネット通話で起動 電話番号に不正な文字があるとインターネット通話で起動するようです。

sl20061127
質問者

お礼

ありがとうございます! 早速試してみます、結果ご報告させていただきます。

sl20061127
質問者

補足

お返事が遅くなり申し訳ありません、 試してみたところ、何とか上手く出来ました! 具体的にはご回答いただいた方法"不正な文字を入れずにダイヤラにも文字列を投げる"ことで、電話による起動が出来ましたが、最初はそれではまだ電話機のほうに発信の処理がわたりませんでした。 後で確認したところ、"ゼロ発信"が必要だったようで、電話番号の頭に「0 」(ゼロスペース)を入れてから、ダイヤラに投げるようにすると上手くいきました。 ただ、今度は別の問題が…その状態でダイヤラを起動させたままにしておくと、ブラウザやエクスプローラなどで、フォルダを開いたりページを開いたりする動作があるたびに、左上に通話のスピーカウィンドウが出てくるようになってしまいました。 現在はブラウザ起動するなど、別の作業をする時はダイヤラを終了させる事で凌いでますが…。 この件はもう一つ別件という事で質問させていただきたいと思います。 諸々ご教授いただきありがとうございました!

その他の回答 (2)

noname#22650
noname#22650
回答No.2

編集→オプション→オーディオ/ビデオ 通話に使うデバイス 回線 こちらも電話になってますよね。 電話番号は問題ないですか? http://support.microsoft.com/kb/247192/#appliesto

sl20061127
質問者

お礼

ご回答ありがとうございます、試してみましたが、やはり設定を行っても、プログラムからの呼び出しの際には勝手に「インターネット通話」に設定されてしまうようでした…。

noname#22650
noname#22650
回答No.1

ダイヤラを起動させる。 編集→オプション→通話に使用する回線 は電話になってますか?

sl20061127
質問者

お礼

ありがとうございます、試してみましたが、ダメでした。 オプション画面での設定ですが、"電話"にしております。 関数呼び出しを実行したところ、オプションで設定された 設定が有効にならず、"インターネット通話"になって しまいました。

関連するQ&A

  • API関数(DLL)の呼び出しにおいて、DLLの格納場所は?

    お世話になります。 VB.NETでAPI関数を呼び出す場合にまず、API関数を格納しているDLLを宣言しなけれならないと下記URLにあります。 (http://www.atmarkit.co.jp/fdotnet/dotnettips/024w32api/w32api.html) (a)DllImport属性を利用する方法 <System.Runtime.InteropServices.DllImport("DLL名")> _ Function API関数名(仮引数) End Function (b)Declareステートメントを利用する方法 Declare Function API関数名 Lib "DLL名" (仮引数) そこで、質問なのですが、(a)、(b)どちらの方法で実現する場合においても、DLLの格納場所はC:\Windows\System32でないといけないのでしょうか?(実際にコーディングしてもSystem32フォルダにないとエラーになってしまいます。) 任意のフォルダにDLLを格納し、そこを参照できるようにできるのでしょうか? また、一般常識としてDLLはSystem32フォルダに格納しておかないといけないものなのでしょうか? 以上、よろしくお願いいたします。

  • VBAでDLLが見つからないエラー

    CADのVBA(6.0)ですが、DLLが見つからないエラーが出ます ' こっちはエラーが出ない Public Declare Function SearchVBApath Lib _ "C:\Program Files\AppliTool\VB\DDDD.dll" (ByVal env As String, ByVal s As String) As Integer 'こっちだとエラーが出る Public Declare Function SearchVBApath Lib "DDDD.dll" (ByVal env As String, ByVal s As String)    As Integer VBAプロジェクトファイルとDLLは同じフォルダにおいてあります 上記のようにフルパスだとエラーが出ないのですがDLL名だけだとこの関数のところでエラーがでます このDLL関数宣言行の前の方には他のDLL関数も同じようにパス省略で記述しているのですがそちらにはエラーが出ません どなたかヒント下さい、よろしくお願いします。

  • 電話連動システム

    電話連動システムを構築したいと思っています。 使用OS:windows7 home prepmium 使用アプリケーション ・見えTEL君シングル ・顧客王13 又は ・弥生顧客12 1:着信が来たら顧客管理ソフトが起動する。 2:電話番号にて電話番号登録相手の詳細を表示する。 以上のことをやりたいと思っています。、 今の段階で1までは出来ましたが、2が出来ません。 こういったシステムを構築された方いましたらご教示下さい。 宜しくお願いします。

  • devobj.dllが見つからないため…

    windows7使用してます。 以前立ち上げた時、ブルースクリーンになりそのまま再起動。 その後、上記のようなメッセージが出てきます。 立ち上がりがめちゃくちゃ遅いです。 でも遅いながらも立ち上がるとそれ以降は普通に動きます。 (普通、と言っても我が家はインターネットしか使用しないのでそれのみの話ですが) レジストリが壊れているのかと、レジストリを修復する無料ソフトをダウンロードするも、表記の「devobj,dllが見つからないため……再インストールしてください」と出て、受け付けない。 じゃあ再インストールすれば…とネットでdevobj.dllなるものを探しても拡張子が開くものではないのでその先に進めない。 だいたい、devobj.dllとは何なのでしょう? ちなみに、システムの復元も「復元ポイントがありません」となって先に進めません。 結局、OSを再インストールする以外方法はないのでしょうか? gatewayのノートパソコンなのですが、2月に購入後ほぼインターネットしか利用していないにもかかわらず、5月にも原因不明のシステムエラーで再インストールしています。 2,3ヶ月置きに再インストールしていることになります… 相性の悪いPCにぶち当たっただけなのでしょうか…? 今後もこんなことが続くかと思うとがっかりです…

  • C++からC#のdllを参照する際、引数内に構造体があった場合の処理

    いつもお世話になっております。 http://satoshi.web5.jp/memo/connect_dll.htm VC++2008のMFCプロジェクトにて、C#のdllの関数を扱いたく、 上記サイトを参考に実装してみました。 上記サイトでも挙げているように、C#dll内の関数の引数が、 整数・文字列の場合は、うまく動作するのですが、 引数に構造体を渡し、dllにて構造体のデータを設定してやる関数にて、 引数の構造体ポインタを、どのように渡してやれば良いのかが 分かりません。 具体的には、 VARIANTARGの配列をnewし(変数pVarg)、 pVargに型と変数をセットして、Invoke関数に渡しますが、 その際の、pVargにセットしてやる型が分かりません。 このような場合は、どうすれば良いのでしょう? よろしくお願いします。

  • コールバック通話の問題点

    コールバック通話問題点 コールバック問題点 コールバックって使ったことがないのですが今度使いたいと思ってます 何故ややこしいシステムをつかいたいと思ったかというと https://www.hanacell.com/japan/ こちらのジャパンsimカードを使おうと思ったのがきっかけでした はっきり言って私はさほど電話しないし、ip電話の番号だけでもはっきり言って生活できそうな習慣なのですが、やはり音質が悪く気を使う相手(上司や目上の方や取引先)には一応は電話回線番号じゃないと悪い印象を持たれたらまずいと思ったからです。 そしてip電話ではフリーダイヤルや緊急通話もできません。ブラステルのアプリを使えば非通知設定ですが固定電話発信扱いのフリーダイヤルとしてつかえますし、緊急電話も本署に電話すれば対応できるのですが、それだけでカバーしきれないフリーダイヤルの番号もあるのもジャパンsimカードの優位性として感じました。  ジャパンsimカードの問題点はなんと言っても通話料の高さです  sms一通 およそ13円  通話一分 およそ95円  smsはどうしようもないのですが通話料に関しては楽天電話などをつかって安くできないかと模索しました。すると同じ事を考えている人が多く検証結果として、ジャパンsimの通話料と楽天電話の通話料二重請求されたらしいです。    そこでコールバックという方法なら二重請求されずかけられるとの記事を見つけました。   http://blog.jikoman.jp/2014/08/japan-sim.html?m=1    しかし一回も試したことがないシステムなので問題はないのでしょうか?   ここのコールバックを使う予定です  ↓ http://www.neocomsystem.com/internal.html

  • dllの取得

    VB2005を使用しています。実行中のシステムで使用しているDLLは Assembly.GetReferencedAssembliesを使用して取得できたのですが、 処理を行う過程で、別のシステム(例:Sample.exe)で実行に必要なDLLを取得する方法がわかりません。 どなたかわかる方がいらっしゃれば是非ご教授ください。 ちなみに、Sample.exeは起動していません。 必要であればProcess.Start()等で一時的に起動しても構いません。 非表示で起動してしまえばいいので… ↓雰囲気的にはこんな感じです。 '指定された実行可能ファイルに必要なDLL一覧を取得 Dim sDllFiles() AS String = XXX.XXXX("C:\Test\Sample.exe")

  • LaLa Callの接続

    ふと携帯電話を観るとLaLa Callのアイコンが待機中と違うので内容を見ると、接続中となっていて番号発信が出来なくなっています。 何処と接続しているのでしょうか? そのほかでは通話可能と通話中のメッセージがあり、通話可能の時は普通にダイヤル発信ができ、通話中のメッセージの時は通話しているときです。 接続中のメッセージ時はダイヤル発信も出来なければ、メッセージが切り替わる事も無いので強制終了させています。 何か設定がわるいのでしょうか? ※OKWaveより補足:「ケイ・オプティコム社のサービス」についての質問です。

  • Packet.dll WanPacket.dll

    Windoows XPでフレッツ接続ツールを利用してインターネットに接続しています。 フレッツ接続ツールが起動せず、インターネットが使えません。 起動させようとすると、下記のメッセージが出ます。 『fct.exe-コンポーネントが見つかりません。 wanpacket.dllが見つからなかったため、このアプリケーションを起動できませんでした。アプリケーションをインストールし直すとこの問題は解決される場合があります。』 ネットで検索したところ「winpcap」というソフトが関係していると思い、再インストールしましたが、上記のメッセージの「wanpacket.dll」の部分が「packet.dll」に変わっただけのメッセージが出ます。 そこで「winpcap」をアンインストールしたところ、今度は下記のようなメッセージが出ました。 『プロシージャ エントリ ポイント PacketStartOemがダイナミックライブラリPacket.dllから見つかりませんでした。』 心当たりとして emsisoft anti-malwareでスキャン中に何か検出され、慌てて削除したような? しなかったような? 「削除できません。手動で....」のようなメッセージが出たような気がしますが覚えてません。慌てていたので システムの復元をしましたが、駄目でした。 フレッツ接続ツールを再インストールしましたが駄目でした。 色々なウィルス除去ソフトでスキャンしたのですが、何にも見つかっておりません。

  • hal.dllがない

    SOTECでWin XPマシンを購入しました。必要なソフトのインストールは順調でしたが、最後になって 「次のファイルが存在しないか、または、壊れているためWindowsを起動できませんでした <Windows root>\system32\hal.dll 上記のファイルをインストールし直してください」 と出てしまい、F8で回復を試みましたが、パソコンに詳しくない私には無理です。 また、HPの解決方法を見ましたが、 新品で購入直後だった、 先ほどまで順調だった、 ソフトのインストールに丸1日かかっている、 ことから、できればリカバリし直さないでなんとか直らないかと思っています。 \system32\hal.dllをインターネット上やリカバリCDとかでなんとか仕入れて入れる方法など簡易な方法はないのでしょうか?どなたかお助けください。

専門家に質問してみよう