Articles of winapi

C#中的本地窗口层次结构和类名

我正在创build一个函数来查找给定窗口层次结构的特定窗口,如下所示: protected bool MapWindowHierarchy (ATS.Library.Window window) { bool result = false; List<Process> processes = null; processes = GetProcesses().ToList(); processes.ForEach ( process => { if (process.MainWindowHandle == window.Handle) { // Populate window properties. // Get child windows with filled properties. } } ); return (result); } protected bool MapWindowHierarchy (List<ATS.Library.Window> windows) { return (windows.All(window => this.MapWindowHierarchy(window))); […]

在Windows Server 2008上告诉从关机重启

根据MSDN,无法确定是否使用WM_ENDSESSION消息重新启动或closures。 我发现这样做的唯一方法 ,但它是相当丑陋的,只适用于Windows 2000 Server,不适用于2008 Server。 我问的原因是我正在将Linux守护进程作为系统服务移植到Windows。 该守护进程在重新引导和系统closures事件中的行为不同。 我也在python32项目中使用python,如果它以某种方式帮助回答。

Win32编程隐藏控制台窗口

即时通讯学习C ++和我做了一个新的程序,我删除了一些代码,现在我的控制台窗口不会隐藏有没有办法让它隐藏在启动时没有他们看到它

WinAPI睡眠()函数调用睡眠时间比预期更长

操作系统:Windows 7 当将WinAPI Sleep()函数调用为Sleep(1)时,该线程实际上会hibernate15ms。 我做了100次循环,总睡眠时间是1500ms而不是100次。 这是常见的行为,还是应该关心我的MOBO,CPU,Windows安装有问题? 编辑:如果可能的话,你可以运行这个代码,并发表多久的睡眠时间。 我让我的一个朋友运行这个,他实际上已经在1ms。 #include <iostream> #include <ctime> #include <Windows.h> void test(void) { std::cout << "Testing 1ms sleep." << std::endl; for (unsigned int i = 0; i < 10; i++) { std::clock_t startClocks = std::clock(); Sleep(1); std::clock_t clocksTaken = std::clock() – startClocks; std::cout << "Time: " << clocksTaken << "ms." << […]

当QueryPerformanceCounter被调用时会发生什么?

我正在研究在我们的系统中使用QueryPerformanceCounter的确切含义,并试图了解它对应用程序的影响。 我可以看到在我的4核单CPU机器上运行它需要大约230ns运行。 当我运行在24核心4 CPU的Xeon它需要大约1.4ms运行。 在我的机器上运行multithreading时更有趣,它们不会互相影响。 但是在多CPU机器上,线程会导致某种交互,导致它们互相阻塞。 我想知道是否有总线上的一些共享资源,他们都查询? 当我调用QueryPerformanceCounter时究竟发生了什么,它真正衡量的是什么?

以编程方式解锁Windows工作站

我想编写一个解锁工作站的小应用程序。 把我需要的规格放在非常简单的位置:运行一个exe文件,并在规定的时间(比如午夜)解锁工作站。 当然,应用程序知道login帐户的用户和密码。 我知道LogonUser API,并尝试使用它,但失败了。 有没有人有解决scheme,代码摘录,实际上适用于这个问题? 我的目标是NT5操作系统。 那么,因为人们开始问是什么原因:我正在做一个桌面共享应用程序,我想添加解锁工作站的function。 有一个非常小的和简单的应用程序来解锁站在一个确定的时间是为了分离问题,并避免了整合的细节。

VB 6应用程序如何确定它是否在Windows 10上运行?

我想我的VB 6应用程序检测并显示运行的Windows版本。 我从另一个堆栈溢出问题试过这个代码 ,但它不适合我。 它在旧版本的Windows(如Windows XP和Vista)上显示正确的版本号,但无法检测到Windows 10.出于某种原因,它说Windows 10是Windows 8。 我以为Windows 10会有一个主要版本的“10”和次要版本的“0”, 这个Windows版本号的图表证实了它。 那么,为什么GetVersionEx函数从来没有真正返回版本10.0? 我怎样才能准确区分Windows 8,Windows 8.1和Windows 10?

为什么SetUnhandledExceptionFilter不能捕获一些exception,但AddVectoredExceptionHandler可以做到

我遇到了一个问题,即传递给SetUnhandledExceptionFilter的函数在exception代码c0000374提升时没有被调用。 但它可以正常工作,例外代码为c0000005。 然后,我尝试使用AddVectoredExceptionHandler ,而没有问题,处理函数被调用正确。 这是API错误? 我可以在任何地方使用AddVectoredExceptionHandler而不是SetUnhandledExceptionFilter吗? 这两个函数正常工作 // Exception code c0000005 int* p1 = NULL; *p1 = 99; 只有AddVectoredExceptionHandler可以捕获这个exception。 (为了certificate它不依赖于运行时库,我手动引发exception,结果相同。) // Exception code c0000374 RaiseException(0xc0000374, 0, 0, NULL); testing程序。 #include <tchar.h> #include <fstream> #include <Windows.h> LONG WINAPI VectoredExceptionHandler(PEXCEPTION_POINTERS pExceptionInfo) { std::ofstream f; f.open("VectoredExceptionHandler.txt", std::ios::out | std::ios::trunc); f << std::hex << pExceptionInfo->ExceptionRecord->ExceptionCode << std::endl; f.close(); return […]

如何以编程方式重新启动Windows资源pipe理器进程

我正在一个Windowsshell扩展,不幸的是,当对DLL进行更改时,我必须重新启动Windows资源pipe理器(因为它保持在内存中的DLL)。 我从迪诺埃斯波西托发现了这个节目,但它对我不起作用。 void SHShellRestart(void) { HWND hwnd; hwnd = FindWindow("Progman", NULL ); PostMessage(hwnd, WM_QUIT, 0, 0 ); ShellExecute(NULL, NULL, "explorer.exe", NULL, NULL, SW_SHOW ); return; } 有人可以分享一些东西吗? PS我意识到,我可以去任务pipe理器,并杀死探险家的过程,但我只是想这样做的懒惰的方式。 此外,这使自动化。 PPS我正在使用.NET进行开发,但shell重启function可能是C,C ++或.NET语言。 它只是一个小型的独立可执行文件。

从C打开Windows文件/文件夹属性对话框

我有这个微小的程序,它是在指定的info.lpFile上显示Windows文件/文件夹属性对话框: #include <windows.h> main() { SHELLEXECUTEINFO info = {0}; info.cbSize = sizeof(SHELLEXECUTEINFO); info.lpFile = "C:\\test.txt"; info.nShow = SW_SHOW; info.fMask = 0x00000000; info.lpVerb = "properties"; ShellExecuteEx(&info); } 当我编译并执行它时,我得到以下错误信息: 我正在使用Win7和Mingw gcc编译器。 有人知道我的代码有什么问题吗? 我错过了什么吗?