Articles of c + +

如何从麦克风捕获audio以通过套接字发送?

我正在使用Windows 7并使用Visual Studio 2010开发类似于聊天的应用程序。我正在寻找一种从麦克风(或更确切地说,来自默认logging设备)捕获audio的简单方法,从所述input中收集缓冲区,然后发送它在一个套接字上。 我已经看到DirectX解决scheme的build议,但从我的研究来看,这与简单的情况恰恰相反。 5000行简单的捕获/保存文件程序的示例代码? 这根本不适用于我(是的,这是SDK提供的官方示例)。 无论如何,我并不需要它是跨平台的,我真的更喜欢Windows已经提供的东西,尽pipe我不介意安装一个库,只要不需要比写硬件驱动程序更长的时间从头开始弄清楚(夸张)。 我听说过这个waveInOpen函数,但奇怪的是我找不到任何有关如何使用它的演示。 如果任何人有一个想法或链接到一些示例代码,我将不胜感激。 谢谢大家的时间! PS我可以自己弄清楚networking部分。 我只需要访问原始audio数据缓冲区。

数据绑定后如何添加项目?

我试图将一些数据绑定到一个gridview,然后在最后有一个button(类似于Windows 8上的MSN财经应用程序)。 我将如何实现这一目标? 我当前的xaml代码: <DataTemplate> <GridView x:Name="StopGridViewItem" ItemsSource="{Binding}" Margin="0,0,20,20" AutomationProperties.AutomationId="ItemGridView" AutomationProperties.Name="Items In Group" ItemTemplate="{StaticResource Standard310x260ItemTemplate}" SelectionMode="None" IsSwipeEnabled="false" IsItemClickEnabled="True" ItemClick="StopGridViewItem_ItemClick"> </GridView> </DataTemplate> 提前致谢!

CryptExportKey在C#

什么是相当于这个CryptExportKey调用的C#? CryptExportKey(hKey, hPublicKey, SIMPLEBLOB, 0, lpData, &nSize); 如果你可以在你的C#代码的地方给出一个描述,那就太好了 hKey,hPublicKey和SIMPLEBLOB(或者它们在C#中的等价物)正在被使用

如何确定NDIS 6filter驱动程序中的802.11原始数据包是否具有FCS(4字节)?

我有一个NDIS 6filter驱动程序在Windows Vista和更高版本的系统上工作。 我把它绑定在NativeWiFi Filter下面,所以我可以看到802.11 packets而不是fake Ethernet packets 。 我已经在数据包filter中设置了NDIS_PACKET_TYPE_802_11_RAW_DATA和NDIS_PACKET_TYPE_802_11_RAW_MGMT : https : NDIS_PACKET_TYPE_802_11_RAW_DATA ( NDIS_PACKET_TYPE_802_11_RAW_MGMT ,所以我可以接收来自微型端口的Raw 802.11 Packets指示。 然后,我将无线适配器切换到Monitor Mode 。 现在我的filter驱动程序可以接收所有的802.11 control and management数据包。 我的问题是如何确定一个802.11原始数据包是否在我的驱动程序中有FCS(帧检查序列,4字节) ? 我这样问,因为我将Radiotap header ( http://radiotap.org/ )添加到数据包,radiotap有一个Flags字段,指定802.11数据包是否有FCS。 我的带有无线适配器Qualcomm Atheros AR9485WB-EG Wireless Network Adapter笔记本电脑的实验显示Beacon和Reassociation Response数据包含有FCS,而其他所有802.11数据包都没有。 而radiotap头文件中的错误Flags将导致Wireshark显示这些数据包的格式错误的数据包。 这就是为什么我需要确定我的驱动程序中FCS的可用性。 我的代码就像下面,我想知道如何写if条件。 // [Radiotap] "Flags" field. if (TRUE) // The packet doesn't have FCS. […]

在inheritance/子窗口窗体中进行更改(Visual Studio C#)

我有一个模板的窗体和第二个是模板的孩子。 但我不能在编辑器中更改我的子表单的内容。 所以我尝试在devise器文件中手动添加它,并且在编辑器中显示,但是在执行时不显示。 模板 的.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApplication3 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private const int HT_CAPTION = 0x2; private const int WM_NCLBUTTONDOWN = 0x00A1; [DllImport("user32", CharSet = […]

NtEnumerateKey()的KeyInformation参数

我很想知道如何将KeyInformationparameter passing给NtEnumerateKey() 。 当我运行下面的代码时, NtEnumerateKey()返回NTSTATUS = 0xC000000D错误消息“一个无效的parameter passing给服务或函数”。 我正在使用Windows 7.尽pipe下面的代码使用了Delphi语言,但您也可以用C语言来回答我的问题。 我的问题不是特定于编程语言。 type KEY_NAME_INFORMATION = record NameLength: ULONG; Name: array[0..254] of WCHAR; end; PKEY_NAME_INFORMATION = ^KEY_NAME_INFORMATION; var iNtStatus: LONG; hKeyResult: THandle; KeyNameInfo: KEY_NAME_INFORMATION; iResultLen: ULONG; iNtStatus := NtOpenKey(@hKeyResult, (KEY_ENUMERATE_SUB_KEYS) and not SYNCHRONIZE, @rObjAttrs); if hKeyResult = 0 then Exit; iNtStatus := NtEnumerateKey(hKeyResult, 0, KeyNameInformation, @KeyNameInfo, // […]

添加了AddFontResourceEx的字体在GDI +中不起作用

AddFontResourceEx为每种字体返回1,但字体在GDI +中不可访问(使用VS2015和Windows 10testing,也在Windows 2008 R2服务器上testing)。 如果我用Windows Fonts Explorer手动安装字体,一切正常。 看来,GDI +无法find与AddFontResourceEx或AddFontResource添加的字体,任何想法我怎么能得到这个工作? 我使用CodeJock库,它使用GDI +字体来渲染XAMLgraphics,所以我无法控制如何创build字体。 int n = 0; CPathW pw; pw.Combine(theApp.m_strMyAppFolder, _T("Roboto-Light.ttf")); n =AddFontResourceEx(pw, FR_PRIVATE, nullptr); pw.Combine(theApp.m_strMyAppFolder, _T("Roboto-Thin.ttf")); AddFontResourceEx(pw, FR_PRIVATE, nullptr); pw.Combine(theApp.m_strMyAppFolder, _T("Roboto-Regular.ttf")); AddFontResourceEx(pw, FR_PRIVATE, nullptr); pw.Combine(theApp.m_strMyAppFolder, _T("Ubuntu-R.ttf")); AddFontResourceEx(pw, FR_PRIVATE, nullptr); pw.Combine(theApp.m_strMyAppFolder, _T("Ubuntu-L.ttf")); AddFontResourceEx(pw, FR_PRIVATE, nullptr); ::SendNotifyMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);

尝试访问USB设备时,RPC_E_CANTCALLOUT_ININPUTSYNCCALL

我有这段代码: var searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_DiskDrive"); foreach (var queryObj in searcher.Get().Cast<ManagementObject>()) //Error points to this line 基本上这个代码是做什么的,它通过连接的设备列表运行,看看我想要的是否连接。 如果我在代码运行时已经连接了设备的情况下运行这个代码,那么它的工作是完美的。 但是,如果我用DBT_DEVICEARRIVAL触发这个代码(这是系统发送时,一些设备连接,我抓住它 private static IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled){if(..DBT_DEVICEARRIVAL..) new ScanDevices(); /*Here lies the code from above (in the class)*/} )我得到这个错误: 由于应用程序正在调度input同步调用,因此不能进行传出调用。 (从HRESULTexception:0x8001010D(RPC_E_CANTCALLOUT_ININPUTSYNCCALL))。 如果我把thread.sleep(5000)放在上面的代码之上,所以它在执行前等待5秒钟,然后代码工作。 所以冲突一定是在某个地方,其他的事情先试着去访问这个设备,然后把所有的东西都给自己。 我search了互联网,发现了一些build议,比如发送自定义的postmessage来触发代码,但是我不知道怎么做,甚至怎么解决这个问题。 这里最好的解决scheme是什么?

监视窗口的创build(HWND)

我想在C中监视窗口的创build(HWND) 我想知道是否有WINAPI提供的某种事件来处理创build窗口。

有人可以解码timeGetTime()或QueryPerformanceCounter / QueryPerformanceFrequency是否具有较低的开销或/和准确性?

这个想法是,一个现有的项目相当频繁地使用timeGetTime()(用于Windows目标)。 milliseconds = timeGetTime(); 现在,这可以被replace double tmp = (double) lpPerformanceCount.QuadPart/ lpFrequency.QuadPart; milliseconds = rint(tmp * 1000); 通过使用对QueryPerformanceCounter()和QueryPerformanceFrequency()的单个调用来取得lpPerformanceCount.QuadPart和lpFrequency.QuadPart。 我知道Windows的内部是一种巫术,但是有人可以破译其中哪一个更准确或者更多的开销? 我怀疑准确性可能相同,但QueryPerformanceCounter可能有较less的开销。 但是我没有硬数据来支持它。 如果情况正好相反,我当然不会感到惊讶。 如果开销很小,我会更关心精度是否有差异。