[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] 如何让PowerShell创建的窗口居中显示在已打开的某窗口中央

下面的代码可以在屏幕中央显示一个窗口, 我想让窗口显示在已打开的记事本窗口中央, 如果没有记事本窗口才显示在屏幕中央, 还没搜索到相关的资料
  1. Add-Type -AssemblyName system.Windows.Forms
  2. Add-Type -AssemblyName system.Drawing
  3. $Form = New-Object windows.Forms.Form
  4. $Form.Size = New-Object drawing.Size(200, 120)
  5. $Form.startposition = "centerscreen"
  6. $Form.Text = "Test of Form"
  7. $Form.MaximizeBox = $false
  8. $Form.MinimizeBox = $false
  9. $Form.Font = New-Object drawing.Font("Times New Roman", 10, [Drawing.FontStyle]::Bold)
  10. $Form.BackColor = "LightBlue"
  11. $Form.FormBorderStyle = "FixedSingle"
  12. $Form.ShowDialog()
复制代码

回复 2# went


多谢大佬,

有两个问题请教:
1. 在我理解New-Object后应该跟着已经存在的类名, 但没有这个类
$rect = New-Object 'WinApi+Rect'   

2.如果记事本窗口处于最小化时, 执行代码, 也会有响应, 但是只在任务栏上显示一个按钮, 点它也没反应,
能否加个判断, 如果有记事本程序运行着, 先激活它一下变成当前窗口,然后再执行代码?

TOP

本帖最后由 小白龙 于 2022-11-25 13:08 编辑

回复 4# went


大佬技术666

我对C#不太懂, 但看起来还是前面的相对好理解一些,
另外, 请教大佬:
自定义的结构体,在新建其对象时, 必须要下面这种 类名+结构名 格式吗必须要+加号? 我改其它的名字都报错

'WinApi+Rect'

TOP

回复 6# went

非常感谢大佬详细解释,

我一直以为一个类里只能包含方法, 属性, 您上面的代码中, 类里又嵌套了各种类, 还包含了结构, 实在太复杂了,

下面是#2楼的第42行代码, 我把$null改成0也能运行, 我看后面也有两个0 这里用$null有什么含义吗
[WinApi]::SetWindowPos($Form.Handle, $null, $x, $y, 0, 0, 1)

[WinApi]::SetWindowPos($Form.Handle, 0, $x, $y, 0, 0, 1)

TOP

回复 8# went

多谢大佬指教

TOP

返回列表