- 你好,寻求一些帮助.
我们目前有一个winform应用程序,用于在我们公司进行审批.该应用程序将html电子邮件发送给"审批者",他们阅读电子邮件中的相关信息,然后单击启动应用程序的超链接,以便他们进行审批.
目前,这是通过在电子邮件html中包含以下内容来完成的:
<a href=file:///C:\Temp\test.exe>Click to Approve</a>
在我们可以使用几个安全警告之后,这会正确启动应用程序.我们使用Outlook 2010.
现在,为了改进这个过程,我需要传递一个参数来识别应用程序的批准者.如果我从一个Windows快捷方式传递参数,这可以正常工作,但是,我无法找到一种方法将参数传递给href属性中的exe,以便从电子邮件中执行.我到处寻找,除了问题之外什么都没发现.
我试过以下无济于事:
<a href=file:///C:\Temp\test.exe approverID>Click to Approve</a>
<a href=file:///C:\Temp\test.exe 'approverID'>Click to Approve</a>
<a href="file:///C:\Temp\test.exe approverID">Click to Approve</a>
此外,我尝试使用JavaScript,它从HTML页面工作正常,但不是从Outlook中的电子邮件.
我想也许这种方法存在安全威胁,因此它是不可能的,但如果我可以通过电子邮件成功运行exe,为什么我不能运行带参数的exe?它没有意义.
谢谢您的帮助.
狮子座
我有几种方法具有folling结构:
public void doWhatever()
{
methodToPrepareEnvironment();
// do something
methodToResumeEnvironment();
}
Run Code Online (Sandbox Code Playgroud)
我所有的"doWhatever"类型方法都调用这些准备/恢复方法,所有这些方法都只调用了1个prepare和1个resume方法.是否有更好的方法来实现这一点,而无需在所有我的doWhatever方法的开头和结尾调用准备和恢复方法?我觉得我错过了一些非常基本的东西.请注意,doWhatever方法无法组合,它们每个都需要独立,每个方法都需要准备环境,完成一些任务然后恢复环境.
谢谢.
以下javascript代码无法正常运行。(我使用的是IE9,不能使用其他浏览器或JQuery):
var elems = document.getElementsByClassName("EditableTextBox");
for (var i = 0; i < elems.length; i++) {
elems[i].className = "Zero";
}
Run Code Online (Sandbox Code Playgroud)
发生的情况是,只有某些具有className“ EditableTextBox”的元素被更改为className“ 0”,许多元素仍保留为className“ EditableTextBox”。没有其他代码可能会导致此问题。此代码是刷新屏幕之前我执行的代码的最后一部分。
我认为问题出在.getElementsByClassName找不到所有正确的元素,但是:
var elems = document.getElementsByClassName("EditableTextBox");
for (var i = 0; i < elems.length; i++) {
elems[i].value = "test";
}
Run Code Online (Sandbox Code Playgroud)
这段代码确实将所有正确元素的值更改为“ test”,因此.getElementsByClassName确实可以找到所有元素。
我不明白是什么引起了这里的问题。下面是我的解决方法,但是在这里有更多经验的人可以解释为什么第一段代码不起作用吗?谢谢。
如果有人感兴趣,我的解决方法:
var elems = document.getElementsByTagName("input");
for (var i = 0; i < elems.length; i++) {
if (elems[i].className == "EditableTextBox")
elems[i].className = "Zero";
Run Code Online (Sandbox Code Playgroud)
谢谢。