gpt4 book ai didi

powershell - 在powershell中如何模拟按住shift键?

转载 作者:行者123 更新时间:2023-12-02 23:29:55 26 4
gpt4 key购买 nike

我需要运行以下两行代码来打开一个访问数据库。问题是这个数据库有一个自动加载的模型表单,它会阻止 powershell 脚本的其余部分运行,直到它关闭。

$ms_access = New-Object -ComObject "Access.Application"
$ms_access.OpenCurrentDatabase("C:\db.accdb", $false)

如果按下 shift 键,我可以在打开数据库时避免对话框。我已经测试过这个并且它有效。现在我想在运行我的 powershell 脚本时不必按住 shift 键,那么在 powershell 中有没有办法模拟按下的 shift 键?不仅仅是一个 SendKey,而是在 OpenCurrentDatabase 的持续时间内按住?

像什么?
$ms_access = New-Object -ComObject "Access.Application"
Set-Shift-Down
$ms_access.OpenCurrentDatabase("C:\db.accdb", $false)
Set-Shift-Up

这是用于 Powershell-v2

最佳答案

我会用 p/invoke :

Add-Type @"
using System;
using System.Runtime.InteropServices;
public class Tricks {
[DllImport("user32.dll")]
public static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);}
"@

[system.reflection.assembly]::Loadwithpartialname("system.windows.forms")

#left shift key pressed
[tricks]::keybd_event([System.Windows.Forms.Keys]::LShiftKey, 0x45, 0, 0);
... do stuff here
#left shift key released
[tricks]::keybd_event([System.Windows.Forms.Keys]::LShiftKey, 0x45, 0x2, 0);

如果您不想加载 windows.forms组装使用 0xA0作为 LShiftKey 的值

我真的不知道原生 powershell 方式,p/invoke 应该可以工作,但我无法像您想使用它那样测试它。

关于powershell - 在powershell中如何模拟按住shift键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16447407/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com