我已经下载了一个名为 Express Talk 的软件电话,该程序缺少的一件事是能够使用 sip 协议轻松单击拨号。所以我想我会尽力创建一个简单的 c++ 程序,它会接受点击的号码,然后将该信息传递给 Express Talk 以自动拨打号码,我尝试了一些通常会导致我死掉的事情结尾。我对 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 链接,我会收到错误消息:“Windows 找不到 'talk.exe'。确保您输入了正确的名称,然后再试一次”
在这一点上,我什至不关心将电话号码变量传递给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());
}
}