使用C#将消息发送给Total Commander

时间:2014-07-14 21:57:10

标签: c# autoit sendmessage

我正在尝试将我的一些代码从Autoit转换为C#。在Autoit中,我可以使用以下代码向Total Commander发送消息:

$hWnd = WinGetHandle("[Active]")
DllCall("user32.dll", "int", "SendMessage", "hwnd", $hWnd, "int", 1075, "int", 2027, "int", 0)

这将命令2018发送给总指挥官。此命令用于打印目录内容。现在我想把它翻译成C#。我的代码现在看起来像这样:

[DllImport("User32.dll")]
public static extern int SendMessage(IntPtr hWnd, int uMsg, int wParam, string lParam);    

SendMessage(GetForegroundWindow(), 0x1075, 2027, ""); 

但是这段代码不起作用!

来自Total Commander论坛: 1075是消息标识符。从TC的角度来看,1075是用于向TC发送命令的消息(http://ghisler.ch/board/viewtopic.php?p=75654#75654

有谁知道怎么做?

1 个答案:

答案 0 :(得分:3)

如果您确定使用GetForegroundWindow()获得了正确的窗口句柄,则另一个问题是您将1075作为十六进制值传递。 This post表示魔法1075号码实际上是WM_USER + 51。

WM_USER是0x400,十进制是1024.加51小数,你得到1075。 所以你可能想要:

SendMessage(GetForegroundWindow(), 1075, 2027, "");