我在切换应用程序并将其分配给变量时遇到问题。这是我到目前为止所做的。
[DllImport("user32.dll")]
public static extern void SwitchToThisWindow(IntPtr hWnd, bool b);
Process[] procs = Process.GetProcessesByName("Excel");
foreach (Process proc in procs)
{
SwitchToThisWindow(proc.MainWindowHandle, false);
}
最后,我想指定要分配给xlApp的Excel窗口。我试过了:
xlAppl = SwitchToThisWindow(proc.MainWindowHandle, false);
但显然这不起作用,因为界面是空的。我试着看GetActiveWindow
我正在考虑获取活动窗口并分配它,但它的返回值不是对象它的IntPtr。
有没有办法解决这个问题?
答案 0 :(得分:1)
到目前为止,我想指出一些事情:
如果我是你,我会尝试使用SetForegroundWindow和SetActiveWindow API。
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern bool SetForegroundWindow(
IntPtr hWnd
);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr SetActiveWindow(
IntPtr hWnd
);
答案 1 :(得分:0)
伙计们,我找到了解决方案。如果其他人正在寻找这个问题,那么这里的答案非常简单:
Excel.Application xlApp = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");