Articles of winapi

如何获得Windows启动时间?

我怎样才能获得一些WinAPI函数在C + +的Windows启动时间? 我目前使用命令“systeminfo”,但我正在寻找一个更合适的解决scheme。

UAC打开时没有pipe理员权限,程序是否可以写入磁盘的根目录?

如果我不是pipe理员,并启动一个程序写入C:\某些文本文件 – 我需要pipe理员权限…在Windows 7或Vista中? 我看到在XP中没有任何问题可以写入任何文件夹,包括system32 – 但我不确定如果一个程序在.NET中能够做到这一点,没有pipe理员权限。

我怎样才能让EnumWindows列出所有的窗口?

我假设,我问的实际上应该是默认的,但我遇到了一些我不明白的行为。 #include "stdafx.h" using namespace std; BOOL CALLBACK enumWindowsProc( __in HWND hWnd, __in LPARAM lParam ) { if( !::IsIconic( hWnd ) ) { return TRUE; } int length = ::GetWindowTextLength( hWnd ); if( 0 == length ) return TRUE; TCHAR* buffer; buffer = new TCHAR[ length + 1 ]; memset( buffer, 0, ( length + […]

捕获隐藏桌面的屏幕截图

我正在Windows上使用虚拟桌面使用简单的应用程序,我用C ++编码自己,我想知道是否有方法来捕获次要/隐藏桌面的屏幕截图? 我知道我可以做SwitchDesktop – >截图截图 – > SwitchDesktop,但它听起来不是很好的解决scheme…. 也许我在隐藏的桌面上运行一些窗口,以获得其hwnd和有人用它来捕捉整个屏幕? 我运行Spy ++,但似乎没有find不属于当前活动桌面的窗口。 提前致谢。

在FAT-32的Unicode文件名?

据我所知 – NTFS支持Unicode文件名(UTF-16作为微软的声明?)。 但是官方的MSDN文档对于在FAT-32上使用什么代码页来存储文件名(文件path)非常含糊。 在这里它说, OEM代码页 (我假设CP437)是用来存储文件名: http : //msdn.microsoft.com/en-us/library/windows/desktop/dd317748.aspx 但是,事实certificate,可以有不同的OEM代码页与CP437是其中之一: http : //msdn.microsoft.com/en-us/library/windows/desktop/dd317752.aspx 而且我们现在所有的像mount这样的工具都支持更多不同的FAT代码页,而不仅仅是OEM代码页。 那么FAT-32文件名的实际cdepage是什么? 这取决于FAT卷创build时的系统代码页。 FAT可以支持像UTF-16这样的真正的双字节字符集代码页吗? 或者像UTF-8这样的多字节字符集编码是限制吗? 更具体的问题: 当我使用CreateFileW函数(如MSDN所述,使用UTF-16作为文件名代码页)在FAT-32卷上创build文件时会发生什么?

Spy ++如何构build其进程列表?

TL; DR – Spy ++工具如何真正构build其进程列表? 阶段 我们有一个MFC桌面应用程序(在Windows XP上运行)挂起来,它不会对任何用户input作出反应。 但是,通过alt-tab切换到它时重绘。 (它接收WM_SETFOCUS , WM_ACTIVATE等,它显然没有收到任何鼠标或键盘消息。) 由于该应用程序悬挂在某种程度上,我们拉了一些进程垃圾,但目前为止这些帮助并不大。 input: 间谍++ 我们使用Spy ++来查找上面给出的有关此应用程序似乎正在处理的窗口消息的信息。 我们通过打开Windows视图来完成 并select我们的应用程序窗口,并在消息属性中selectWindows of same process和Messages to View : Select All 。 但是,我们首先尝试通过打开“ 进程视图”来查看此进程的所有消息 Spy ++和我们的应用程序没有显示在这个进程列表中 。 在应用程序正常运行的另一台PC上进行交叉检查,该进程通常也会显示在Spy ++的进程列表中。 从Spy ++的进程视图中没有显示这个进程的事实可以推断出行为不正常的应用程序的任何事情 ,但应用程序的主窗口显示在Windows视图。 为什么在Spy ++的进程视图中有一个不可见的主窗口进程? 该进程列在任务pipe理器和Visual Studio 2005的附加进程窗口中。所以这些工具明显使用不同的方法来列出进程比Spy ++ …? 该应用程序当前挂起的系统是Windows XP SP2系统,我们使用了Visual Studio 2005附带的Spy ++ Utility。 这种行为偶尔会重复发生,但只有在应用程序运行了几天之后!

我如何强制在Windows中显示检测?

我经常用连接在另一台计算机上的KVM切换器启动Windows 7电脑。 当我切换到启动电脑时,显示分辨率是错误的(并且没有检测到第二个连接的显示器)。 我可以通过右键单击桌面,selectScreen Resolution并单击Detect来更正此问题。 这使Windows检测到连接的显示器,并调整到最佳的分辨率。 我想写一个小工具自动执行此操作。 我应该使用哪个Win32 API调用或C#对象?

特定networking接口IPv4可用性 – 无连接,本地,Internet

如何识别特定NetworkInterface连接状态? NetworkInterface[] nets = NetworkInterface.GetAllNetworkInterfaces(); foreach (var n in nets) { // TODO: determine connectivity status of each network interface // ( mainly interested in IPv4 connectivity ) } 这个问题不是关于一般的互联网连接 ,因此使用GetIsNetworkAvailable()不是一个解决scheme OperationalStatus.Up可以用来过滤一些不活动的networking接口,但不是全部 – OperationalStatus.Up在一些显示“无networking访问”的IPv4和IPv6接口 我也知道如何获得IPv4 UnicastAddresses ,但那么有用的是什么? 在WMI的这些部分我找不到任何相关的东西 即提取每个接口状态为互联网,本地,有限或无

在结构上溢出的整数

对于不支持64位算术的编译器,有ULARGE_INTEGER联合 。 如果最后一行的加法溢出,下面的代码会发生什么? ULARGE_INTEGER u; u.LowPart = ft->dwLowDateTime; u.HighPart = ft->dwHighDateTime; u.LowPart += 10000; //what if overflow? 相关问题: ULARGE_INTEGER工会的重点是什么?

有没有办法在编辑公共控制中添加我自己的button?

说,如果我在我的基于MFC的对话框窗口中有一个默认的编辑公共控制 : 我正在寻找一种方法来添加一个小的“X”(或删除)button里面(这是我的Photoshop渲染我需要): 有没有办法通过修改默认的编辑控件?