- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用带有 3 个文件的 GUI 编写 PowerShell 脚本:
window1.ps1
- 输入变量并启动start.vbs
start.vbs
- 启动window2.ps1
window2.ps1
- 显示在 window1 中输入的值在 window1 中,我在 textbox1
中输入 value1
并单击按钮
。
通过单击它,value1
应存储到全局变量
中,以便 window2
可以弹出(通过 VBS)并使用 值1
。
window1
中按钮
的代码:
$button_OnClick=
{
$global:value1 = $textBox1.Text
start-process .\start.vbs
}
start.vbs:
Set objShell = CreateObject("Wscript.Shell")
objShell.run("powershell.exe -nologo -file .\window2.ps1"), 0, True
到目前为止一切顺利。据我了解,value1
是一个全局变量,可以在window2.ps1
中使用。
因此 window2
是一个空窗口,只有应显示 value1
的文本。
$label1.Text = "$value1"
但由于某种原因,变量为空,window2
为空。
我错过了什么?我仍在学习 PowerShell,可能会遗漏一些细节。
note: I know the way I open up
window2
via .vbs is weird. But that way, the GUI opens up without any PowerShell window in the background.
最佳答案
“全局变量”并不是神奇地可供计算机上的每个进程使用的东西。您正在启动两个完全独立的 PowerShell 进程。他们的任何东西都不会被共享。
如果您想在第二个 PowerShell 进程中使用该值,则需要将该值作为命令行参数提供给第二个 PowerShell 进程。
这意味着您必须将第一个 PowerShell 脚本生成的值作为命令行参数提供给中间 VBScript,因为这也是一个完全独立的过程。
第一个 PowerShell 脚本使用两个参数(脚本名称和值)调用 wscript.exe:
$button_OnClick=
{
$value1 = $textBox1.Text
Start-Process wscript.exe "window2.vbs","`"$value1`""
}
假设用户输入了 Hello World!
,这将执行命令行(注意引号,它们确保带空格的值不会被视为单独的参数):
wscript.exe window2.vbs "Hello World!"
然后,VBS 中介可以从第一个命令行参数中读取 Hello World!
(引号将被删除,因此我们需要在下一次调用时将它们添加回来):
value1 = WScript.Arguments.Unnamed(0)
Set objShell = CreateObject("Wscript.Shell")
objShell.run("powershell.exe -nologo -file .\window2.ps1 """ & value1 & """"), 0, True
现在执行以下命令行:
powershell.exe -nologo -file .\window2.ps1 "Hello World!"
然后,第二个 PowerShell 脚本可以从其第一个命令行参数中提取 Hello World!
,就像 VBScript 所做的那样(引号将再次被删除):
$label1.Text = $args[0]
<小时/>
我建议您制作一个 VBScript windowless.vbs
,它可以无窗口运行任何命令:
' windowless.vbs
For Each arg In WScript.Arguments
If InStr(arg, " ") > 0 Then
cmd = cmd & """" & arg & """ "
Else
cmd = cmd & arg & " "
End If
Next
CreateObject("WScript.Shell").Run(Trim(cmd)), 0, True
然后在 PowerShell 脚本中使用它
$value1 = "Hello World!"
Start-Process wscript.exe "windowless.vbs","powershell.exe","-nologo","-file window2.ps1","`"$value1`""
这将创建这个命令行
powershell.exe -nologo -file .\window2.ps1 "Hello World!"
这正是我们所需要的,并且可以轻松地在其他情况下重用它。
关于winforms - 如何通过 VBS 将变量从一个 PS 脚本传递到另一个 PS 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60510519/
我有一个 winform 应用程序和一个可观察的设置,如下所示: Form form = new Form(); Label lb = new Label(); form.Controls.Add(l
在 Windows 窗体中实现多项选择选项的最佳方法是什么?我想从列表中强制执行单个选择,从默认值开始。 看起来 ComboBox 是一个不错的选择,但是有没有办法指定一个非空白的默认值? 我可以在代
如何在 WinForm 应用程序中保护我的 ConnectionString? 最佳答案 你不能。尽管您可以在 app.config 文件中加密连接字符串,但应用程序需要能够解密它,因此,始终可以检索
有谁知道像 DotNetBar 那样的 Winforms 面包屑样式导航。 http://www.devcomponents.com/dotnetbar/BreadCrumbHorizontalTre
我正在寻找在 Windows 窗体 C# 中实现多选启用列表框的方法。 有什么建议? 谢谢。 最佳答案 只需添加一个 ListBox控制和设置属性:SelectionMode = SelectionM
我有一个简单的 WinForms 应用程序,用于输入测试用例。自从我将此应用程序升级到 .NET 4.0 并将新的标签页添加到标签页控件以根据 XSD 架构验证 XML 以来,该应用程序一直随机崩溃。
在老式的 MFC 中,DDX 例程内置了表单条目的验证。例如,可以自动检查用户是否在用于数字输入的文本框中输入了字符串。 Winforms中有这样的机制吗?显然,可以为“onChange”等类型的事件
我主要具有 ASP.Net 背景,并具有一些 MVC 知识。我也做了一些 Silverlight 和 MVVM,但是我现在即将转向 Winforms,我对它的经验很少,所以我想知道如何处理 MVP。
简单的问题,虽然办公室里似乎没有人知道,而且我找不到一个好的方法来问谷歌这个问题。在 winforms 中,如果您有一个处理事件的函数(在本例中是在 focusLost 上),那么该函数是否与触发该事
在 Winform 中,我有一个组框,其中有几个文本框控件。如果我删除组框,文本框也会被删除。它们以某种方式与 Groupbox 联系在一起,尽管我没有故意做任何事情来实现这种情况。问题 - 如何删除
我可以在哈希表中设置表单元素: $Hash = @{} $Hash.Main = New-Object System.Windows.Forms.Form $Hash.Main.Left = 0 $H
我是 Windows 开发新手。我开发了一个 WinForm 应用程序,它与串行设备通信并在图表上绘制数据。该应用程序应每天 7/7 24 小时运行。代码执行正确,但执行几个小时后,UI 卡住,操作系
有没有办法记录 Win Forms 应用程序中的所有点击?我想拦截点击并记录该操作以及导致该操作的控件的名称。 这可能吗? 提前致谢。 更新:我正在寻找一个应用程序范围的解决方案,是否没有办法将监听器
我不知道这是否会影响其他控件,但对于列表框和选中列表框,列表框的底部仅以一定的间隔随表单调整大小。 假设我有一个表单和一个列表框,该列表框与表单边缘的所有边都有 2px 间隙,并锚定在所有四个边上。现
我在大多数 WinForms 控件的设计 View 中看到“Tag”属性。我从未使用过此标签,并且想知道为什么我要使用它。 最佳答案 它允许您使用控件存储一些自己的数据。它在树控件中最有用,您可能希望
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
如果有,有人吗?鱼眼 (菜单/ Pane )窗体在 Ajax 应用程序中常见的控件: 例如:http://interface.eyecon.ro/demos/fisheye.html 用 google
这是 Determine Label Size based upon amount of text and font size in Winforms/C# 的倒数. 给定一个高度固定但宽度可变的矩形
我们公司正在研究为我们的开发团队采购 22"显示器。当前唯一的问题是我们的用户将使用较小的屏幕。 我们尝试使用屏幕网格工具(gridmove 和 nvidia 的 utils),但它们并不完全现实。
我有一个 winforms 应用程序,它在网络服务请求期间被锁定 我已经尝试使用 doEvents 来保持应用程序解锁,但它仍然不够响应, 我怎样才能绕过这个锁定,让应用程序始终响应? 最佳答案 最好
我是一名优秀的程序员,十分优秀!