所以我问了这个问题并得到了答案。所以当我以用户身份运行它时,我的脚本可以工作......
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);}
"@
cd "C:\db_location\"
$ms_access = New-Object -ComObject "Access.Application"
[tricks]::keybd_event(0xA0, 0x45, 0, 0);
$ms_access.OpenCurrentDatabase("C:\db_location\db_app.accdb", $false)
[tricks]::keybd_event(0xA0, 0x45, 0x2, 0);
$ms_access.Run("do_work")
$ms_access.Quit() | Out-Null
否当设置服务以运行此 PowerShell 时失败。它永远不会到达$ms_access.Run("do_work")
位,这意味着打开没有完成。打开无法完成的唯一原因是因为模拟的 shift 键不起作用。
keybd_event
当这个脚本作为服务运行时,我怎样才能让它工作?