草庐IT

windows - 如何在控制台程序中向 DirectSound SetCooperativeLevel 提供 HWND?

我正在编写一个控制台程序,它使用DirectSoundAPI来呈现一些音频数据。在关注DirectSoundProgrammingGuide(fromMicrosoft)时,我偶然发现了一个奇怪的问题.根据documentation:Aftercreatingadeviceobject,youmustsetthecooperativelevelforthedevicebyusingtheIDirectSound8::SetCooperativeLevelmethod.Unlessyoudothis,nosoundswillbeheard.问题是我正在编写一个控制台程序,SetCoope

c - 是否可以利用另一个进程创建的 HWND?

我正在我的程序中创建窗口,然后将此窗口的HWND发送到另一个应用程序。在window的HDC上绘制是否对另一个进程有效? 最佳答案 Windows归其他窗口所有,而不是进程所有。您可以绘制到桌面上的任何HWND(至少如果窗口具有相同的完整性-我不确定如果它们不这样做会发生什么)。在单独进程中托管插件或选项卡的Web浏览器通常会使用此功能。 关于c-是否可以利用另一个进程创建的HWND?,我们在StackOverflow上找到一个类似的问题: https://s

windows - 如何找到阻止关机的 HWND?

我的应用程序中的某处(连同第3方代码库)是一个窗口过程,它阻止Windows:注销关闭重新启动我发现我的代码中有一个地方犯了一个非常常见的错误,即调用DefWindowProc,但调用不正确:之前:voidGrobber.BroadcastListenerWindowProc(refTMessagemsg){DefWindowProc(_broadcastListenerHwnd,msg.msg,msg.wparam,msg.lparam);}之后:voidGrobber.BroadcastListenerWindowProc(refTMessagemsg){//20170207:Fo

c++ - 我如何使用他的 HWND 检查窗口是否有可见的滚动条?

我想使用窗口的HWND(句柄)检查外部应用程序的窗口是否具有垂直或水平滚动条可见,是否存在任何WinApi函数来获取此信息?我真的尝试了GetScrollInfo功能,但似乎无法检索有关滚动条可见性的信息。 最佳答案 GetScrollBarInfo怎么样?与OBJID_HSCROLL或OBJID_VSCROLLIfidObjectisOBJID_CLIENTandthewindowspecifiedbyhwndisnotasystemscrollbarcontrol,thesystemsendstheSBM_GETSCROLLBA

c++ - 如何创建一个以 HWND 作为父级的 QWidget?

对于wxWidgets,我使用以下代码:HWNDmain_window=......wxWindow*w=newwxWindow();wxWindow*window=w->CreateWindowFromHWND(0,(WXHWND)main_window);如何在Qt中做同样的事情?HWND是我希望作为新QtWidget的父窗口的窗口句柄。 最佳答案 使用QWidget的create方法。HWNDmain_window=......QWidget*w=newQWidget();w->create((WinId)main_windo

windows - SendMessage(HWND_BROADCAST, ....) 挂起

当我将SendMessage函数与HWND_BROADCAST一起使用时,应用程序挂断了。应用长时间无响应。谁能解释一下为什么? 最佳答案 当有一个进程有一个顶级窗口,但没有在创建该窗口的线程上调用GetMessage或PeekMessage时,就会发生这种情况。为了与Windows3.0向后兼容,SendMessage将不会返回,直到系统中的所有顶级窗口都响应了您的广播。在Windows成为多线程之前,这种行为是有意义的,因为SendMessage(),即使发送到其他进程也永远不会阻塞。但是从Win32开始,当您向另一个进程中的窗

c++ - 获取当前进程的 HWND

我有一个使用窗口API的c++进程。我想获得自己进程的HWND。请指导我如何使它成为可能。 最佳答案 如果您正在谈论获取process句柄,那么它不是HWND(这是一个windowhandle),而是一个HANDLE(即内核对象句柄);要检索相对于当前进程的伪句柄,可以使用GetCurrentProcess正如其他人解释的那样。另一方面,如果你想获得一个HWND(一个window句柄)到你的应用程序的主窗口,那么你必须遍历现有的窗口与EnumWindows并通过GetWindowThreadProcessId检查其所有权,将返回的进

c++ - 获取当前进程的 HWND

我有一个使用窗口API的c++进程。我想获得自己进程的HWND。请指导我如何使它成为可能。 最佳答案 如果您正在谈论获取process句柄,那么它不是HWND(这是一个windowhandle),而是一个HANDLE(即内核对象句柄);要检索相对于当前进程的伪句柄,可以使用GetCurrentProcess正如其他人解释的那样。另一方面,如果你想获得一个HWND(一个window句柄)到你的应用程序的主窗口,那么你必须遍历现有的窗口与EnumWindows并通过GetWindowThreadProcessId检查其所有权,将返回的进

c++ - 如何在 Win x64 中的 32 位和 64 位应用程序之间共享 HWND?

MSDN告诉我,窗口句柄(HWND)可以在32位和64位应用程序之间共享,在InterprocessCommunication中(MSDN)。但是,在Win32中,HWND是32位,而在64位Windows中,它是64位。那么如何共享句柄呢?我猜同样的问题也适用于命名对象的句柄,例如互斥锁、信号量和文件句柄。 最佳答案 正如DanielRose在上面指出的那样,MSDNdocumentation现在声明:...itissafetotruncatethehandle(whenpassingitfrom64-bitto32-bit)or

c++ - 如何在 Win x64 中的 32 位和 64 位应用程序之间共享 HWND?

MSDN告诉我,窗口句柄(HWND)可以在32位和64位应用程序之间共享,在InterprocessCommunication中(MSDN)。但是,在Win32中,HWND是32位,而在64位Windows中,它是64位。那么如何共享句柄呢?我猜同样的问题也适用于命名对象的句柄,例如互斥锁、信号量和文件句柄。 最佳答案 正如DanielRose在上面指出的那样,MSDNdocumentation现在声明:...itissafetotruncatethehandle(whenpassingitfrom64-bitto32-bit)or