【问题标题】:How to write and send text to mIRC in C#/Win32?如何在 C#/Win32 中编写文本并将其发送到 mIRC?
【发布时间】:2009-02-07 12:14:48
【问题描述】:

在上一个问题中,我问过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() 一起使用的窗口名称?

【问题讨论】:

    标签: c# winapi irc


    【解决方案1】:

    此代码适用于我(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 而不是编辑)。刚刚使用 Spy++ 找到了正确的类。

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

    【讨论】:

      猜你喜欢
      • 2010-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-06
      • 2011-09-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多