我以为我对此有了答案,但是我玩的越多,我就越认为它是Powershell的设计缺陷.
我想拖放(或使用Send-To机制)将多个文件和/或文件夹作为数组传递给Powershell脚本.
测试脚本
#Test.ps1
param ( [string[]] $Paths, [string] $ExampleParameter )
"Paths"
$Paths
"args"
$args
Run Code Online (Sandbox Code Playgroud)
尝试#1
我使用以下命令行创建了一个快捷方式,并将一些文件拖到它上面.这些文件作为单独的参数出现,这些参数首先匹配脚本参数的位置,其余部分放在$ args数组中.
尝试#1的快捷方式
powershell.exe -noprofile -noexit -file c:\Test.ps1
Run Code Online (Sandbox Code Playgroud)
包装脚本
我发现我可以用包装脚本做到这一点......
#TestWrapper.ps1
& .\Test.ps1 -Paths $args
Run Code Online (Sandbox Code Playgroud)
包装脚本的快捷方式
powershell.exe -noprofile -noexit -file c:\TestWrapper.ps1
Run Code Online (Sandbox Code Playgroud)
批处理文件包装器脚本
它通过批处理文件包装脚本工作...
REM TestWrapper.bat
SET args='%1'
:More
SHIFT
IF '%1' == '' GOTO Done
SET args=%args%,'%1'
GOTO More
:Done
Powershell.exe -noprofile -noexit -command "& {c:\test.ps1 %args%}"
Run Code Online (Sandbox Code Playgroud)
尝试回答
Keith Hill提出了使用以下快捷命令行的优秀建议,但它没有正确传递参数.当到达Test.ps1脚本时,带有空格的路径被拆分.
powershell.exe -noprofile -noexit -command "& {c:\test1.ps1 $args}"
Run Code Online (Sandbox Code Playgroud)
有没有人找到一种方法来做到这一点没有额外的脚本?
我正在编写一个页面,它使用jQuery for AJAX进行大量的原位编辑和更新.
我遇到了一个问题,可以通过下面描述的工作流程进行总结:
问题出现在上面的第6点.我的主页面中的代码如下所示:
$(document).ready(function(){
$('img#inserted_form_btn').click(function(){
$.ajax({'type': 'POST', 'url': 'www.example.com', 'success': function($data){
$(data.id).html($data.frm);
}), 'dataType': 'json'}
});
});
Run Code Online (Sandbox Code Playgroud)
但是,事件未被触发.我认为这是因为首次加载文档时,页面上不存在img#inserted_form_btn元素(由于在页面上单击了一个元素(未在上面的代码中显示),因此将其插入到DOM中保持问题简短)
因此,我的问题是:如何让jQuery能够响应页面加载后添加到DOM中的元素中发生的事件?
我有这样的字符串String str = "la$le\\$li$lo".
我想拆分它以获得以下输出"la","le\\$li","lo".\ $是一个$转义所以它应该留在输出中.
但是,当我做 str.split("[^\\\\]\\$")ÿ得到"l","le\\$l","lo".
从我得到的我的正则表达式匹配$和i $然后删除.知道如何让我的角色回来吗?
谢谢
如何在.net中检测Windows操作系统版本?
我可以使用什么代码?
我有一个具有自定义边框/标题的窗口,为了做到这一点,我处理 WM_NCPAINT 消息。我的标题有两种背景,一种较亮的用于活动窗口,一种较暗的用于背景窗口。
但在某些情况下,例如当窗口失去/获得焦点时,我的标题没有更新,所以我以错误的背景结束。
到目前为止,我已经处理了 WM_NCACTIVATE,并发送了一个 RedrawWindow(hwnd, NULL, NULL, RDW_FRAME|RDW_INVALIDATE),但这会导致整个窗口重新绘制。您对此有什么建议吗?
我试图用来ConfigurationManager.AppSettings.GetValues()检索单个键的多个配置值,但我总是收到一个只有最后一个值的数组.我的appsettings.config样子
<add key="mykey" value="A"/>
<add key="mykey" value="B"/>
<add key="mykey" value="C"/>
Run Code Online (Sandbox Code Playgroud)
而我正试图访问
ConfigurationManager.AppSettings.GetValues("mykey");
Run Code Online (Sandbox Code Playgroud)
但我只是得到了{ "C" }.
关于如何解决这个问题的任何想法?
我有一个绑定到DataTable的DataGridView,它有一个double的列,值必须介于0和1之间.这是我的代码
private void dgvImpRDP_InfinityRDPLogin_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
if (e.ColumnIndex == dtxtPercentageOfUsersAllowed.Index)
{
double percentage;
if(dgvImpRDP_InfinityRDPLogin[e.ColumnIndex, e.RowIndex].Value.GetType() == typeof(double))
percentage = (double)dgvImpRDP_InfinityRDPLogin[e.ColumnIndex, e.RowIndex].Value;
else if (!double.TryParse(dgvImpRDP_InfinityRDPLogin[e.ColumnIndex, e.RowIndex].Value.ToString(), out percentage))
{
e.Cancel = true;
dgvImpRDP_InfinityRDPLogin[e.ColumnIndex, e.RowIndex].ErrorText = "The value must be between 0 and 1";
return;
}
if (percentage < 0 || percentage > 1)
{
e.Cancel = true;
dgvImpRDP_InfinityRDPLogin[e.ColumnIndex, e.RowIndex].ErrorText = "The value must be between 0 and 1";
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我在dgvImpRDP_InfinityRDPLogin_CellValidating火灾时的问题dgvImpRDP_InfinityRDPLogin[e.ColumnIndex, e.RowIndex].Value将包含编辑前的旧值,而不是新值.
例如可以说旧值是1.1和我进入3,上面的代码,当你退出电池,并运行dgvImpRDP_InfinityRDPLogin[e.ColumnIndex, …
下面的示例编译良好,但我无法弄清楚如何在这种特殊情况下分离运算符 <<() 的声明和定义。
每次我尝试拆分定义时,朋友都会造成麻烦,并且 gcc 抱怨运算符 <<() 定义必须恰好采用一个参数。
#include <iostream>
template <typename T>
class Test {
public:
Test(const T& value) : value_(value) {}
template <typename STREAM>
friend STREAM& operator<<(STREAM& os, const Test<T>& rhs) {
os << rhs.value_;
return os;
}
private:
T value_;
};
int main() {
std::cout << Test<int>(5) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
Operator<<() 应该有一个自由的第一个参数来处理不同类型的输出流(std::cout、std::wcout 或 boost::asio::ip::tcp::iostream)。第二个参数应该绑定到周围类的专门版本。
Test<int> x;
some_other_class y;
std::cout << x; // works
boost::asio::ip::tcp::iostream << x; // works
std::cout << y; // doesn't work
boost::asio::ip::tcp::iostream << y; …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个透明的动画加载图标; 然而(我知道我很懒)我不想自己做.如果这不是这篇文章的正确论坛,请原谅我,过去我刚刚有这么多运气.有谁知道我在哪里可以找到其中之一....它需要非常小(图标大小).
我们想用Java快速构建小部件原型.我们将它们叠加在用专有第三方图形包编写的显示器上.我们发现Java GUI会从窗口管理器中窃取键盘焦点.
窗口管理器是fvwm,我已经尝试配置它以便Java应用程序设置为不获得焦点,而且如果它确实得到焦点将它拿走并将其提供给其他GUI.
如果我使用Java应用程序运行它它不起作用(只要鼠标在Java GUI上它有键盘焦点) - 如果我交换一些标准的X GUI小部件(XEyes)代替Java GUI它就像一个魅力.这为Java不尊重ICCCM的声明(由fvwm的人员维护)提供了一些可靠性.
我想知道其他人是否已经解决了这个问题,如果是这样的话.到目前为止,我有一些选择如何尝试解决这个问题:
1)旋转Java设置,希望如果我关闭焦点,可能会将焦点控制交还给窗口管理器(到目前为止,我在父JFrame上尝试了"setFocusable(false)".这不起作用.线程" http://java.sun.com/javase/6/webnotes/trouble/TSG-Desktop/html/awt.html#gdaao "表示我应该改为"Window.setFocusableWindowState(false)"这个GUI有问题但是我还没有完全相信Java会重新关注焦点
2)使用JNI在Java程序中进行低级X调用.我认为这可能会奏效,但是,我从来没有玩过低级别的X.我不确定我应该使用什么叫(XtSetKeyboardFocus()应该是危险的...)或者我如何识别我正在操作的GUI(在这方面fvwm很好,因为他们有一个GUI,允许你点击另一个GUI,找出它的"名称"和"类")
3)使用"更强大"的窗口管理器.一些不使用ICCCM的窗口管理器可能能够更好地处理Java.当然,有太多的经理人,我不知道该集中精力.同样,很多人似乎都缺乏通过app指定焦点(大多数似乎只关心广泛的政策).