我花了几天(或更多)试图让这个工作.
手边的应用是FTPRush的,我知道有一个叫CMD行应用程序rush_cmdline.exe,它使用SendMessage将请求发送到FTPRush.
从调试rush_cmdline.exe,我可以看到lParam,wParam,Message和hWnd.
我的代码如下(使用SendMessage,而不是SendMessageW):
[DllImport("User32.dll", EntryPoint = "FindWindow")]
public static extern Int32 FindWindow(String lpClassName, String lpWindowName);
[DllImport("USER32.DLL", EntryPoint= "SendMessage")]
public static extern IntPtr SendMessage(int hWnd, int Msg, int wParam, IntPtr lParam);
Run Code Online (Sandbox Code Playgroud)
我还尝试了另一个规范:
[DllImport("User32.dll", EntryPoint = "SendMessage")]
public static extern int SendMessage(int hWnd, int Msg, int wParam, ref COPYDATASTRUCT lParam);
Run Code Online (Sandbox Code Playgroud)
handle(hWnd)不是问题,因为这有效:
int ftprush = FindWindow("TfmRush", null);
ShowWindow(ftprush, 8);
Run Code Online (Sandbox Code Playgroud)
哪个(我没有粘贴dllimport,因为它在这里不重要.如果你想看到它,请告诉我)将窗口带到前面.另外,我通过调试检查rush_cmdline.exe.所以手柄是一样的. …