Windows API和SendMessage()

int x = 5; int y = 10; y = y << 16; int coord = x | y; NativeMethods.SendMessage(hwnd, WM_LBUTTONDOWN, new IntPtr(0), new IntPtr(coord)); NativeMethods.SendMessage(hwnd, WM_LBUTTONUP, new IntPtr(0), new IntPtr(coord)); 

使用上面的代码(ref:MSDN),我可以在外部应用程序的datagridview中select一行。 我想知道我可以发送一个CTRL-A和CTRL-C到同一个datagridview。

仍然试图连接为什么x和yvariables初始化为5,10,为什么y左移了16,然后| 与x。

那这个呢:

 SendMessage( hwnd, WM_KEYDOWN, VK_CTRL, 0 ); SendMessage( hwnd, WM_KEYDOWN, 0x43, 0 ); // Ctrl and C keys are both pressed. SendMessage( hwnd, WM_KEYUP, 0x43, 0 ); SendMessage( hwnd, WM_KEYUP, VK_CTRL, 0 ); 

0x43是C键(请参阅http://msdn.microsoft.com/zh-cn/library/dd375731(v=VS.85).aspx )


编辑:如果它不起作用,请尝试发送WM_COPY ,这应该是一个更好的主意。

 SendMessage( hwnd, WM_COPY, 0, 0 ); 

您可能实际上需要Windows子类 。 注意这不是C ++子类。

这种技术从一个特定的窗口过程(WndProc)发送消息到另一个WndProc,从而实现你想要的东西。

一旦安装它只是工作。 MSDN是关于这个信息,因此上面的链接作为教程。

更多信息:

子类化控件 – MSDN

ActiveX控件:继承Windows控件

** Windows窗体控件的子类可能是最相关的。

其他有关“Windows Hooking”的链接。 这是一种在外部应用程序中挂钩或捕获消息和事件的技术。

挂钩

EasyHook

MSDN挂钩良好的概述。

HTH