2

我记得VB6我能够获得当前正在运行的软件形式的句柄,并使用一些 API 函数从外部对其进行更改。可以用c#做吗?如何?问题是该软件使用不同的语言。我想把其中的一部分改成英文。

4

2 回答 2

2

尝试使用FindWindowSetWindowText来自 Win32 API:

FindWindowc#签名:

[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

SetWindowTextc#签名:

[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern bool SetWindowText(IntPtr hwnd, String lpString);

和样本鳕鱼:

SetWindowText(Process.GetCurrentProcess().MainWindowHandle, "Hello W");
于 2012-11-07T09:07:00.353 回答
1

1) 在 WinForms 中,Control 类中有一个“Handle”属性(所有控件和 Form 类都派生自它(MSDN 文章

2)在 WPF 中没有暴露 HWND 句柄,但您可以使用WindowInteropHelper类来获取它。
你可以像这样得到它:

        WindowInteropHelper wih = new WindowInteropHelper(YourWindow);
        IntPtr hwndHandle = wih.Handle;
于 2012-11-07T08:47:42.773 回答