Articles of winapi

为最大化的WPF自定义窗口删除DropShadow

我有一个自定义窗口边框的WPF应用程序(.NET Framework 4)。 我已经禁用使用WPF壳集成库的玻璃边框,并绘制我自己的边框。 但是,我想添加一个DropShadow的时候没有最大化的窗口边界。 我已经添加了这样的阴影: private static bool DropShadow(Window window) { try { WindowInteropHelper helper = new WindowInteropHelper(window); int val = 2; int ret1 = DwmSetWindowAttribute(helper.Handle, 2, ref val, 4); if (ret1 == 0) { Margins m = new Margins { Bottom = 0, Left = 0, Right = 0, Top = 0 }; […]

如何使用线程同时下载和转换二进制文件?

我有一个程序,从另一台PC下载一个二进制文件。 我也有另一个独立的程序,可以将这个二进制文件转换为人类可读的CSV。 我想将转换工具“下载到”下载工具中,在下载工具中创build一个启动转换代码的线程(这样它可以在下载时开始转换,减less下载和独立转换的总时间)。 我相信我可以成功地启动另一个线程,但是如何将转换线程与主下载同步? 即转换赶上下载,需要等待更多的下载,然后再开始转换等。 这与multithreading同步执行相似吗? 如果是这样,这意味着下载的二进制文件需要是信号量访问的资源? 我在正确的道路上,还是应该在我开始之前指向另一个方向? 任何意见表示赞赏。 谢谢。

WPF相当于Application.AddMessageFilter(Windows窗体)

我在我的WinForms应用程序(使用非托pipe代码时)使用Application.AddMessageFilter() )。 现在我切换到WPF ,无法find这个function。 请咨询哪里可以find或实施。

在Windows中实现“请勿打扰/分散我”模式

我想在我的应用程序中实现“请勿打扰”模式。 基本上,他们启用这种模式,我们阻止某些应用程序,如MSN / Skype /等,打乱用户的重点。 这是一个在线游戏,一些用户已经要求这个,我们想尝试一下。 我不知道从哪里开始。 Windows有像Skype这样的应用程序敏感的全局“忙碌”模式吗? 我听说过Windows Presentation Mode ,但是我认为这只能让我们走到一半。 否则, 以编程方式将Skype / IM应用程序设置为“繁忙” , 是否有一种好的方法 ?

安全地使用临时文件

在我的程序中有一个静态库,它只能把文件名作为input,而不是实际的文件内容。 对于图书馆的源代码,我无能为力。 所以我想:创build一个全新的文件,将数据存储到它中,将其刷新到磁盘(?),将其名称传递给库,然后删除它。 但我也希望这个过程相当安全: 1)文件必须重新创build,没有任何虚假的数据(也许它不是关键,但无论如何); 2)除了我的进程之外,任何人都不能读/写这个文件(我希望库能够处理我的实际数据,而不是一些聪明的插件)。 3)我完成这个文件后,它必须被删除(好的,如果有人TerminateProcess()我,我猜没有什么可以做的,但仍然)。 该库似乎使用非Unicode fopen()来打开给定的文件,所以我不太清楚如何处理所有这些,因为该程序旨在运行在Windows上。 有什么build议么?

C的相当于windows的QueryPerformanceCounter

在linux中有没有一个等价的C函数来读取CPU计数器及其频率? 我正在寻找类似于QueryPerformanceCounter函数的东西来读取现代CPU中的64位计数器

端口Win32的DLL挂钩到Linux

我有一个程序(NWShader)挂钩到第二个程序的OpenGL调用(NWN)做后处理效果和什么。 NWShader最初是为Windows构build的,通常是现代版本(win32),同时使用DLL导出(以获取Windows加载它并获取一些OpenGL函数)和Detours(挂钩到其他函数)。 我使用的技巧,在检查sysdir之前,Win将在当前目录中查找任何DLL,因此会加载我的。 我有在这个方法redirect的DLL: #pragma comment(linker, "/export:oldFunc=nwshader.newFunc) 将它们发送到我自己的DLL中不同的命名函数。 然后我做任何处理,并从系统DLL调用原来的function。 我需要将NWShader移植到Linux(NWN存在于两种版本中)。 据我所知,我需要做的是共享库(.so文件)。 如果这是在NWN可执行文件(我发现一个shell脚本来处理这个)之前预加载,我的函数将被调用。 唯一的问题是我需要调用原始函数(我会使用各种DLLdynamic加载方法,我认为),需要能够执行类似Detour的内部函数挂钩。 目前,我正在构buildUbuntu 9.10 x64(带有32位编译器标志)。 我在Google上找不到太多帮助,但是我不知道这个* nix社区究竟是指什么的。 我可以编写C ++,但我更习惯于Windows。 作为OpenGL,需要修改与Linux兼容的唯一部分是钩子代码和调用。 有没有一个简单而简单的方法来做到这一点,或者它会涉及重新创buildDetours并dynamic加载原始函数地址?

Linux / Windows中的C / C ++内存使用API

我想获得每个进程和系统范围的内存使用信息。 在Windows中,这很容易。 GetProcessMemoryInfo和GlobalMemoryStatusEx可以非常轻松地完成这些工作。 例如,GetProcessMemoryInfo给出给定进程的“PeakWorkingSetSize”。 GlobalMemoryStatusEx返回系统可用内存。 不过,我需要在Linux上完成。 我试图find相当于GetProcessMemoryInfo和GlobalMemoryStatusEx的Linux系统API。 我发现'getrusage'。 然而,struct rusage中的最大'ru_maxrss'(驻留集大小)仅为零,这不被执行。 另外,我不知道要获得全系统的空闲内存。 目前的解决方法,我使用的是“系统(”ps -p%my_pid -o vsz,rsz“);”。 手动logging到文件。 但是,处理数据很脏,不方便。 我想知道一些奇特的Linux API用于这个目的。

Linux中的Win32 API相当于什么?

我不想知道在windows和linux的API函数之间是否有一对一的等价关系,也不想知道每个API函数。 我只想知道这两个基本的东西: 我想了解为什么Qt平台是独立的 我想知道我应该在linux中使用什么API来移植使用Win32 API编程的应用程序,或者换句话说,在Win32 API级别。 我知道这是不实际的,但我想知道这种等同性。

从Windows到Linux的RPC

有一些(工作)的例子如何创buildRPC从Windows到Linux? 客户端应该是Windows NT应用程序,服务器是Linux。 它需要是MSRPC 。 没有Corba,没有XML-RPC,SUN-RPC等等 MSDN说: RPC可用于基于Windows操作系统的所有客户机/服务器应用程序。 它还可以用于为包括Unix和Apple等操作系统的异构networking环境创build客户端和服务器程序。 不幸的是,在谷歌上花了几个小时后,我放弃了。 我的期望: Linux节点应该安装了samba,因为它们的MSRPC实现工作。 使用IDL文件,我为客户端和服务器生成存根 客户端使用MSVC构build 服务器使用gcc与samba(或其他库)的一些包含/库构build, Linux节点必须具有这样的RPC端口映射器 有人能指出我吗?