【发布时间】:2013-01-21 02:31:06
【问题描述】:
刚买了一个新的东芝Satellite Z930,很失望地发现没有提供音量增大/减小功能键。但是,超级本确实在电源按钮旁边有两个可编程键,所以我正在尝试开发一个小型 C++ 应用程序,我可以通过这些键调用。
到目前为止,我的所有代码都可以很好地根据传递给程序的命令行参数来增加/减少音量。我遇到的唯一问题是我想显示主音量滑块以让用户知道操作有效,并且我希望它出现在您单击扬声器图标时出现的正常位置通知区域。
ATM 我只是使用 CreateProcess() 来运行“sndvol.exe -f”,它可以工作,但会在一个奇怪的位置(大约 {100, 400})显示窗口。因此,我尝试通过 EnumWindows() 和 GetWindowThreadProcessId() 获取窗口句柄,并使用 SetWindowPos() 将其移动到我想要的位置,但这没有效果。我可以成功获得进程顶层窗口的句柄,但不能移动它!
谁能解释这种行为?这与将焦点从滑块窗口关闭的事实有关吗? This 页面表明我想要实现的目标是可能的,那么我做错了什么?
MTIA :D
【问题讨论】:
-
感谢您的超快速回复,但不,这无济于事:( 如果我将 si.dwX 和 si.dwY 都设置为 5,它们在 CreateProcess 调用后仍然保持这个值,但是窗口仍然出现在原始位置:( TA
-
(我在此期间尝试过并删除了评论。请参阅我的答案,这对我有用。)
-
为什么不将按键重新映射到硬件音量控制键?
-
@RaymondChen 如果我知道怎么做就太好了!大声笑:P
-
您可以发送输入扫描码。