gpt4 book ai didi

c# - 如何在 C#/Win32 中写入和发送文本到 mIRC?

转载 作者:太空狗 更新时间:2023-10-29 21:48:13 27 4
gpt4 key购买 nike

在上一个问题中,我问了 how to send text to Notepad .它极大地帮助了我。对于第 2 部分,这里是相同应用的 mIRC 的简化版本:

[DllImport("User32.dll", EntryPoint = "FindWindow")]
public static extern IntPtr FindWindow(String lpClassName, String lpWindowName);
[DllImport("user32.dll", EntryPoint = "FindWindowEx")]
public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
[DllImport("User32.dll")]
public static extern int SendMessage(IntPtr hWnd, int uMsg, int wParam, string lParam);

IntPtr mainHandle = FindWindow("mIRC", null);
IntPtr serverHandle = FindWindowEx(mainHandle, new IntPtr(0), "MDIClient", null);
IntPtr chanHandle = FindWindowEx(serverHandle, new IntPtr(0), "mIRC_Channel", null);
IntPtr editHandle = FindWindowEx(chanHandle, new IntPtr(0), "Edit", null);

SendMessage(editHandle, 0x000C, 0, textBox1.Text);

这对我来说似乎是正确的,只是它不起作用!是否是窗口名称不正确(MDIClient、mIRC_Channel 和 Edit)?这些是我通过谷歌搜索“FindWindowEx mIRC”在网站上找到的值。

1.) 我在上面做错了什么?

2.) 作为引用,通常有一种简单的方法可以找到所有用于 FindWindowEx() 的窗口名称吗?

最佳答案

此代码适用于我(mirc 6.31):

IntPtr mainHandle = FindWindow("mIRC", null);
IntPtr serverHandle = FindWindowEx(mainHandle, new IntPtr(0), "MDIClient", null);
IntPtr chanHandle = FindWindowEx(serverHandle, new IntPtr(0), "mIRC_Channel", null);
IntPtr editHandle = FindWindowEx(chanHandle, new IntPtr(0), "richEdit20A", null);
SendMessage(editHandle, 0x000C, 0, "Hello World");

请注意更改后的窗口类(richedit20A 而不是 edit)。刚刚使用 Spy++ 找到了正确的类。

至于窗口句柄,一种可能是使用 EnumWindowsEnumChildWindows API。

关于c# - 如何在 C#/Win32 中写入和发送文本到 mIRC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/523669/

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