Articles of winapi

在C#中查看非托pipedll上的导出表

我目前正在尝试创build一个C#应用程序,这将允许我从非托pipeDLL查看导出表。 我的问题是,一旦我有了所需的指针,我就不知道如何循环API提供给我的信息。 这是我现在所拥有的: using System; using System.ComponentModel; using System.Runtime.InteropServices; namespace DLLMapper { class DLLExportViewer { #region APIs [DllImport("imagehlp.dll")] public static extern Boolean MapAndLoad(String ImageName, String DllPath, ref LOADED_IMAGE LoadedImage, Boolean DotDll, Boolean ReadOnly); [DllImport("imagehlp.dll")] public static extern Boolean UnMapAndLoad(ref LOADED_IMAGE LoadedImage); [DllImport("dbghelp.dll")] public static extern IntPtr ImageDirectoryEntryToData(IntPtr Base, Boolean MappedAsImage, UInt16 DirectoryEntry, ref Int32 Size); […]

确定文件是否是连接(在Windows中)?

我一直在四处搜寻,试图find一种方法来确定一个文件是否是一个交叉点,并没有find任何满意的答案。 我尝试的第一件事是: Files.isSymbolicLink(aPath) 它只检测符号链接,而不是在Windows中被称为连接点的文件。 也尝试了这里提出的解决scheme(使用JNA库): Stackoverflow的问题(3249117) ,但它从来没有返回真正的任何文件,我知道是路口。 我发现确定哪些文件是连接点的唯一方法是在Windows命令提示符下运行以下命令: DIR /S /A:L 在我的计算机上,它返回66个文件夹,而Files.isSymbolicLink(aPath)只返回2.所以我想我可以find一种方法来利用这个,但我不认为这将是非常有效的遍历文件树。 有没有办法做到这一点使用标准的Java库,或者替代JNA?

我们如何轮询堆栈状态 – 未使用(可用)的内存

我们如何获得这些信息? 我想这是依赖于操作系统,我正在运行Windows,所以我的问题是指Windows API。 有什么function可以为我们做 – 为调用线程获取剩余的堆栈内存? 或者,如果我们能够找出以下细节,我们将能够自行计算: 获取线程堆栈基地址 。 必须有一些函数把一个线程标识符作为参数,并返回一些关于它的信息(比如…栈基地址?) 获取线程堆栈大小 。 如果线程是由我们启动的,我们可以知道它(因为我们在调用CreateThread时指定了它)。 但是,如果它是主程序,由操作系统为我们的程序启动,或者其他任何线程我们没有明确启动,我们如何find它? 获取当前的堆栈指针 。 那么,这很容易。 我们可以用esp来检查,也可以取一个局部variables的地址来得到一个很近的位置。 这是为了教育目的,但我想它可以用来阻止recursionalgorithm导致堆栈溢出 – 而不是使用任何最大深度限制function。

捕获窗口像素,而不pipe它的z顺序

我其实是试图读取被别人隐藏的窗口上的特定像素。 我想从GDI库中使用GetPixel函数,但它似乎只适用于全局设备上下文。 我无法从特定的窗口读取像素,我不明白为什么..我发现这篇文章使用PrintWindow函数将特定的窗口内容复制到可以读取的临时设备上下文中。 但我不能重现它。 编辑 谢谢大家,我的问题解决了:) 即使窗口被隐藏,该脚本也会为您提供选定窗口上指针的RGB颜色。 请注意,此程序必须以pipe理员权限启动才能获取以pipe理员权限启动的进程的像素。 #define STRICT #define WINVER 0x0501 #define _WIN32_WINNT 0x0501 // 0x0501 for PrintWindow function // You must be at least running Windows XP // See http://msdn.microsoft.com/en-us/library/6sehtctf.aspx #include <stdio.h> #include <string.h> #include <windows.h> #define WINDOW_LIST_LIMIT 32 #define WINDOW_NAME_LIMIT 1024 void FatalError(char* error) { printf("%s", error); exit(-1); } HWND window_list[WINDOW_LIST_LIMIT]; […]

使用WH_KEYBOARD的SetWindowsHookEx不适用于我,我错了什么?

#include <iostream> #include <fstream> #define _WIN32_WINNT 0x501 #include <windows.h> using namespace std; HHOOK hKeyboardHook = 0; LRESULT CALLBACK KeyboardCallback(int code,WPARAM wParam,LPARAM lParam) { cout << "a key was pressed" << endl; ofstream myfile; myfile.open ("hookcheck.txt", ios::ate | ios::app); myfile << "a key was pressed\n"; myfile.close(); return CallNextHookEx(hKeyboardHook,code,wParam,lParam); } int main() { HWND consoleWindow = GetConsoleWindow(); […]

检查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?