当我上次执行此操作时,您将使用DirectDraw将block传输到硬件表面,甚至直接映射它并直接绘制。今天推荐的方法是什么?使用Direct3D10/11并执行相同的操作?编辑:为了澄清我的问题,我想进行一些软件光栅化,因此需要一种快速的方法将像素数据直接传输到显示器。 最佳答案 我建议使用Direct2D这些天是为桌面应用程序设计的。引用:PurposeDirect2Disahardware-accelerated,immediate-mode,2-DgraphicsAPIthatprovideshighperformancea
我有一个DLL,我想使用DirectSound播放声音。为了播放声音,我需要可执行文件的HWND。我没有加载DLL的可执行文件的HWND。我如何在不从可执行文件传递它的情况下在DLL中获取它? 最佳答案 你可以使用GetCurrentProcessId获取当前进程ID。然后您可以调用EnumWindows,并使用GetWindowThreadProcessId检查每个窗口查找与您的进程关联的窗口。但是,更简单的选择可能是只生成您自己的窗口。您可以创建一个不可见的1x1像素窗口,并将其与DirectSound一起使用。即使您的调用进程
我在想是否有相同值的句柄?为了澄清我的问题,假设我打开记事本,输入一些文本,保存,然后关闭记事本。如果我重复此操作一千次(或更多次),我是否有机会看到第一次使用的记事本主窗口使用相同的窗口句柄(HWND)值?如果是,为什么? 最佳答案 是的。句柄只能表示有限数量的值,因此Windows最终必须重用它们。句柄一旦关闭,它就消失了,你不能用它做任何事情,它不存在,你甚至不应该看它。如果您随后打开另一个句柄,则Windows可能会重用该句柄值。 关于windows-窗口句柄(HWND)是唯一的
因为我找不到this的答案问题我进一步研究了MSDN,发现了isChild()。它可能会给我另一个问题的答案。现在,为了使用isChild(),我需要传递我要检查的父应用程序的HWND,在本例中是我自己的应用程序。如何获取我自己的应用程序的HWND?我不知道标题,因为它不断变化,所以我不能使用FindWindow()。谢谢编辑:由于不清楚,我将添加更多信息:我没有创建窗口。我无权创建窗口。我的代码是一段与其他程序员编写的任何应用程序一起编译的代码,我无法访问窗口的创建方式、标题或任何其他信息。那么,如何将HWND获取到我正在运行的应用程序的“WINDOW”?
我正在尝试为Windows10应用获取一个易于理解的“进程名称”。目前,它们都使用ApplicationFrameHost,所以我想我可以使用ModelId或PackageName,但似乎是Windows10StoreApps(我尝试使用Mail、Store和Edge)无法与PackagequeryAPI一起使用使用kernel32.dll,GetApplicationUserModelId返回APPMODEL_ERROR_NO_APPLICATION,GetPackageId返回APPMODEL_ERROR_NO_PACKAGE.如何获取Windows10应用商店应用程序的标识符,以
我正在使用代理DLL拦截对CreateWindowExA/CreateWindowExW的调用.这很好地退出,除了一些应用程序(最值得注意的是一些VisualBasic6应用程序)似乎能够创建窗口而无需通过这两个函数中的任何一个。Spy++等工具能够显示窗口,但我的Hook函数没有注意到它们。我的第一个怀疑是这些(旧的)应用程序可能使用了CreateWindowA/CreateWindowW用于创建窗口,但至少使用我的编译器(MSVC6到MSVC10),CreateWindow只是一个#define;文档的备注部分证实了这一点。我的第二个想法是我可以安装一个CBThook使用SetWi
我和一位程序员同事进行了一场小辩论。他在他的代码中使用了以下习语:HWNDhWnd=SomeFunctionWhichReturnsAWindow();if(hWnd!=NULL&&hWnd!=INVALID_HANDLE_VALUE){//Allgood}else{//Error}我告诉他在我看来这是一个错误的方法,因为HWND类型与INVALID_HANDLE_VALUE定义无关,但他确信这是好的代码,因为有效句柄永远不会等于INVALID_HANDLE_VALUE,而且它的意思是“安全总比遗憾好”。那么,这是一个可以接受的正确成语吗? 最佳答案
我正在开发一个python应用程序,我想获取每个打开的窗口的HWND。我需要窗口的名称和HWND来过滤列表以管理一些特定的窗口,移动它们并调整它们的大小。我试着自己做,但我没有得到正确的代码。我试过这个code但我只得到每个窗口的标题(这很好),但我也需要HWND。importctypesimportwin32guiEnumWindows=ctypes.windll.user32.EnumWindowsEnumWindowsProc=ctypes.WINFUNCTYPE(ctypes.c_bool,ctypes.POINTER(ctypes.c_int),ctypes.POINTER(
我正在使用生成InternetExplorer实例的第三方类。此类有一个属性hWnd,它返回进程的hWnd。稍后,我可能想重用应用程序的实例(如果它仍然存在),所以我需要告诉我的帮助程序类附加到它。在此之前,我想知道给定的hWnd是否仍然有效,否则我将生成另一个实例。如何在C#和.NET3.5中执行此操作? 最佳答案 如果是窗口句柄,可以调用isWindow(hWnd);来自msdn:ReturnValueBOOLIfthewindowhandleidentifiesanexistingwindow,thereturnvalueis
我有给定窗口的句柄。如何枚举它的子窗口? 最佳答案 Here你有一个可行的解决方案:publicclassWindowHandleInfo{privatedelegateboolEnumWindowProc(IntPtrhwnd,IntPtrlParam);[DllImport("user32")][return:MarshalAs(UnmanagedType.Bool)]privatestaticexternboolEnumChildWindows(IntPtrwindow,EnumWindowProccallback,IntPt