我正在尝试创建一个连接到打开的应用程序的多个实例(WRQ反射).使用以下方法连接到已打开的第一个实例:
Session appInstance = (Marshal.GetActiveObject("Reflection4.Session.8") as Session);
Run Code Online (Sandbox Code Playgroud)
但我希望能够连接到多个实例.我一直在做很多研究并发现了一些有用的链接,比如这个,但是这个解决方案在这种情况下不会起作用,因为所有打开的实例都有相同的progId.
我也尝试过查看窗口句柄,每个实例都明显不同.使用这个:
Process[] processes = Process.GetProcessesByName("r4win");
foreach (Process p in processes)
{
IntPtr windowHandle = p.MainWindowHandle;
string handle = windowHandle.ToString();
MessageBox.Show(handle);
}
Run Code Online (Sandbox Code Playgroud)
但是我无法弄清楚如何通过窗口句柄创建与窗口的连接.
任何帮助表示赞赏.
附加代码:
void TestROT()
{
// Look for open instances
string[] progIds = {"Reflection4.Session.8"};
List<object> instances = GetRunningInstances(progIds);
foreach (object refleObjs in instances)
{
Session session = refleObjs as Session;
session.Transmit("12345");
}
}
Run Code Online (Sandbox Code Playgroud)
对于这种情况,我有2个目标应用程序实例正在运行.在上面的代码中,它将字符串12345发送到应用程序的同一个实例,两次.
我需要它将12345发送到第一个实例,然后12345发送到第二个实例.
我有2个<Select>。第二个中的值取决于在第一个上所做的选择。当我在第一个更改所选项目时,第二个更新的可用选项。但是,如果我已经在第二个选项中进行了选择,那么即使根据对第一个选择的更改它不应该可用,该选项也会保持选中状态。
当对第一个选择进行更改时,如何将第二个选择重置为不选择任何内容?
第一选择:
<FormItem {...formTailLayout}>
<FormTitle>Operation</FormTitle>
{getFieldDecorator('Operation', {
rules: [
{
required: true
}
]
})(
<Select
showSearch
placeholder="Select an option"
onChange={this.handleOperationChange}
>
{operations.map(operation => (
<Option value={operation.operation_id}>
{operation.operation_name}
</Option>
))}
</Select>
)}
</FormItem>
Run Code Online (Sandbox Code Playgroud)
第二选择:
<FormItem {...formTailLayout}>
<FormTitle>Metric</FormTitle>
{getFieldDecorator('Metric', {
rules: [
{
required: true
}
]
})(
<Select
showSearch
placeholder="Select an operation first"
onChange={this.handleMetricChange}
>
{matrics
.filter(
metric => metric.operation_fk === operation_fk
)
.map(metric => (
<Option value={metric.metric_name}>
{metric.metric_name}
</Option>
))}
</Select>
)}
</FormItem>
Run Code Online (Sandbox Code Playgroud) 在IE中,很容易“在Excel中打开” URL到网络或Internet位置上的文件。在Chrome中是否可能相同?该文件必须从当前位置打开,而不是从下载的副本中打开。因此,当用户保存任何更改时,他们将保存到原始位置。IE Tab也无法选择,我们无法安装chrome扩展程序。
我尝试过的事情:
1)Web协议:“ ms-excel:ofe | u”
<a href="ms-excel:ofe|u|//server/folder/Test.xls">Open in Excel</a>
Run Code Online (Sandbox Code Playgroud)
2)ActiveX(我知道它不能与Chrome一起使用,添加是为了完整性)
<input type=button onClick="test()" value="javascript solution">
<script type="text/javascript">
function test() {
var Excel = new ActiveXObject("Excel.Application");
Excel.Visible = true;
Excel.Workbooks.Open("//server/folder/Test.xls");
}
</script>
Run Code Online (Sandbox Code Playgroud)
3)直接链接到文件:
<a href="//server/folder/Test.xls">Click</a><br />
Run Code Online (Sandbox Code Playgroud)
这只是将文件下载到本地计算机,可以将其设置为下载后立即打开,但是更改将保存在本地。
更新: 我发现尝试使用以上方法1来访问共享点中存储的文件。
<a href="ms-excel:ofe|u|http://sharepointserver/sites/rptserver/Test.xls">Open in Excel</a>
Run Code Online (Sandbox Code Playgroud)
有什么理由对共享点文件有效,但对存储在网络位置的文件无效?
更新:
我已经找到了有关Web协议的文档,ms-excel:ofe|u|其中仅说明了该文档http并https受支持。
*赏金仅授予以下特定问题的答案:
有什么办法可以在chrome中使用excel在excel中打开文件,该文件的路径是本地或网络存储位置,而不是http / https url?
我有一个趋势图,如下所示:
<svg width="175" height="50" viewBox="0 0 175 50" fill="true" stroke-width="2" stroke-linecap="round" stroke="black"><defs><linearGradient id="react-trend-vertical-gradient-9449655103672434" x1="0%" y1="0%" x2="0%" y2="100%"><stop offset="0" stop-color="#316BBE"></stop><stop offset="1" stop-color="#316BBE"></stop></linearGradient></defs><clipPath id="cut-off-bottom"><rect x="0" y="-8" width="175" height="50"></rect></clipPath><path id="react-trend-9449655103672434" d="M 8,42
L 16.47383891803467,26.77906669817169
S 19.357142857142858,21.6 25.035714285714285,23.3
L 25.035714285714285,23.3
S 30.714285714285715,25 34.51372707642143,20.450228708486538
L 36.39285714285714,18.2
S 42.07142857142857,11.399999999999999 47.75,18.199999999999996
L 47.75,18.2
S 53.42857142857143,25 58.349935306257734,17.63343017050729
L 59.23065242856076,16.31512403775182
S 64.78571428571428,8 69.09240847758271,17.025097514028683
L 73.2924185202937,25.826627993470822
S 76.14285714285714,31.8 81.82142857142857,28.4
L 81.82142857142857,28.4
S 87.5,25 92.42420103267804,20.577510015934436
L 93.17857142857143,19.9
S 98.85714285714286,14.8 103.0970844759733,21.146579278500923
L 106.53759956873661,26.296532687794436
S 110.21428571428571,31.8 115.89285714285714,35.2
L 115.89285714285714,35.2
S 121.57142857142857,38.6 124.42186719399201,32.62662799347083
L …Run Code Online (Sandbox Code Playgroud) 我有一个List<string>我需要按字母数字排序,但它也有一个小数.样本看起来像这样:
E11.9
E13.9
E10.9
E11.65
E10.65
E11.69
E13.10
E10.10
我需要的输出应如下所示:
E10.10
E10.65
E10.9
E11.69
E11.9
等.
我试过这段代码:
result.Sort((s1, s2) =>
{
string pattern = "([A-Za-z])([0-9]+)";
string h1 = Regex.Match(s1, pattern).Groups[1].Value;
string h2 = Regex.Match(s2, pattern).Groups[1].Value;
if (h1 != h2)
return h1.CompareTo(h2);
string t1 = Regex.Match(s1, pattern).Groups[2].Value;
string t2 = Regex.Match(s2, pattern).Groups[2].Value;
return int.Parse(t1).CompareTo(int.Parse(t2));
});
Run Code Online (Sandbox Code Playgroud)
但它似乎只是首先按字母排序,然后按小数位前的数字排序.所以这就是我得到的:
E10.9
E10.65
E10.10
E11.9
E11.69
等.
我在正则表达式中遗漏了什么吗?或者有更好的方法来实现这一目标吗?