Articles of winapi

检查API是否受到监视(挂钩?)

我的应用程序使用一些像GetProcAddress和CreateProcess这样的API,有时会导致Antiviruses将其标记为恶意,即使它不是。 我想要做的是检查一个特定的API是否被监视或挂钩,如果是,那么我不会调用该部分的代码。 我如何检查某个API是否被挂钩? 这是用C编写的Windows应用程序 谢谢。

如何使用GetMonitorCapabilities和GetMonitorBrightness函数

我正在尝试以编程方式调整我的显示器亮度。 经过一点研究,我想出了这个链接 ,并且写下了下面的代码(主要是复制来自其他链接的粘贴)。 #include "Windows.h" #include "WinUser.h" #include "PhysicalMonitorEnumerationAPI.h" #include "HighLevelMonitorConfigurationAPI.h" #include <strsafe.h> void ShowError(LPTSTR lpszFunction); int main() { HMONITOR hMonitor = NULL; DWORD cPhysicalMonitors; LPPHYSICAL_MONITOR pPhysicalMonitors = NULL; HWND hWnd = GetDesktopWindow(); // Get the monitor handle. hMonitor = MonitorFromWindow(hWnd, MONITOR_DEFAULTTOPRIMARY); // Get the number of physical monitors. BOOL bSuccess = GetNumberOfPhysicalMonitorsFromHMONITOR(hMonitor, &cPhysicalMonitors); if […]

准确设置winsockselect超时

我试图让我的接受呼叫在特定的时间段后超时,我试着在这里的build议: Winsock接受超时 在这种情况下,我传递一个TIMEVAL结构来select当我打电话时,问题是当我设置tv.tv_usec约40分钟左右,select呼叫立即超时,而不是等待我指定的40分钟。 MSDN指出,select的超时是它将等待的最长时间,我该如何使select或receive在这个超时之前等待特定的时间? #define WIN32_LEAN_AND_MEAN #include <Windows.h> #include <WinSock2.h> #include <Ws2tcpip.h> #include <cstdio> #include <tchar.h> VOID _tmain( int argc, TCHAR *argv[] ) { WSADATA wsaData = { 0 }; ADDRINFOA hINTs = { 0 }; PADDRINFOA pResult = NULL; SOCKET hServerSocket = INVALID_SOCKET, hClientSocket = INVALID_SOCKET; TIMEVAL tv = { 0 }; INT iReturnStatus […]

如何使用python / pyqt / win32获取windows任务栏的高度

我试图让我的GUI程序alignment窗口的右下angular(当任务栏不是隐藏的时候,我的程序就会站在任务栏的顶部!)。 那么大家会告诉我使用python / pyqt / win32,如何: 1.检查自动隐藏function是否开启(任务栏) 2.获取任务栏的高度 万分感谢!

Win32:BitTest,BitTestAndComplement,… < – 如何禁用这个垃圾?

在VS2008 SP1安装中,WinNT.h中有以下几行: #define BitTest _bittest #define BitTestAndComplement _bittestandcomplement #define BitTestAndSet _bittestandset #define BitTestAndReset _bittestandreset #define InterlockedBitTestAndSet _interlockedbittestandset #define InterlockedBitTestAndReset _interlockedbittestandreset 我有一些基于BitTest <>()的模板, 有谁知道一个简单的方法来禁用这些#定义? MS通常会提供一个#define XXX符号,如果定义了这个符号,将禁用它们头部的一些违规部分 – 例如NOMINMAX。 我一直无法find解决上述问题的办法。 如果你与微软的许多可疑的select分享挫折,阅读。 如果没有,请到这里。 ;) 编者按: 为什么微软不能使用_bittest本身? 或者为什么他们不能像每个人都知道你应该使用BITTEST – 总是使用macros的全部大写! 微软仍然#定义2010年的事情? WTF?

为什么IsWindowVisible使EnumDesktopWindows的callback只运行一次?

看下面的代码。 MyEnumProc只运行一次下面的代码。 但是如果我把IsWindowVisible(wnd)注释掉了,它会运行很多次。 为什么IsWindowVisible发生这种情况(只运行一次)? 我以为IsWindowVisible只是一个函数来检查wnd的属性? 代码test.c: #include <windows.h> #include <stdio.h> BOOL CALLBACK MyEnumProc( HWND wnd, LPARAM lParam ) { printf("run\n"); IsWindowVisible(wnd); } int main( void ) { EnumDesktopWindows( NULL, MyEnumProc, 0 ); printf("end\n"); return 0; } 我的环境是: Windows XP SP3。 gcc 3.4.6(mingw) 编译选项是:gcc -o test.exe test.c 我做了编译并在cmd.exe中运行test.exe。

以编程方式在Windows设备pipe理器中卸载设备

是否有可能以编程方式卸载在Windows中的设备,并以编程方式执行“扫描硬件更改”? 有没有可用于相同的VB脚本? 或者是否有任何Windows API可以被称为实现相同? 请指导。 谢谢 Ananth

ListView_GetItem()macros和LV_GETITEMTEXT返回空STRING,而获得另一个APP列表视图项目

我完全知道如果我尝试获取另一个应用程序列表视图项目的缓冲区,我需要解决内存空间的边界,所以我在做什么是挂钩哪个返回好,没有错误,成功 enter code here LVITEM lvi; lvi.cchTextMax = 552; lvi.mask = LVIF_TEXT; _tfreopen(path,_T("w"),stdout); for (int nItem = 0; nItem < nMaxItems; nItem++) { // Get the name and position of a ListView item. lvi.iSubItem = 0; lvi.iItem = nItem; lvi.pszText = szName; ListView_GetItem(hWndLV, &lvi); wprintf(L"%s, ", szName); wprintf(L"%s, ", lvi.pszText); for ( int subitem = […]

活动窗口上是否有Windows系统事件更改?

我正在开发的桌面应用程序需要知道在应用程序运行时哪些窗口处于活动状态。 目前它每250毫秒执行GetForegroundWindow()调用( user32.dll )。 这个方法不是很准确。 是否有任何Windows(WINAPI?)事件每次激活(聚焦)窗口更改时触发? 我想订阅我的callback函数。 谢谢。

path前缀\ ?? \和\\?\

以\??\为前缀的path和以\\?\为前缀的path有什么不同\\?\ 在Windows 7 CMD线 DIR给出: \??\Volume{00000000-0000-0000-0000-000000000000}\ WMIC VOLUME LIST给出\\?\Volume{00000000-0000-0000-0000-000000000000}\ 谢谢 附加信息: 我在我的系统驱动器上创build了一个目录,放置了所有的安装点。 所以我首先做了一个MD C:\HDDs ,然后是MD C:\HDD\Drive1 , MD C:\HDD\Drive2 …。 将驱动器安装到这些空目录后,可以通过切换到具有CD /DC:\HDDs的DIR并发出DIR命令来查看GUID。 也许我必须发出DIR /ah来显示隐藏的东西,以防万一挂载点是隐藏的目录…