将电话传递给默认的 windows 软电话,而其 运行
pass telephone to default windows softphone while its running
我为 windows 开发了一个软电话,我知道如何通过阅读此 question 将其注册为默认的 tell 应用程序,但我不知道如何 get 从网络应用程序或另一个 win 应用程序发送的参数,而我的软电话是 运行。
从网络应用调用 tell 应用的标准代码是这样的:
window.open("tel: 05525825");
如果您已经为方案 tel:
注册了您的应用程序并且命令是 "yourapp.exe %1",那么您可以从命令行参数中读取它们,如 How to access command line parameters outside of Main in C# 中所述:
string arguments = Environment.GetCommandLineArgs();
string phoneNumber = arguments[1];
当然,在直接访问和使用数组元素之前,您需要进行一些健全性检查。
如果您正确设置协议 URL 密钥,您的应用程序将 运行 与命令行中的数据(例如 args[]
在 main()
中)
要将数据传递给应用程序的 已经 运行 宁 实例,最简单的方法是使用 [=14= 提供的 StartupNextInstance
事件] 并重新处理新的命令行:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using Microsoft.VisualBasic.ApplicationServices;
namespace Foo
{
static class Program
{
[STAThread]
static void Main(string[] args)
{
var applicationBase = new ThisWindowsApplicationBase();
applicationBase.StartupNextInstance += (sender, e) => { applicationBase.HandleCommandLine(e.CommandLine); };
applicationBase.Run(args);
}
}
class ThisWindowsApplicationBase : WindowsFormsApplicationBase
{
internal ThisWindowsApplicationBase()
: base()
{
this.IsSingleInstance = true;
this.MainForm = new Form1();
this.HandleCommandLine(Environment.GetCommandLineArgs().Skip(1));
}
internal void HandleCommandLine(IEnumerable<string> commandLine)
{
this.MainForm.Text = "Processing: " + commandLine.FirstOrDefault();
}
}
}
请注意,这不会在第一个 运行 时触发。
我为 windows 开发了一个软电话,我知道如何通过阅读此 question 将其注册为默认的 tell 应用程序,但我不知道如何 get 从网络应用程序或另一个 win 应用程序发送的参数,而我的软电话是 运行。
从网络应用调用 tell 应用的标准代码是这样的:
window.open("tel: 05525825");
如果您已经为方案 tel:
注册了您的应用程序并且命令是 "yourapp.exe %1",那么您可以从命令行参数中读取它们,如 How to access command line parameters outside of Main in C# 中所述:
string arguments = Environment.GetCommandLineArgs();
string phoneNumber = arguments[1];
当然,在直接访问和使用数组元素之前,您需要进行一些健全性检查。
如果您正确设置协议 URL 密钥,您的应用程序将 运行 与命令行中的数据(例如 args[]
在 main()
中)
要将数据传递给应用程序的 已经 运行 宁 实例,最简单的方法是使用 [=14= 提供的 StartupNextInstance
事件] 并重新处理新的命令行:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using Microsoft.VisualBasic.ApplicationServices;
namespace Foo
{
static class Program
{
[STAThread]
static void Main(string[] args)
{
var applicationBase = new ThisWindowsApplicationBase();
applicationBase.StartupNextInstance += (sender, e) => { applicationBase.HandleCommandLine(e.CommandLine); };
applicationBase.Run(args);
}
}
class ThisWindowsApplicationBase : WindowsFormsApplicationBase
{
internal ThisWindowsApplicationBase()
: base()
{
this.IsSingleInstance = true;
this.MainForm = new Form1();
this.HandleCommandLine(Environment.GetCommandLineArgs().Skip(1));
}
internal void HandleCommandLine(IEnumerable<string> commandLine)
{
this.MainForm.Text = "Processing: " + commandLine.FirstOrDefault();
}
}
}
请注意,这不会在第一个 运行 时触发。