Articles of winapi

我如何使用C ++从RAM运行可执行文件?

我如何使用C ++从RAM运行可执行文件? 可执行文件在RAM中,我知道地址,我怎样从我的程序中调用程序?

RegSvr32退出代码文档?

我玩RegSvr32.exe注册一个COM服务器,并获得下一个退出代码: 0 – 正确注册正常的DLL Com服务器 3 – 尝试注册假DLL Com服务器(简单的文本文件重命名为.DLL 4 – 当尝试注册简单的DLL,而不是通讯服务器 问题:我可以在哪里find所有可能的退出代码及其含义的官方(或非官方的,但是很好的)描述? search在互联网上没有给我的结果,所以我发现这个主题写在退出代码是一样的Windows系统错误代码,但我不明白为什么然后当尝试注册坏文件我正在获取代码= 3 = ERROR_PATH_NOT_FOUND ,并注册非COM DLL时 – 4 = ERROR_TOO_MANY_OPEN_FILES ? 对我来说,这听起来不合逻辑。

Windows服务与GUI监视器?

我有一个作为Windows GUI项目编写的C ++ Win32应用程序,现在我试图弄清楚将它变成一个服务/ GUI混合。 我知道一个Windows服务不能/不应该有一个用户界面。 但请允许我解释我到目前为止以及我所拍摄的内容。 我现在有什么是一个Windows应用程序。 运行时,它会在系统托盘中放置一个图标,您可以双击打开该图标。 此应用程序的目的是处理夜间计划中指定目录中的文件。 GUI包含以下内容: 一个button来手动启动一个不定期的扫描/处理。 一个button来打开一个对话框来修改设置。 列表框用于显示处理线程发送的状态消息。 用于显示图像数据的自定义绘制窗口(文件处理包括图像的创build和保存)。 状态栏 – 当进程没有运行时,它显示下一个计划扫描的倒计时。 在扫描期间,它还提供一些状态反馈,包括进度条。 我正在拍摄的是一个在启动时运行的服务,不需要用户login。 这将包含预定的文件处理。 但是,当用户login时,我仍然想要加载托盘图标,并允许他们打开一个GUI,如上所述,以监视服务的当前状态,更改设置,手动启动扫描以及监视进度的扫描。 我确定我已经看到了这样的应用程序 – 即使在我没有login的情况下也可以作为服务使用,但是一旦我login,仍然可以给我一个用户界面。 我在想,不是有一个multithreading应用程序从处理线程向GUI线程发送消息,我需要两个应用程序 – 一个服务来执行处理和一个GUI应用程序,以提供来自服务的可视反馈发送消息到服务(例如,手动开始扫描)。 但是我对Windows服务不熟悉,不知道这是如何完成的。 也有可能我完全脱离了基地,服务不是我一直在寻找的。 任何帮助/想法/build议将不胜感激! 谢谢。

挂钩窗口login/注销事件

我有一个服务将在系统级运行。 现在,我想跟踪login的用户。 之前我试图从GetUserName api获取login的用户名,但在我的情况下,它每次都返回“SYSTEM”。 无论如何,在我的情况下login用户名? 还是有任何钩子,我可以安装,以便我可以得到哪个用户login? PS:我主要在Delphi 2007中工作,但这些问题都是针对Win32 API的。

ULARGE_INTEGER联盟的要点是什么?

http://msdn.microsoft.com/en-us/library/windows/desktop/aa383742%28v=vs.85%29.aspx 它们应该像这样使用,在LowPart和HighPart上设置两个32位值,然后在QuadPart上执行算术运算。 int a,b,c; ULARGE_INTEGER u; … u.LowPart = a; u.HighPart = b; u.QuadPart += c; 所以如果你打算在QuadPart(64位)上执行算术,那么你需要一个64位的处理器,对吧? 那么整个问题是什么呢? 为什么不直接将值分配给QuadPart?

从进程ID获取进程可执行文件的名称

我目前正在试图获得我的pid程序列表的名称。 该程序以pipe理员身份运行,但GetModuleFileNameEx失败,错误代码为5。 我用OpenProcess(PROCESS_TERMINATE,PROCESS_QUERY_INFORMATION)打开程序,并启用了SE_DEBUG_PRIVILEGE 。

将GetClassInfo从HINSTANCE调用到外部窗口是不恰当的?

作为一名前锋,我对windows API非常不熟悉。 我试图了解有关不同窗口的信息,所以我在ATOM从Windows窗口,我试图调用GetClassInfo ,但它每次我打电话时失败。 我正在试图查看一个Untitled – Notepad窗口,我打开了一边。 这是我正在使用的代码,我不知道是否不正确调用从我没有真正拥有的ATOM的GetClassInfo,或者如果有其他事情正在进行。 我只是想读出有关窗口属性的信息。 这里是我现在的代码: #include <iostream> #include <string> #include <Windows.h> int main(int argc, _TCHAR* argv[]) { char* window_name = "Untitled – Notepad"; unsigned int window_name_length = strlen(window_name) + 1; wchar_t* transformed_window_name = new wchar_t[window_name_length]; unsigned int number_of_characters_transformed; mbstowcs_s(&number_of_characters_transformed, transformed_window_name, window_name_length, window_name, window_name_length); HWND handle_to_window = FindWindow(NULL, transformed_window_name); WINDOWINFO window_info; […]

Windows API DLL文件的许可证文件

我的朋友目前正在准备分发他的软件,并希望清理他使用的软件的许可证。 策略是他收集所有提供许可文本的文件。 他完成了所有“显而易见的”许可证的收集,例如他使用的Qt库的Qt许可证。 但是他也使用了Windows附带的一些Windows DLL,比如kernel32.dll和advapi32.dll 。 他在哪里可以find许可证文件,以便他可以用他的软件发布? 第一个DLL文件kernel32似乎基于http://en.wikipedia.org/wiki/Auto-linking指令自动链接到他的软件。 第二个文件, advapi32.dll显式链接到他的软件,他想通过收集提供许可证的文件来清理该文件的情况。 例如,对于debian linux,他知道这些文件在/usr/share/doc/<package of the library>/copyright 。

KillTimer是否必要?

我使用SetTimer API,我看到很多这样的代码: case WM_DESTROY: // Destroy the timer. KillTimer(hwnd, IDT_TIMER); PostQuitMessage(0); break; 我是否需要调用KillTimer或者系统会自动释放进程退出的资源? 忘记调用KillTimer导致资源泄漏? 我明白,如果不需要定时器,它可以被KillTimer破坏。 但必须手动销毁?

用GDI +绘图文本

我已经search了几天,现在find一个可能性,以显示我的GDI +应用程序的文本。 我尝试使用GDI +的DrawString()函数,但MSDN上的引用不起作用,因为它与参数列表不匹配。 我正在使用Visual C ++ 2010 Express。 我改变了MSDN的例子来编译,像这样: LinearGradientBrush* myBrush = new LinearGradientBrush(Rect(0,0,width,height),Color::Red, Color::Yellow, LinearGradientMode::LinearGradientModeHorizontal); Font* myFont = new Font(hdc); RectF rect = RectF(10,10,100,100); graphics.DrawString(TEXT("Look at this text!"),100, myFont,rect,&StringFormat(0,0), myBrush); 我还尝试了另外两个function: TextOut(hdc,10,10,TEXT("Text"),6); DrawText(hdc,TEXT("Text"),0,LPRECT(0),0); 没有一个在屏幕上显示文字。 画线,椭圆等没有问题。 为什么上面的文本绘图程序没有工作? 任何人都可以提供一个工作的例子?