winapi 相关问题

Windows API(以前称为Win32 API)是可用于Microsoft Windows操作系统的核心应用程序编程接口集。此标记用于使用Windows API开发本机Windows应用程序的问题。

如何控制EventLog事件中的文本

我试图在 C++ 应用程序中使用 EventLog 进行作弊。我没有消息文件;我只是按顺序使用 RegisterEventSource() 和 ReportEvent() 。 #包括 #包括 我试图在 C++ 应用程序中使用 EventLog 进行作弊。我没有消息文件;我只是按顺序使用 RegisterEventSource() 和 ReportEvent()。 #include <windows.h> #include <stdio.h> int main() { LPCWSTR pInsertStrings[1] = { NULL }; HANDLE hEventLog = RegisterEventSource(NULL, L"AaaAaa"); if (NULL == hEventLog) exit(0); Sleep(200); // This event uses insert strings. pInsertStrings[0] = L"Test event from AaaAaa"; ReportEvent(hEventLog, EVENTLOG_INFORMATION_TYPE, /*cat*/ 100, /*evId*/ 0, /*uId*/ NULL, /*msgs*/ 1, /*msgSz*/ 0, (LPCWSTR*)pInsertStrings, /*data*/ NULL); } 几乎一切都按预期进行。该事件会在事件日志中弹出,并包含我在调用 ReportEvent() 时发送的所有内容。 但是,我在通话中发送的文本字符串仅显示在 Details 弹出窗口的 Event Properties 窗格中。 我怎样才能便宜地将此文本放入General窗格中? 我知道调用 dwEventID 中的参数 ReportEvent() 控制着 General 窗格中的文本。但我知道可以通过其他方式控制此文本,但仍然不受消息文件的复杂性的影响。 你怎么能做到? 下面的程序显示了针对该问题的建议解决方案。该程序不使用 WINAPI 来访问事件日志,而是使用 .NET 函数。 #using <system.dll> #using <mscorlib.dll> #include <winsock2.h> using namespace System; using namespace System::Diagnostics; int main() { String^ sSource = gcnew String("TestLog"); String^ sLog = gcnew String("Application"); String^ sEvent = gcnew String("Sample event message from EvenLogTest"); try { if (!EventLog::SourceExists(sSource)) EventLog::CreateEventSource(sSource, sLog); } catch (Exception^ e) { MessageBox(nullptr, L"Run this program once as Administrator", L"EventLogTest", MB_OK | MB_SYSTEMMODAL | MB_ICONERROR); exit(0); } EventLog::WriteEntry(sSource, sEvent); } 该程序展示了完整的测试解决方案。第一次执行时,程序会在注册表中注册日志TestLog。此操作需要管理员权限。如果程序不是由管理员启动的,则会在 MessageBox 中显示相应的消息并退出。第一次管理员执行后的程序执行不需要任何权限,用于将更多事件插入日志中。 要在 Visual Studio 中编译此程序,属性->配置属性->高级->公共语言运行时支持必须设置为.NET Framework Runtime Support (/clr)。 因此,编译器使用 C++ 的 Common Language 版本,而不是本机 C++。这可能会导致 CLR 和本机 C++ 的混合并导致冲突。例如,#include <iostream> 会生成非致命编译错误,其功能最好用 .NET 函数替换。 由于语言复杂性以及需要管理员运行一次,建议的解决方案比原始程序更复杂。优点是它可以控制事件的 General 窗格中的文本。相比之下,原始程序要简单得多,但事件文本仅在 Details 窗格中可见,而 General 窗格显示一些难以控制的标准文本。

回答 1 投票 0

您能否将相同的指针传递给 SystemTimeToTzSpecificLocalTime 以用于输入和输出?

这是SystemTimeToTzSpecificLocalTime的函数原型: BOOL SystemTimeToTzSpecificLocalTime( [输入,可选] const TIME_ZONE_INFORMATION *lpTimeZoneInformation, [在]常量

回答 1 投票 0

使用DrawFrameControl绘制主题按钮?

我使用DrawFrameControl 来绘制按钮,但它具有Windows 98 的外观。不过,我希望按钮看起来像当前的主题。可以使用 DrawFrameControl 或 d...

回答 1 投票 0

如何清空剪贴板?

我正在尝试使用 Excel 中的 VBA 项目从大型 Word 文档库中提取内容。该机器是 Windows 10 64 位。 我需要使用 EmptyClipboard 但我无法让它执行任何操作...

回答 4 投票 0

如何获取当前机器的SID?

我知道如何获取当前用户的SID。从概念上讲,答案是: 使用OpenThreadToken(或OpenProcessToken)获取运行用户的安全TOKEN 使用 GetTokenInformation 获取

回答 2 投票 0

为什么我的自动点击器只发送一个输入?

我创建了一个自动点击器,我希望在按住鼠标按钮时会发生点击,但是当按住鼠标按钮时它只发送一次点击。有人可以启发我吗? #在...

回答 1 投票 0

通过 com 端口发送文件总是在文件中的特定行数处停止

我正在尝试通过 com 端口将 txt 文件发送到绘图仪。该程序从 txt 文件中读取一行,将其通过 COM 端口发送到绘图仪,并等待单个“;”的确认。

回答 1 投票 0

Windows API:为什么PeekMessage在这里没有获取到我想要的键盘事件?

我正在编写一个程序,它响应用户的 Alt+B 键盘快捷键。 程序持续打印当前时间,Alt+B 切换颜色 打印的文字。 我尝试使用 PeekMe...

回答 1 投票 0

如何在Windows上自定义部署QT应用程序?

据我所知,项目编译成功后,我会得到一个some.exe。如果我想部署它,我需要将一些文件(例如 Qt5Core.dll)至少复制到同一目录。现在...

回答 1 投票 0

通过MapVirtualKeyA / GetKeyNameTextA获取虚拟按键名称

我正在使用 Rust,我正在尝试转换以创建具有所有虚拟键的正确名称的 HashMap。到目前为止,我有这个代码: (0u8..=255u8).flat_map( |我| { 让 n = 不安全 { ...

回答 1 投票 0

如何在不重新定义_TEB的情况下指向它?

我正在对游戏进行逆向工程,该游戏使用 NTCurrentTeb 中的线程本地存储指针来初始化指向游戏对象的指针。 IDA 输出如下所示: 布尔 sub_51C3CC() ...

回答 1 投票 0

包含不透明文本和按钮的透明窗口

我正在创建一个非侵入式弹出窗口,以在处理耗时的操作时通知用户。 目前,我正在通过调用 SetLayeredWindowAttributes 设置其透明度,这给出了...

回答 3 投票 0

在当前进程中Hook API调用?

如何挂钩/重定向当前进程中加载的 DLL(例如,来自 Kernel32.dll 的 CreateThread)中的函数? (我无法控制哪些代码调用 CreateThread,所以...

回答 4 投票 0

防止 Windows 10 以编程方式更新后自动重新启动

问题:是否有一种编程方式可以阻止 Windows 10 在更新后自动重新启动? 我们致力于开发在 Windows 中运行的“关键任务”软件。 一般来说,如果

回答 3 投票 0

在win32中将IP_HDRINCL设置为setsockopt函数

我正在与 Win32 中的原始套接字进行斗争,现在我陷入了困境,setsockopt() 函数给了我 10022 错误(无效参数),但我认为我传递了正确的参数......当然我是错了你_你' ...

回答 2 投票 0

winAPI 挂钩 Trampoline 无法正常工作

我正在尝试挂钩 winAPI 函数并使用蹦床函数,但它不起作用。 有人能发现问题吗/ 我的代码使用带有 jmp 指令的补丁来实现蹦床函数

回答 1 投票 0

.net 适用于 Win95?

在 .net 3.5 符号的一些研究中,我发现了一个预处理器指令 #如果WIN95_SUPPORT //... #万一 这对我来说真的很奇怪!它位于 System.Windows.Forms 中的第 13861 行。

回答 4 投票 0

使用函数调用时 GetConsoleScreenBufferInfo 返回奇怪的值

我有一个程序,我想以列和行的形式打印终端窗口的大小。 为此,我想从 int main() 调用此函数: int getConsoleSize(){

回答 1 投票 0

共同设计可执行文件并允许修改某些字节

我使用signtool.exe 来共同设计Windows 可执行文件。 该工具的哪些选项可用于定义在哈希计算中应省略一些字节,从而允许数字化

回答 1 投票 0

ComCtl32.dll Ordinal 345 未找到错误仅在 Windows XP 上

出于多种原因,我需要制作一个在 Windows XP 及更高版本上运行的应用程序。我正在使用 ComCtl32.dll 来调用 TaskDialogIndirect。唯一的问题是错误“序数 345 可能...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.