我正在尝试为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
我的WPF应用程序有多个窗口,我需要能够获取每个窗口实例的hWnd,以便我可以在Win32API调用中使用它们。我想做的事的例子:WindowmyCurrentWindow=Window.GetWindow(this);IntPtrmyhWnd=myCurrentWindow.hWnd;//Exceptthispropertydoesn'texist.执行此操作的最佳方法是什么? 最佳答案 WindowInteropHelper是你的friend。它有一个接受Window参数的构造函数,以及一个返回其窗口句柄的Handle属性。Wi
从使用C++的nativeWin32API是否可以确定与HWND关联的窗口是否仍然有效? 最佳答案 您可以使用Win32APIIsWindow.不建议使用它,原因有两个:一旦窗口被销毁,窗口句柄就可以重新使用,所以你不知道你是否有一个完全不同的窗口的句柄。状态可能会在此调用后直接更改,您会认为它是有效的,但它可能真的无效。来自MSDN(与上面相同的链接):AthreadshouldnotuseIsWindowforawindowthatitdidnotcreatebecausethewindowcouldbedestroyedaft
在Java1.4中,您可以使用((SunToolkit)Toolkit.getDefaultToolkit()).getNativeWindowHandleFromComponent()但已被删除。看来您现在必须使用JNI来执行此操作。您有执行此操作的JNI代码和示例Java代码吗?我需要它来调用Win32GetWindowLong和SetWindowLongAPI调用,这可以通过Jawin库完成。我想要一些非常精确的东西,这样我就可以传递对JDialog或JFrame的引用并获取窗口句柄。SwingtransparencyusingJNI可能是相关的。 最
我正在尝试将Qt4应用程序转换为Qt5。我唯一想不通的是如何获得一个小部件的HWND。该程序使用EcWin7在win7+的任务栏图标上显示进度,但需要HWND。将Q_WS_WIN更改为Q_OS_WIN后,lib本身似乎编译良好)在Windows上的Qt4中,WId只是HWND的typedef,所以这没问题。在Qt5中,情况不再如此。我找到了一些mailinglistposting这可以提供线索,但似乎QPlatformNativeInterface不再是Qt5的公共(public)API的一部分。程序调用EcWin7.init(this->winId());我需要某种方式将此ID转换为