2

我正在开发一个 C# Excel VSTO 加载项,该加载项利用 user32.dll 对 excel UI 进行一些黑魔法。我在使用 Win32 方面不是很有经验,我想知道:

我是否需要担心确保该应用程序可以在 XP 及更高版本的所有 Windows 版本上运行?或者假设我的 Win32 调用将在所有这些版本中始终如一地工作是否合理?

编辑:这是我正在使用的电话:

[DllImport("user32.dll", CharSet = CharSet.Auto)]
static public extern IntPtr FindWindowEx(IntPtr hWnd, IntPtr hChild, string strClassName, string strName);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static public extern bool IsWindowVisible(IntPtr hWnd);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static public extern bool IsWindowEnabled(IntPtr hWnd);
4

1 回答 1

5

好的,您正在使用的电话不会就这样消失,它们会一直存在。但是,特别是FindWindowEx具有非常特定的功能,因此您很可能试图在 Excel GUI 中找到一个子窗口,其名称和/或窗口类可以随时更改(包括通过次要更新),由 Microsoft 决定。

因此,回答您的问题:无需担心您正在使用的 API 函数,但是是的,您必须进行防御性编码,以确保您的代码不会在不符合预期的 Excel 版本上出现异常(关于特定子窗口的存在)在您的代码中。

于 2012-07-03T20:25:16.817 回答