Tag: winapi

读取进程内存

我正在尝试从进程中读取内存(calc.exe)。 但是我打的是“无法读取内存”的消息。 我的错误在哪里? int main() { HWND handle = FindWindow(0, TEXT(“Calculadora”)); if (!handle) { msg(“Could not find window”); return 0; } DWORD id; GetWindowThreadProcessId(handle, &id); HANDLE proc = OpenProcess(PROCESS_VM_READ | PROCESS_VM_WRITE | PROCESS_VM_OPERATION, FALSE, id); if (!proc) { msg(“Could not open process”); return 0; } char buffer[128]; if (ReadProcessMemory(proc, 0, &buffer, 128, NULL)) { msg(“yes!!”); […]

如何将内存中的音频数据保存为wav文件?

当应用程序在Windows上调用waveOutWrite(HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh)时,我会保存一份发送到内存中音频卡的音频数据(由pwh-> lpData指向)。 现在我想将音频数据保存为磁盘上的WAV格式文件,我该怎么做? 我有指向音频数据块的指针和audo数据的大小。

如何使用GetFullPathName提取没有文件夹路径的文件名

我想从路径字符串中提取文件名,但我对GetFullPathName函数有困难: WCHAR *fileExt; WCHAR szDir[256]; //dummy buffer GetFullPathNameW(g_fileName,256, szDir,&fileExt); //g_filename is filename with path string swprintf(szDestDir, L”C:\\Example\\%s”, fileExt); MessageBoxW(hwnd,szDestDir,L”Debug”,MB_OK); //debug message 每次消息框显示“C:\ Example \ 0”而0表示文件名,例如“text.txt”。

在C中获取处理时间的问题(请帮帮我)

我是C和WinAPI的新手。 我花了3个多小时尝试这样做,但完全失败了。 谁能帮助我? 这是我的代码: FILETIME *KernelTime; // Or struct _FILETIME *KernelTime HANDLE Process = OpenProcess ( PROCESS_ALL_ACCESS, FALSE, 0); // 0 is the PID of System Idle Process GetProcessTimes (Process, NULL, NULL, KernelTime, NULL); /* How to write here? */ double ElapsedProcessTime // Target !! 我认为这些可能对解决这个问题很有用: http://msdn.microsoft.com/en-us/library/windows/desktop/ms683223%28v=vs.85%29.aspx http://msdn.microsoft.com/en-us/library/windows/desktop/ms724284(v=vs.85).aspx http://msdn.microsoft.com/en-us/library/windows/desktop/ms724280(v=vs.85).aspx 编译器:GCC-mingw32 谢谢。

检测Win + Tab任务视图

在Windows 10上,您可以按Win + Tab以获取所有窗口的“任务视图”视图。 我试图在任何给定时间检查这是否有效。 我尝试使用WH_KEYBOARD_LL的低级键盘挂钩,但这只允许我检测按键,而不是切换器处于活动状态。 我查看了Windows DWM API,但也没有找到任何其他内容。 我也尝试过使用EnumWindows()和EnumChildWindows(GetDesktopWindow(), …)并且在显示和隐藏任务视图之间的输出中没有发现任何差异。 有没有准确的方法来检测是否显示?

将具有NULL字节的C字符串转换为char数组

我正在使用具有多个选择function的GetOpenFileName 。 挑选的文件在LPSTR中返回。 在此LPSTR中,所选文件由NULL字节分隔。 我想将LPSTR拆分成一个数组,然后遍历该数组。 在PHP中我会这样做: $array = explode(“\0”, $string); 但由于我是C的新手,我不知道自己在做什么。

限制用户停止Windows服务

我参与编写Windows服务。 在我开始写作之前,我想知道 在LOGIN USERS方面要考虑哪些要点,特别是如何限制其他用户“停止服务”? 在编写服务时我应该考虑哪些通用点? 一旦用户尝试停止服务,如何显示警告提示? 注意:我正在尝试用C编写服务。 谢谢。

注册Windows类Win32

注册win32程序的窗口类的最佳做法是什么? 您是否在WinMainfunction中注册每个课程或者是否需要?

联锁function和primefaces性:仍然困惑

我仍然对以primefaces方式读取和写入变量感到困惑。 对于那些在以前的问题中试图提供帮助的人,请提前抱歉。 今天我被告知,在读取和写入一个32位long值时,不需要任何Interlocked函数调用,这会打破我以前的信念 。 实际上,这支持了MSDN所说的内容 对正确对齐的32位变量的简单读取和写入是primefaces操作。 换句话说,您最终只会更新变量的一部分; 所有位都以primefaces方式更新 然后我看看atomic_long中的atomic_long是做什么的; 其operator=使用新值对当前值执行_InterlockedExchange() 。 这不与MSDN相矛盾; 如果读/写是primefaces的,为什么需要这个Interlocked函数? 在同一个MSDN页面上,我们也有 对64位Windows进行简单的读取和写入正确对齐的64位变量是primefaces的。 在32位Windows上,不保证对64位值的读写操作是primefaces的。 对其他大小的变量的读写不保证在任何平台上都是primefaces的。 所以我接着进入atomic_bool的’ operator= ; 它执行_InterlockedExchange8调用, MSDN告诉我该调用仅适用于Windows 8及更高版本。 这似乎支持第二个MSDN报价。 如果我使用VS 2005并针对Windows XP,我如何确保布尔变量的primefaces读/写? 我是否必须使用互斥锁或类似的? 如果读/写操作不是primefaces的,那么它就容易被撕裂; 那是对的吗? 我读过这个PAQ ,说原始类型不是primefaces的。 这再次与我在问题中告诉我的内容以及MSDN告诉我的内容相矛盾。 谁是对的?

GetThreadTimes如何报告hibernate时间?

我目前正在使用GetThreadTimes告诉我在应用程序的事件循环中花了多少时间。 我想知道这会如何受到冬眠的影响。 是否报告了hibernate时间? 或者也许是系统时间? 所有版本的Windows上的行为是否相同? 注意我在这里问了Posix的相同问题。