我们正在开发一个Web应用程序,需要在不同的屏幕上打开两个不同的浏览器实例.显然我们使用的电脑已经具有双显示屏,两台显示器都具有相同的尺寸和分辨率.
我们的想法是,一旦Windows启动,两个应用程序应立即全屏打开,我们首选的浏览器是Chrome,因为它有几个命令可以帮助我们完成任务.
我们成功地向启动程序添加了两个在kiosk模式下打开两个实例的快捷方式,但是我们无法选择打开哪个显示.
快捷方式有这个目标:
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --user-data-dir=c:\temp --kiosk www.domain.com --new-window "%1" --window-position=0,0
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --user-data-dir=c:\temp --kiosk www.domain2.com --new-window "%2" --window-position=1680,0
Run Code Online (Sandbox Code Playgroud)
为了打开两个实例,chromes需要创建一个临时文件,其中包含要打开的实例的信息 (--user-data-dir=c:\temp)
我们尝试使用(--window-position=1680,0)指定打开实例的位置,但Chrome似乎优先考虑最后一个实例打开的最后位置,因此无论命令如何,两个实例都在同一窗口打开.
我们在这个网站上找到了所有可用命令的列表,但列表很大,我们甚至不知道我们在寻找什么:
http://peter.sh/experiments/chromium-command-line-switches/
我找到了这个命令:--display=:0.0 | --display=:0.1 但它似乎没有用,或者我没有正确使用它
有任何想法吗?谢谢.
我正在尝试创建一个新变量,它将使用动态名称的其他变量作为其值.这是我想要做的:
我有一个带有两个值的System.Array:
$Years = 2015, 2016
Run Code Online (Sandbox Code Playgroud)
另一个变量$ Transactions包含各种事务的列表.
我试图通过以下方式使用每个$ Years值:
ForEach($Year in $Years){
New-Variable -Name "Transactions_$Year" -Value $Transactions | Where {$_.Date -like "*.$Year"
Run Code Online (Sandbox Code Playgroud)
现在我想做的事情(在同一个ForEach循环中)是在我创建另一个新变量时使用$ Transactions_ $ Year值,如下所示:
New-Variable -Name "Income_$Year" -Value $Transactions_$Year | Where {$_.Amount -NotLike "-*"} | Measure-Object Amount -Sum | Select -ExpandProperty Sum
}
Run Code Online (Sandbox Code Playgroud)
这可能吗,或者您有什么其他方法可以实现这一目标吗?
使用user32.dllC#,我编写了下面看到的方法。使用窗口的处理手柄,它将在指定{x,y}位置设置窗口位置。
但是,在多监视器环境中,下面的代码仅将窗口位置设置为主监视器。我也希望能够选择哪个显示器。
有人可以解释一下如何使用SetWindowPos或结合其他user32.dll功能来实现吗?
[DllImport("user32.dll", SetLastError = true)]
static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, int uFlags);
private const int SWP_NOSIZE = 0x0001;
private const int SWP_NOZORDER = 0x0004;
private const int SWP_SHOWWINDOW = 0x0040;
public static void SetWindowPosition(Process p, int x, int y)
{
IntPtr handle = p.MainWindowHandle;
if (handle != IntPtr.Zero)
{
SetWindowPos(handle, IntPtr.Zero, x, y, 0, 0, SWP_NOZORDER | SWP_NOSIZE | SWP_SHOWWINDOW); …Run Code Online (Sandbox Code Playgroud)