首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows API和SendMessage()

Windows API和SendMessage()
EN

Stack Overflow用户
提问于 2010-08-22 06:05:55
回答 3查看 9.4K关注 0票数 1
代码语言:javascript
复制
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中选择一行。我想知道如何将ctrl-a和ctrl-c发送到同一个datagridview。

我仍然在尝试连接为什么x和y变量被初始化为5,10,以及为什么y左移16,然后|与x一起。

EN

回答 3

Stack Overflow用户

发布于 2010-08-22 06:19:34

这样如何:

代码语言:javascript
复制
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/en-us/library/dd375731(v=VS.85).aspx

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

代码语言:javascript
复制
SendMessage( hwnd, WM_COPY, 0, 0 );
票数 1
EN

Stack Overflow用户

发布于 2010-08-22 23:44:04

你可能真的需要。注意,这不是C++子类化。

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

一旦设置好,它就能正常工作。MSDN对此信息的介绍很少,因此将上面的链接作为教程。

更多信息:

Subclassing Controls - MSDN

ActiveX Controls: Subclassing a Windows Control

** Subclassing Windows Forms Controls可能是最相关的。

票数 1
EN

Stack Overflow用户

发布于 2010-08-23 07:04:02

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

Hooking

EasyHook

MSDN Hooks很好的概述。

HTH

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3539190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档