Articles of c + +

在内部扬声器播放声音,并可能使用旧的XP APIfunction?

Windows vista发布后,Windowsfunction提示音会在连接的扬声器上发出嘟嘟声,而不是内置扬声器。 有没有办法访问旧function? 是否有可能通过在较旧的Windows API中获取? 或者还有什么其他方法可以使这成为可能吗? 如果是这样,我想能够设置频率和持续时间。 我应该提到,我实际上是针对Windows XP平台。

使用C ++检查客户端上的可用.NET框架

有没有一种方法可以检查并查看某个机器上可用的.NET框架版本,而无需手动通过registry等进行挖掘? 理想情况下,从C ++。 这怎么能解决呢?

如何将消息从WH_KEYBOARD_LL转换为corespondig unicode字符

你好我正在写一个多语言的应用程序,我正在使用WH_KEYBOARD_LL钩子。 我不知道为什么我使用钩子,我尝试了很多东西,但这是最简单快速的方法。 现在在钩子程序里面 LRESULT CALLBACK LowLevelKeyboardProc(int nCode,WPARAM wParam, LPARAM lParam); 我在LPARAM参数中收到一个KBDLLHOOKSTRUCT ,其中包含所按键的信息。 有没有什么办法可以根据用户为前者设置的当前键盘布局来以unicode字符来演奏这些信息。 如果用户有一个中文键盘布局设置,他偏爱“a”键然后我收到一个KBDLLHOOKSTRUCT包含“a”键扫描代码,我需要将此扫描代码转换为相应的unicode字符。 我知道这是可能的,因为你可以在Microsoft Word中用中文写,我只是不知道该怎么做。 谢谢。

DMA传输RAM到RAM

我的一个朋友告诉我,在x86架构上,DMA控制器不能在两个不同的RAM位置之间传输。 它只能在RAM和外设之间传输(如PCI总线)。 这是真的? 因为AFAIK DMA控制器应该能够在位于总线上并具有地址的任意设备之间。 特别是,如果源地址和描述地址属于同一物理设备,则看不到问题。

Windows中的蓝牙AVRCP命令触发了哪些事件

只是做一些先进的侦察工作,所以在这里说…对于我的潘多拉客户端, Elpis ,我支持全球媒体密钥(MediaPlayPause,MediaNext等在键盘上),我希望能够从蓝牙耳机支持AVRCP ,如果可能的话。 我现在还没有(尽pipe会尽快得到一些)。 我的主要问题是, 什么事件(键盘或其他)是由AVRCP命令在Windows中触发? 这是否取决于BT适配器和/或驱动程序堆栈? 如果他们只是作为上面提到的相同的媒体密钥暴露,我会喜欢它,但我找不到任何官方的MS文档确认或否认…但从我所知道的,WMP支持它,但一些其他媒体播放器不(虽然他们支持标准的媒体密钥),这导致我相信这是不同的事件。 任何有识之士将不胜感激。

C系统时间到微秒精度的Windows?

可能重复: 测量时间与分辨率在微秒的C + +? 嗨, 有一个简单的方法,我可以得到一个Windows机器上的系统时间,精度达到微秒?

pthreads-win32在各种Windows编译器上的可移植性

我使用pthreads-win32来允许对windows的线程支持。 我有一个跨平台的项目,使用pthreads,我想使它在各种编译器和不同的操作系统版本的Windows上工作。 至less,根据文档pthreads-win32应该与MSVC一起工作,甚至提供MSVC构build。 但是我不知道该库是否使用最新的MSVC编译器(如MSVC-2008)进行testing,以及是否支持64位窗口。 从你自己的经验 ,你知道这个图书馆的任何问题? 任何问题与MSVC8,MSVC9,MSVC10? Windows x86_64的任何问题? Windows Vista / Windows 7的任何问题? 笔记: 甚至不要尝试推荐使用Boost.Thread,我不感兴趣,而且我熟悉Boost.Thread库 我不想重新发明Win32 API(缺lessRW锁,条件variables等)。 我确实设法使用MSVC-2008和MinGW GCC-4.3编译项目,然后使用当前预编译的pthreads DLL轻松地在其上运行unit testing。 我只需要知道pthreads-win32的限制。

如何在不连接kernel32.dll和ntdll.dll的情况下运行PE映像

我试图写一个peloader。 首先将可执行映像及其所有依赖dll(包括kernel32.dll和ntdll.dll)加载到内存中,处理所有导入地址表,重写所有需要重定位的数据。 然后我按顺序调用所有图像的入口点。 我从ntdll.dll的EntryPoint得到返回代码0,但kernel32.dll返回0xC0000000。 当我试图调用可执行文件的入口点时,程序崩溃了。 我知道windows系统在创build进程时已经将ntdll.dll和kernel32.dll加载到进程内存中。 我的问题是如何加载ntdll.dll和kernel32.dll的另一个副本到内存中,并将我的模块链接到副本。 我做了一个实验:1.复制ntdll.dll – > a.dll 复制kernel32.dll – > b.dll 修改PE映像文件b.dll,使其不依赖于ntdll.dll而是a.dll 编写一个简单的程序a.exe,并修改PE映像文件a.exe,使其不依赖于kernel32.dll而是b.dll 运行一个.exe,程序崩溃 是否有可能使a.exe正常运行? 这是我第一个关于堆栈溢出的问题,对不起我的英文不好。 谢谢。

确定套接字和fd之间

在unix上, 一切都是函数read() , write() , close()在Win32上不支持的文件方法。 我想模拟它,但不知道如何区分sock是在WinSocks2上的套接字或fd 。 //returns 1 if `sock` is network socket, // 0 if `sock` is file desriptor (including stdio, stderr, stdout), … // -1 in none of above int is_net_socket(int sock) { // …? } 这应该如下: int mysock = socket(PF_INET, SOCK_STREAM, 0); int myfd = _open("my_file.txt", _O_RDONLY); printf("1: %d 2: […]

在Windows上的Libev

考虑到libevent vs. libev 。 libev库在Windows上是否具有IOCP的本机支持?