社区
Windows SDK/API
帖子详情
如何用SendMessage向另一个窗口发送Alt的组合消息(如Alt + E)
natasha
2003-12-17 07:36:40
不要说Keybd_event,这个我也会.
找了很多资料,试下来都不行.
...全文
447
24
打赏
收藏
如何用SendMessage向另一个窗口发送Alt的组合消息(如Alt + E)
不要说Keybd_event,这个我也会. 找了很多资料,试下来都不行.
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
24 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
natasha
2003-12-27
打赏
举报
回复
Button1Click
SetForegroundWindow(HWindow);
PostMessage(HWindow, WM_SYSCOMMAND, SC_KEYMENU, (WPARAM)'E');
可是点击按钮的时候,有时候可以激活,有时候不行,大概三次才能激活一次,这是怎么回事啊?
csd08
2003-12-26
打赏
举报
回复
NetLinux(笑天-www.laughsky.com)的方法多加一句
ShowWindow(hwin,SW_RESTORE); //如果窗体最小化,则正常显示之
就更加完善了。
PS 这个方法我也想过,就是这个参数 (WPARAM)0x45我设置的不对,不知这是如何计算出来的?
COpyFRee
2003-12-26
打赏
举报
回复
没有必要控件窗体的显示状态,ccrun(老妖) 的足可以了……
ccrun.com
2003-12-26
打赏
举报
回复
用不着费神去计算。直接这样就可以了:
SendMessage(hwin, WM_SYSCOMMAND, SC_KEYMENU , (WPARAM)'f'); // alt + f
SendMessage(hwin, WM_SYSCOMMAND, SC_KEYMENU , (WPARAM)'v'); // alt + v
以此类推。
边学边用边创造
2003-12-26
打赏
举报
回复
字母A 十六进制是 41,
字母B 十六进制是 42,
字母C 十六进制是 43,
字母D 十六进制是 44,
.....
边学边用边创造
2003-12-26
打赏
举报
回复
在win 2000 的附件,系统工具中有个字符映射表程序,在这里单击字母,在下面状态栏中就会出现16进制的值。
98我已经记不的了。
在CB的程序中是这样做的。:
相应 OnKeyUp事件。
void __fastcall TForm1::Button3KeyUp(TObject *Sender, WORD &Key,
TShiftState Shift)
{
ShowMessage(Key); //这里显示的是十进制。把它专为十六进制就行了。
}
woodwoodwood3
2003-12-25
打赏
举报
回复
楼主的意思不大明白,特殊窗口不知是什么窗口,游戏窗口?如果是要使用钩子函数啦!而且必须将发送消息的函数放在钩子里面,必须是全局的DLL钩子!这样就没有不能截获的窗口了。试试吧!
边学边用边创造
2003-12-24
打赏
举报
回复
这一下行了吧。
HWND hwin = FindWindow(NULL, "Calculator");
if (hwin != NULL)
{
SetForegroundWindow(hwin);
SendMessage(hwin, WM_SYSCOMMAND, SC_KEYMENU , (WPARAM)0x45);
}
natasha
2003-12-23
打赏
举报
回复
to losthold(呵呵):
我用SendMessage(HWin, WM_IME_CHAR, 'A', 0);其中HWin就是记事本窗口的句柄啊。这句是可以执行的啊。
losthold
2003-12-23
打赏
举报
回复
必须为SendMessage函数指定可以具有输入焦点的控件句柄
比如说记事本,直接为SendMessage函数指定记事本窗口的句柄是没有用的
必须为SendMessage函数指定记事本的Edit控件的句柄。
边学边用边创造
2003-12-23
打赏
举报
回复
我来收分了。
ALT, //字符十六进制 F
SendMessage(Handle, WM_SYSCOMMAND, SC_KEYMENU, (WPARAM)0x46);
yjy1001
2003-12-23
打赏
举报
回复
才上来,刚看到你的短信
我觉得 应该可以通过调用 设置系统热键消息,然后再发送系统热键消息 来达到传递的目的
最近好忙 —— 年终 —— 年度总结! 好多项目要收尾!
所以没时间帮你测试。
不好意思,帮不上忙
nobill
2003-12-23
打赏
举报
回复
顶@!
natasha
2003-12-22
打赏
举报
回复
晕。keybd_event和SendInput我都知道。但是对某些特殊状态的窗体,keybd_event和sendinput都不行。
这里的特殊状态当然包括最小化,但是我遇到了某些窗体,正常状态下我还是不能发送alt的组合键,普通字符按键是可以发送的。
所以我想用Sendmessage试试,但是查找的关于sendmessage关于alt组合键的代码都不能正常运行。
ccrun.com
2003-12-22
打赏
举报
回复
楼主都说了不让用Keybd_event的。呵呵。
csd08
2003-12-22
打赏
举报
回复
to natasha(月不常满) :
再次为我先前的误解表示抱歉,以下是我测试通过的代码,希望能对你有点帮助。
AnsiString WindowName = "计算器";
HWND hwin = FindWindow(NULL, WindowName.c_str());
ShowWindow(hwin,SW_RESTORE); //如果窗体最小化,则正常显示之
SetForegroundWindow(hwin); //将该窗体推到最前面显示(用SetActiveWindow不行)
//Alt key down
keybd_event( VK_MENU, MapVirtualKey( VK_MENU, 0 ), 0 , 0 );
//'E' key down
keybd_event( 'E', MapVirtualKey( 'E', 0 ), 0 , 0 );
//'E' key up
keybd_event( 'E', MapVirtualKey( 'E', 0 ), KEYEVENTF_KEYUP , 0 );
//Alt key up
keybd_event( VK_MENU, MapVirtualKey( VK_MENU, 0 ), KEYEVENTF_KEYUP , 0 );
loki2k
2003-12-18
打赏
举报
回复
窗口不在任务栏,FindWindow函数返回NULL.
natasha
2003-12-18
打赏
举报
回复
大哥不行啊.
Button1的Click事件里
AnsiString WindowName = "计算器";
int hwin = FindWindow(null, WindowName.c_str());
if (hwin != 0)
{
PostMessage(hWin, WM_KEYDOWN, VK_MENU, 0);
PostMessage(hWin, WM_SYSKEYDOWN, 'E', 0);
PostMessage(hWin, WM_KEYUP, VK_MENU, 0);
PostMessage(hWin, WM_SYSKEYUP, 'E', 0);
}
ccrun.com
2003-12-18
打赏
举报
回复
PostMessage(hWin, WM_KEYDOWN, VK_MENU, 0);
PostMessage(hWin, WM_SYSKEYDOWN, 'E', 0);
PostMessage(hWin, WM_KEYUP, VK_MENU, 0);
PostMessage(hWin, WM_SYSKEYUP, 'E', 0);
natasha
2003-12-18
打赏
举报
回复
晕...
to loki2k(loki):
我当然运行了'计算器',而且没有最小化!!
这里不是findwindow的问题,而是模拟不出消息..
to csd08(jone):
我是要把菜单选出,而不是发送字符~~~~~~~~~~~~~
hwin定义类型错了,应该是HWND,写的时候写错了.我程序里是对的.
加载更多回复(4)
向指定窗体
发送
alt
+F.
- `
SendMessage
`: 用于向指定
窗口
发送
消息
并等待响应。 - `FindWindow`和`FindWindowEx`: 用于查找
窗口
和子
窗口
。 - `PostMessage`: 用于向指定
窗口
发送
消息
而不等待响应。 - **常量定义**: - `WM_KEYDOWN`: 键...
C#_
SendMessage
在C#中,通常使用P/Invoke来调用Windows API函数,如`
SendMessage
`函数,来
发送
特定的
消息
到
窗口
。 #### 重要Windows
消息
及其用途 ##### 键盘
消息
- **WM_KEYDOWN (0x0100)**: 表示
一个
键被按下。该
消息
由系统...
SendMessage
之模拟按键
在Windows编程中,`
SendMessage
`函数是
一个
非常重要的API调用,用于向指定
窗口
发送
一个
消息
。这个函数在VB(Visual Basic)中也被广泛使用,尤其是当你需要模拟键盘输入时。在本文中,我们将深入探讨`
SendMessage
`...
sendkey 与
sendmessage
_
sendmessage
_sendkey_vb6_
`SendKey` 可以处理
组合
键(如Ctrl、
Alt
等),并能与延时函数结合使用,以实现复杂的按键序列。然而,`SendKey` 的缺点在于它依赖于系统焦点,只有当前活动
窗口
才能接收到这些键击事件,而且在某些情况下可能不稳定...
易语言
窗口
热键
1. **
SendMessage
**:这是
一个
通用的API函数,用于将
消息
发送
到
一个
窗口
,使其执行相应的操作。在创建
窗口
热键时,我们可以利用`
SendMessage
`向目标
窗口
发送
特定的
消息
,比如WM_HOTKEY
消息
,当设定的热键被按下时,...
Windows SDK/API
1,222
社区成员
8,136
社区内容
发帖
与我相关
我的任务
Windows SDK/API
C++ Builder Windows SDK/API
复制链接
扫一扫
分享
社区描述
C++ Builder Windows SDK/API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章