Articles of winapi

从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端口映射器 有人能指出我吗?

创build单个的python可执行模块

伙计们,我有很多python代码驻留在几个python包中,现在我需要创build一个包含所有这些文件的单个python可执行模块或文件,所以它将在windows和linux服务器上工作。 什么是可能的解决scheme,以及如何做到这一点?

Linux上SetThreadPriority的等效(pthreads)

考虑到下面的一些代码,我想知道在linux下假设pthreads甚至是使用Boost.Thread API的代码是多less。 #include <windows.h> int main() { SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_HIGHEST); return 0; }

是否有类似于Windows WINAPI的Core Linux API,特别是用于创buildGUI应用程序?

我正在从Windows编程(通过Windows编程我的意思是使用Windows API )到Linux编程。 对于编程Windows,我们有的选项是Win32API(MFC只是一个相同的C ++包装)。 我想知道是否有像直接暴露给程序员的Linux API (相当于WINAPI)? 我在哪里可以find参考? 用我对POSIX库的一点知识,我发现它包装了 Linux API 一部分 。 但是创buildGUI应用程序呢? POSIX不提供这一点。 我知道有很多像GTK,Qt等第三方Widget工具包。但我不想使用封装Linux API的库。 我想学习使用“核心Linux API”。 如果有什么我应该知道的,请告知。 任何熟悉Windows和Linux编程的程序员,请映射Linux世界的术语,以便我可以快速移动。 任何资源(书籍,教程, 参考 ),高度赞赏。

如何在C ++中创build一个临时目录?

我正在用C ++编写一个函数来创build一个临时目录。 这样的function应该尽可能便携,例如它应该在linux,mac和win32环境下工作。 我如何做到这一点?

有没有人能够创造PE COFF和ELF的混合体?

我的意思是一个二进制文件可以在Win32和Linux i386上运行吗?

如何获取与打开的句柄关联的名称

在Win32下打开HANDLE的文件名最简单的方法是什么?

winapi:CreateProcess但隐藏进程的窗口?

我正在使用CreateProcess来创build一个cmd.exe进程,它传递一个参数,它将执行并退出,这使得命令提示符在屏幕上闪烁。 我试图通过将STARTUPINFO结构wShowWindow设置为SW_HIDE来避免这种情况,但此参数似乎影响调用窗口,而不是执行进程的窗口。 有无论如何,你可以使用createprocess启动一个隐藏的视图的程序? 另外什么是适当的WINAPI标准的方式来获得环境variables?

把窗口放到前面 – > raise(),show(),activateWindow()不起作用

在我的Qt应用程序中,我在默认浏览器中打开一个URL。 之后我想把应用程序的主窗口再次带到前面。 我尝试了所有可以find的方法,但都没有成功。 它所做的只是在窗口7的任务栏中闪烁。下面是一个例子: this->viewer->show(); this->viewer->raise(); this->viewer->activateWindow(); * viewer是一个指向从QDeclarativeView派生的QmlApplicationViewer的指针

为每个显示器的高DPI支持缩放非客户端区域(标题栏,菜单栏)

Windows 8.1引入了针对不同显示器具有不同DPI设置的function。 此function被称为“每监视器高DPI支持”。 它坚持并在Windows 10中进一步完善 。 如果应用程序没有select( 即不识别DPI或识别高DPI),DWM会自动将其扩展到适当的DPI。 大多数应用程序属于这两个类别之一,包括与Windows捆绑在一起的大多数应用程序( 例如记事本)。 在我的testing系统中,高DPI显示器设置为150%(144 DPI),而普通显示器设置为系统DPI(100%显示,96 DPI)。 因此,在高DPI屏幕上打开其中一个应用程序(或将其拖到那里)时,虚拟化将会启动,放大所有内容,但也使其变得难以置信的模糊。 另一方面,如果应用程序明确指出它支持每个监视器的高DPI,则不执行虚拟化,开发人员负责缩放。 微软在这里有一个相当全面的解释* ,但为了一个自包含的问题,我将总结。 首先,您通过在清单中设置<dpiAware>True/PM</dpiAware>来指示支持。 这使您接收WM_DPICHANGED消息 ,它告诉您新的DPI设置以及为您的窗口build议新的大小和位置。 它还允许您调用GetDpiForMonitor函数并获取实际的 DPI,而不会出于兼容性原因而撒谎。 肯尼·克尔还写了一个全面的教程 。 我已经在一个小小的C ++testing应用程序中成功完成了这一切。 这是很多的样板,主要是项目设置,所以我在这里发表一个完整的例子没有多less意义。 如果您想对其进行testing,请遵循Kenny的说明, MSDN上的本教程或下载官方SDK示例 。 现在,客户区域中的文本看起来不错(因为我处理了WM_DPICHANGED ),但是由于虚拟化不再执行,所以没有缩放非客户区域。 结果是标题/标题栏和菜单栏的大小错误 – 在高DPI屏幕上它们不会变大: 所以问题是,如何让窗口的非客户区域扩展到新的DPI? 无论您是创build自己的窗口类还是使用对话框,它们在这方面都具有相同的行为。 有人build议 ,没有答案 – 你唯一的select是自定义绘制整个窗口,包括非客户区。 虽然这当然是可能的,事实上UWP应用程序(以前称为Metro)的应用程序(如Windows 10计算器)对于使用许多非客户端小部件并希望看起来是本机的桌面应用程序来说不是一个可行的select。 除此之外,这是明显的错误。 自定义绘制的标题栏不能是获得正确行为的唯一方法,因为Windowsshell团队已经完成了它。 卑鄙的“运行”对话框的行为与预期的完全相同,在不同DPI的监视器之间拖曳时,可以正确调整客户端和非客户端区域的大小: Spy ++的调查证实这只是一个标准的Win32对话框 – 没有什么奇特的。 所有的控件都是标准的Win32 SDK控件。 它不是UWP应用程序,也不是自定义标题栏 – 它仍然具有WS_CAPTION风格。 […]