我必须编写一个应用程序来观察另一个应用程序并从窗口中提取信息。从其他应用程序访问窗口并从其控件获取数据的最佳方式是什么? 最佳答案 您需要P/InvokeFindWindow和FindWindowEx函数来检索其他应用程序的父窗口和子控件的句柄。然后你需要使用像GetWindowText这样的东西访问特定控件的文本。访问pinvoke.net对于定义,您需要从C#调用这些函数。请注意,这不是一个完全直接的追求。您应该停下来考虑您是否真的有充分的理由想要这样做,以及您的目标是否无法以更简单的方式实现。
我正在尝试使用Windows中的uxTheme库绘制我自己的自定义控件,但我无法弄清楚为什么我的控件看起来不像(据说)使用与我相同主题的常规Windows控件'我使用:上图显示了一个标准的WindowsComboBox(顶部)和我使用ComboBox主题绘制的自定义控件(底部)。我无法弄清楚为什么我的控件的边框与标准控件的形状和颜色不同。在我的类构造函数中,我打开主题数据:mComboTheme=OpenThemeData(hwnd,L"COMBOBOX");然后在WM_PAINT的处理程序中,我只绘制了ComboBox组件的两个部分:caseWM_PAINT:{PAINTSTRUCT
我搜索了几个小时,试图找到某些环境变量在控制面板>系统>高级系统设置>环境变量中可见的原因。其他变量在哪里设置,为什么在这里看不到? 最佳答案 Windows将每个用户特殊文件夹的位置存储在以下注册表项下:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserShellFolders在HKEY_LOCAL_MACHINE下的相同路径中指定common特殊文件夹:HKEY_LOCALMACHINE\Software\Microsoft\Wind
检测其他进程的窗口移动/拖动的最佳方法是什么?在Windows764位中我目前正在研究使用C++和C#的DLL中的全局Hook。这很痛苦,因为它不想正常工作。我在键盘和鼠标Hook方面取得了一些成功。但对于窗口消息,我只是不知道出了什么问题。这是我的.dll文件中的代码#include#include#includeHINSTANCEhinst;#pragmadata_seg(".shared")HHOOKhhk;WNDPROCrealProc;#pragmadata_seg()//#pragmacomment(linker,"/SECTION:.shared,RWS")compile
我想知道如何使用C++编程在Windows中打开任何应用程序,我正在使用devC++。我使用了system()但它表现不佳或者我没有正确使用它。请告诉我system()的语法来打开一个应用程序或告诉另一个函数。 最佳答案 使用shell执行而不是windows系统。#include//Linkwithlibrary:Shell32.liborlibshell32.aShellExecute(NULL,//handletotheparentwindow"open",//Actiontotake"Notepad.exe",//Progr
我想知道有没有办法改变其他应用程序的定位是C++。我想要做的是在屏幕上移动事件窗口。例如,我想以循环方式移动Firefox。在2:17http://www.youtube.com/watch?v=TLqPepLhDTY&list=WL8D6E1A188FBFE181浏览器移动了,我该怎么做? 最佳答案 您应该首先使用FindWindow()函数获取窗口的HWND。然后你可以简单地使用SetWindowPos()或MoveWindow()用找到的HWND改变位置。 关于c++-我如何与C+
我想可靠地模拟用户对其他窗口的输入。我为此使用了SendInput,但是我需要等到目标应用程序处理完输入后再发送更多。据我所知,SendInput,尽管它的名字,实际上是将消息发布到队列并且不会等到它们被处理。我的尝试是基于等待消息队列至少一次为空的想法。由于我无法直接检查其他线程的消息队列(至少我不知道这样做的方法),我正在使用AttachThreadInput将目标线程的队列附加到该线程的队列,然后PeekMessage进行检查。为了检查功能,我使用了带有一个窗口和一个按钮的小应用程序。单击按钮时,我调用Thread.Sleep(15000)有效地停止消息处理,从而确保接下来的15
我在Windows中工作,使用Unicode中的vc++2010和MFC。以下是我的代码:CStringWstrLowerGreek(L"αβγ");CStringWstrUpperGreek(L"ΑΒΓ");if(0==strLowerGreek.CompareNoCase(strUpperGreek))AfxMessageBox(_T("Twostringsarethesame"));elseAfxMessageBox(_T("Twostringsaredifferent"));当我运行代码时,弹出消息是“两个字符串不同”。我想做的例如在C盘创建αβγ.txt,在D盘创建ΑβΓ.t
RichEditControls的文档真的像它看起来的那样糟糕(错误吗?)?现在我正在手动调用LoadLibrary("riched20.dll")以便显示RichEdit控件。RichEdit的文档在使用RichEdit控件的第一个代码示例中没有很好地演示这一点。它谈到调用InitCommonControlsEx()来添加视觉样式,但没有提到要传入哪些标志。是否有更好的方式来加载RichEdit控件?http://msdn.microsoft.com/en-us/library/bb787877(VS.85).aspx这是我唯一能写的让它工作的代码:#include"Richedit
我正在开发一个需要ActiveX控件才能运行的网络应用程序。当用户具有管理员权限时,它安装得很好,否则无法加载。这是设计使然吗?如果是,是否记录在某处?(最好是MSDN) 最佳答案 实际上,这些答案都不是完全正确的;如果您在每个用户的基础上安装ActiveX控件,则无需管理权限,无论用户所在的组如何,它都可以正常工作。基本上这涉及将它安装到HKEY_CURRENT_USER而不是HKEY_LOCAL_MACHINE。根据您的activex控件编写的内容,这可能很容易更改,也可能很难更改;使用ATL9非常简单,因为您只需调用一个函数: