Express Talk というソフトフォンをダウンロードしましたが、このプログラムに欠けているのは、sip プロトコルを使用して簡単にクリックしてダイヤルできることです。だから私は、クリックされた番号を受け入れ、その情報を Express Talk に渡して番号を自動ダイヤルする単純な C++ プログラムを作成するために最善を尽くそうと考えました。終わり。私は c++ にあまり詳しくないので、ここにいる誰かが何が問題なのかを理解するのを手伝ってくれることを願っています。ファイルは C:/Program Files/NCHSoftware/Talk/talk.exe にあります。コマンド ラインを使用して番号をダイヤルするには、/talk.exe -dial "5555555555" と入力します。これにより、プログラムが開き、番号がダイヤルされます。
このプログラムは機能し、dial.exe と呼ばれます (talk.exe と同じフォルダーにあります)。
#include <stdlib.h>
#include <windows.h>
int main ()
{
system("start talk.exe -dial 5555555555");
}
ここでの問題: firefox (12.0) に dial.exe への sip リンクを処理するように指示してから、sip リンクをクリックしようとすると、次のエラーが表示されます。してから、もう一度やり直してください」
この時点では、電話番号の変数を talk.exe に渡すことについても心配していません。sip リンクをクリックしたときに開くことを確認したいだけだからです。おそらく、talk.exe を見つけるのに苦労している理由は、何らかの理由で mozilla がプログラムのディレクトリを変更する可能性があるためではないでしょうか? よくわからないので、talk.exeのフルパスをプログラムに入れようとしているので試してみました
#include <stdlib.h>
#include <windows.h>
int main ()
{
system("start \"C:\\Program Files\\NCHSoftware\\Talk\\talk.exe -dial 5555555555\"");
}
実際にプログラムを実行せずに、コマンド プロンプト ウィンドウを開くだけです。もちろん、Firefox のアプリケーション ウィンドウで何らかの方法で引数を渡すことができれば、これはすべて解決できますが、それは許可されていません。誰でもデバッグを手伝ってもらえますか? もうどうしたらいいのかわからない。
現在のコードは次のとおりです。
#include <stdlib.h>
#include <windows.h>
#include <direct.h>
#include <string.h>
#include <string>
//Written to implement click-to-dial functionality for soft phones (assuming softphones allow arguments to be passed to dial the phone.)
int main ()
{
_chdir("C:\\Program Files\\NCHSoftware\\Talk\\");
if (argc > 1 && _strnicmp(argv[1], "sip:", 4))
{ // match "sip:" prefix, case insensitive
std::string cmd = "start talk.exe -dial " + std::string(argv[1]+4);
system(cmd.c_str());
}
}