Articles of winapi

CRITICAL_SECTION设置并获得单一的bool值

现在写复杂的class ,觉得我用了很多CRITICAL_SECTION 。 据我所知,有一些types的primefaces操作,总是执行没有任何硬件或软件中断。 我想检查我是否正确理解一切。 设置或获取primefaces值,我们不需要CRITICAL_SECTION因为这样做不会有中断。 bool是primefaces的。 所以有我的陈述,要问,如果他们是正确的,如果他们是正确的,什么types的variables也可以设置或得到没有CRITICAL_SECTION ? PS我正在谈论获取或设置每个方法一个单一的值 ,而不是两个,不是五个,而是一个。

通过图像名称获取进程的进程句柄

我需要从C使用Win32最简单的方式获取另一个进程的进程句柄的可执行文件名。 我正在寻找的过程没有任何注册的窗口类。 我也知道,如果它正在运行,将只有一个它正在运行的实例。

如何从Windows应用程序检测禁用的networking接口连接?

我想知道什么时候一个接口已被禁用。 如果我进入Windowspipe理器并禁用其中一个启用的连接,GetIfTable()只返回关于1接口的状态,它不再看到断开的连接。 (返回1表) 我怎么能得到的东西,返回的残疾界面仍然存在,但目前禁用? 谢谢。 http://msdn.microsoft.com/en-us/library/aa365943%28VS.85%29.aspx

什么是正确的解决scheme,以支持在文本编辑器中的插入符号运动IAccesible接口?

我想从零开始实现一个支持IAccessible接口的文本编辑器。 我正在使用MFC和Win32 API。 当标记文字编辑器(如记事本)中的插入符号位置发生变化时,插入符号移动的相应字母,单词或行将由Narrator,JAWS等客户端工具发出。我不知道如何实现此function。 我search互联网并阅读MSDN文档。 我在http://msdn.microsoft.com/en-us/library/dd317978.aspx和http://msdn.microsoft.com/en-us/library/dd373892.aspx阅读客户端请求通过AccessibleObjectFromWindow方法从操作系统,和操作系统发送WM_GETOBJECT到应用程序。 WM_GETOBJECT消息在相应的窗口callback函数中收到,但hWnd用于脱字符号移动事件是NULL。 我检查了线程消息队列,但是WM_GETOBJECT在线程消息队列中根本没有收到。 一种有效的方法,但不是正确的解决scheme是打电话 NotifyWinEvent( EVENT_OBJECT_NAMECHANGE, hwnd, OBJID_CLIENT, CHILDID_SELF ) 当用户移动插入符时。 当客户要求更改的名称时,我会返回与相关的脱字符号相关的文字。 HRESULT CMyEditor::get_accName(VARIANT varChild, BSTR *pszName) { *pszName = SysAllocString( L"CORESPONDING TEXT TO THE CARET MOVEMENT" ); return S_OK; }

官方的方式获取线程信息/环境块(TIB / TEB)

在Windows中,如果没有logging,很久以前就知道当前线程的线程信息块(TIB)可以在FS:0find。 但是,这只适用于FS寄存器存在于第一位的Intel CPU。 现在我想到基于ARM的Windows系统(Windows Phone和Windows RT)上的TIB。 请问有API吗? 编辑:我想获得崩溃报告的目的线程堆栈基地。 有关TIB / TEB的信息: http : //www.microsoft.com/msj/archive/S2CE.aspx

LNK2022和LNK2034链接器与CRT版本10.0的错误

抱歉打扰有这个问题的任何人,但我一直在研究这个小时,还没有决议呢: 我正在向Visual Studio 2010中的10.0 CRT(编译器)移植一个相当庞大的应用程序。该应用程序是托pipe使用/ clr的C ++ / CLI。 大部分代码是本机的(95%),其中有一些托pipe部分。 所以我的工作是让.vcxproj中的开关指向新的10.0 CRT(即编译器)。 我们以前使用v90,或者使用VS 2008 SP1附带的VC编译器。 好的,如此突破变化? 看起来像一堆实际上。 我修复了一些处理集合的迭代器问题,这一切都非常简单。 但是,这些链接器错误正在杀死我。 任何帮助,将不胜感激: 1>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (80131195) : Custom attributes are not consistent: (0x0c0001c0). 1>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (80131195) : Custom attributes are not consistent: (0x0c0001c5). … 1>MSVCMRTD.lib(locale0_implib.obj) : error LNK2034: […]

在Windows进入待机或hibernate状态之前使用Win32 API接收事件

我正在开发一个用C ++ / Qt编写的小型聊天应用程序。 我的用户抱怨说,在closures笔记本电脑盖并且电脑进入待机状态时,连接没有正常closures。 是否有一个Win32挂钩可用,当Windows即将进入待机状态时被调用?

如何在从VC ++ 6.0转换的VC ++ 2010项目中使用iFileDialog?

我可以像这样在VC ++ 2010应用程序中使用FileSaveDialog(Common Item Dialog): IFileDialog *pFileDialog; HRESULT hr = CoCreateInstance(CLSID_FileSaveDialog, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pFileDialog)); 但是当我把这个代码放到我从VC ++ 6.0转换到VC ++ 2010的项目中时,出现以下错误: “错误C2787:”IFileDialog“:没有GUID已与此对象关联” 在IID_PPV_ARGSmacros和float-over错误下,我也得到一个红色的IID_PPV_ARGS : “_uuidof的操作数必须具有指定了_declspec(uuid('…'))的类或枚举types” 我没有在任何一个项目中使用公共语言运行时支持(/ clr)。 如何将GUID与我的对象关联?

如何获取Windows 8中活动窗口的标题颜色

如何在Windows 8中获得活动窗口的标题颜色? 我试图调用GetSysColor(COLOR_ACTIVECAPTION)但它返回不同的颜色。 这很奇怪,因为在Windows 7中它是正确的。 有没有其他方式如何获得活动窗口的标题颜色或任务栏的颜色?

CreateProcessWithLogonW和AssignProcessToJobObject

我有一个Windows服务(在WinXP SP2下),在LocalSystem帐户下运行,使用CreateProcessWithLogonW启动进程。 为了清理subprocess,我试图使用一个作业对象和TerminateJobObject。 MSDN指出,作业句柄必须具有JOB_OBJECT_ASSIGN_PROCESS访问权限,因为它是通过CreateJobObject创build的。 进程句柄必须具有PROCESS_SET_QUOTA和PROCESS_TERMINATE权限。 我认为它有自从TerminateProcess和SetProcessWorkingSetSize都返回没有错误。 但是,AssignProcessToJobObject失败,错误5(拒绝访问)。 一切工作正常,如果我用一个简单的CreateProcessreplaceCreateProcessWithLogonW。 我错过了什么,或者是我想要做的事情吗? 编辑:似乎svchost.exe,实际上CreateProcessWithLogonW使用时创build该进程,已经分配进程的匿名作业。 CREATE_CREAKAWAY_FROM_JOB标志被这个函数忽略。 所以真正的问题是:有没有办法阻止svnhost分配进程的工作?