我的WinXPSP3计算机上有两张声卡,我编写了一个C++应用程序,通过编辑以下注册表项来更改默认播放设备:regKey=Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Multimedia\SoundMapper",true);为了将第一或第二声卡用作默认播放设备,我的应用更改了“播放”键值。问题是当我更改默认设备时,应用程序仍然使用旧设备(程序启动时设置为默认设备)。如果更改后,我再次启动应用程序,一切正常,我可以使用“新的”默认播放设备。我如何为我的应用程序“告诉”我已经更改了默认设备?应用程序通过什么方式读取和存储启动时
使用Windows7触摸设备,当您选择/聚焦文本框或输入字段(记事本等)时,Windows会显示这个小触摸键盘指示器(点击它会在屏幕键盘上显示触摸)。我想编写一个应用程序,当发生这种情况时得到通知,文本框(等)获得焦点(无论是哪个应用程序)。是否通知应用程序关注其他应用程序,我是否需要Hook某些东西?有没有办法在C++中这样做? 最佳答案 我相信SetWinEventHook函数,特别是EVENT_OBJECT_FOCUS事件就是您要查找的内容。来自MSDN的描述:Anobjecthasreceivedthekeyboardfoc
我一直在搜索WindowsAPI,寻找一种在所有WM_MOUSESCROLL消息到达其透视消息队列之前拦截它们的方法。拦截后我需要改变一些关于它们的东西并将它们发送到不同的[或相同的]消息队列。我需要相当高效地执行此操作,因为它将在相当大的应用程序之上运行。关于如何实现此目标的任何想法?我还没有找到办法。 最佳答案 最好的选择是使用lowlevelmouseeventhook进行非托管拦截.见thisMSKBarticle了解更多信息。 关于c#-拦截所有WM_MOUSEWHEEL消息,
当存在模式对话框时,使用PostMessage发送到主窗口的消息不会经过该窗口的消息循环。事实上,当模态对话框存在时,没有消息通过主窗口的消息循环。他们确实通过对话框处理中的一些消息循环到达了主窗口的WndProc。这是正常的还是我在做一些奇怪的事情? 最佳答案 这是正常的,对话框通过抽取自己的消息循环变成模态的。这应该不是问题,DispatchMessage仍然将消息传递给窗口过程。确保您使用有效的窗口句柄发布。否则,如果线程创建任何窗口,PostThreadMessage()也是一个有保证的失败鲸鱼的原因。比如MessageBo
我一直在尝试找出程序中的错误。我注意到,每当我按住向上和向左箭头键并按空格键时,我的WndProc永远不会接收或处理WM_KEYDOWN消息以及WPARAM为VK_SPACE。我有点好奇,所以我打开了Spy++并开始查看发送到我窗口的消息。我注意到,当我按住向左和向上箭头键并按另一个键(比如A)时,WM_KEYDOWN(以及WM_CHAR)消息会发送到我的窗口。但是,如果我按住向上和向左箭头键并按下空格键,则不会向我的窗口发送空格键命中的WM_KEYDOWN消息。这是什么原因?谁能证实这种行为? 最佳答案 发生这种情况是因为您的键盘
我正在查看发布的代码here,特别是重写方法WndProc中的SyntaxRichTextBox.cs。这只是代码中的错字吗?0x00f是什么Windows消息?他们的意思是0x0f用于WM_PAINT吗?捕获该消息的代码的作者是什么?代码:protectedoverridevoidWndProc(refSystem.Windows.Forms.Messagem){if(m.Msg==0x00f){if(m_bPaint)base.WndProc(refm);elsem.Result=IntPtr.Zero;}elsebase.WndProc(refm);}
我正在尝试从Win7机器读取存储在我的Android手机中的短信(首先)。我还没有弄清楚我可以/应该使用的API/接口(interface)。我可以接受任何语言。希望有人能指出我正确的方向。它不需要像API那样直接。我也接受一些技巧。 最佳答案 我想到了两种解决方案,如果您的手机是root,使用adbpull获取SMS数据库,它在联系人包编写一个带有BroadcastReceiver的Android应用程序来监听新消息。当一个新的出现时,将其信息记录到一个文件中。使用adb获取此文件。
在Windows平台上,当我切换到另一个窗口时,浏览器将收到一条WM_ACTIVATE消息。无论如何将WM_ACTIVATE消息传递给插件?我试过NPP_HandleEvent,但它似乎根本不起作用。 最佳答案 对于WindowsNPP_HandleEvent()仅用于无窗口插件,默认情况下它们是有窗口的。因此,除非您明确选择无窗口,否则这就是NPP_HandleEvent()未被调用的原因。对于窗口插件,您需要子类化插件窗口以接收窗口消息(参见Mozillas测试插件源中的Subclass())。对于无窗口插件(应该是首选),WM
我正在使用主机上的VS2012调试安装在目标VM上的KmdfSmall驱动程序。但是,主机上VS2012中的“调试器即时窗口”不打印任何消息。我在这里使用KdPrintEx((DPFLTR_IHVDRIVER_ID,DPFLTR_INFO_LEVEL,"\nKmdfSmallEvtDeviceAddhasbeencalled\n")),因为它在msdn中给出。.我更新了flag的值以及在OSRonline中描述的.“HKLM\SYSTEM\CCS\Control\SessionManager\DebugPrintFilter”。在此键下,创建一个名为“DEFAULT”的值,并将此键的值
我在WTL中有一个GUI窗口,它在CMessageLoop实例内的线程内运行,该实例已添加到应用程序实例并运行。现在,在主GUI的按钮处理程序中,我创建了一个新窗口。单击该按钮并创建窗口并尝试将退出消息发布到主GUI循环后。代码:主窗口,有自己的线程:CMessageLooptheLoop;_MyppModule.AddMessageLoop(&theLoop);if(m_pMyDlg==NULL){m_pMyDlg=newCMyDlg();if(!IsWindow(*m_pMyDlg)){m_pMyDlg->Create(NULL);m_pMyDlg->ShowWindow(SW_S