Tag: c ++

作为数组间接c ++返回数据的更快方法

这是一个非常干净和漂亮的解决方案,从非托管C ++代码marsahall结构数组。 它是最简单的完美解决方案,我花了一些时间来理解这个概念,所以在几行代码中,你可以看到C# Main() ,我有一个填充的struct数组准备好’收获’.. typedef struct { int Id; BSTR StrVal; }Package; extern “C” __declspec(dllexport) void dodata(int requestedLength,int StringSize, Package **Packs){ int count; count=0; *Packs = (Package*)LocalAlloc(0, requestedLength * sizeof(Package)); Package *Cur = *Packs; while(count!= requestedLength) { Cur[count].StrVal = NULL; Cur[count].Id = count; Cur[count].StrVal=SysAllocString(L”abcdefghij”); Cur[count].StrVal[StringSize-1]=count+’0′; ++count; } } C# [DllImport(@”ExportStructArr.dll”, CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity] […]

传递操作符和其他参数

我有一些非常低效的代码,其中许多行出现4次,因为我通过“”操作以及各种变量和常量进行排列。 似乎有一种方法可以编写一次函数并传入运算符以及必要的变化值和“ref”变量。 我需要学习什么技巧? 有人建议“代表”,但我不知道如何以这种方式使用它们。 这是在C#2.0,VS2005中,但如果该技术是通用的并且也可以与C ++一起使用,那将是很好的。 请求一些代码:以下出现在许多伪装中,具有不同的“”符号以及“+”和“ – ”符号的混合: if (move[check].Ypos – move[check].height / 200.0D < LayoutManager.VISIO_HEIGHT – lcac_c.top) { move[check].Ypos = move[check].Ypos + adjust; . . .

尝试从WinJS中读取C#WinRT组件中的空字符串时出现exception

我有以下场景:C#中的数据库被编译为Windows运行时组件。 其中一个类看起来像这样: public sealed class MyData { string TheGoods { get; private set;} } 用户界面在WinJS中,我有以下内容: var b = dataInstance.theGoods; 问题是我得到一个exception,属性中包含以下内容: System.StubHelpers.HStringMarshaler.ConvertToNative(String managed)中的System.ArgumentNullException 看一下HStringMarshaler.ConvertToNative的实现,如果字符串为null,它似乎抛出。 这是否意味着将空字符串暴露给WinJS是不可能的? 这是WinJS限制还是适用于所有WinRT? 虽然string.Empty确实有效,但它在语义上与null不同,在某些情况下,empty是有效的且不同于null。 如果我将属性的类型更改为’object’,那么它确实有效,但是当它确实应该是一个字符串时暴露一个对象似乎很讨厌。 有任何想法吗? 文档对此非常清楚

如何在C ++中创建和初始化双精度SAFEARRAY以传递给C#

我需要从C ++调用我的C#方法 最初我的C#方法接受double []类型的参数,但是当从C ++调用时它变成了SAFEARRAY 在C ++中,我需要从双精度数组中获取数据,并填充SAFEARRAY。 我没有找到任何示例代码来执行此操作。 任何帮助表示赞赏

如何从HttpResponseMessage获取特定的标头值

我正在进行HTTP呼叫。 我的响应在HttpResponseMessage对象的标题部分中包含会话代码X-BB-SESSION 。 如何获取特定的标头值? 我正在使用foreach语句迭代所有标头( MSDN链接 )。 但是编译器一直说不能这样做: foreach statement cannot operate on variables of type System.net.http.headers.cachecontrolheadervalue because ‘System.net.http.headers.cachecontrolheadervalue’ doesn’t contain a public definition for ‘GetEnumerator’ 这是我正在尝试的代码: //Connection code to BaasBox HttpResponseMessage response = await client.SendAsync(requestMessage, HttpCompletionOption.ResponseHeadersRead); if (response.IsSuccessStatusCode) { //get the headers HttpResponseHeaders responseHeadersCollection = response.Headers; foreach (var value in responseHeadersCollection.CacheControl) –> HERE { […]

以编程方式将行添加到数据绑定的DataGridView中?

我有一个问题,我似乎无法解决它。 我以为有人在这里可以提供帮助。 我有一个具有客户DataGridView的表单。 现在,我想向这个DataGridView添加几个客户,而不是实际将它们添加到数据库中。 这是因为客户端必须能够创建客户端列表,并在完成后立即添加所有客户端。 我试过这个: string[] array = {“Microsoft”, “Redmond”, “Something”} dataGridView.Rows.Add (array); 现在这不能完成,因为我得到一个exception,说你的行不能以编程方式将行添加到数据绑定的DataGridView 。 现在我还读到这可以通过使用表适配器插入行而不是直接添加它来解决。 一个DGV。 但这也是不可能的,因为我在DGV中使用自定义标头,因为现有数据是通过JOIN获取的,所以如果我通过TableAdapter添加它,我会得到一个与数据库表模式不匹配的exception。 现在我真的迷路了……任何人都知道这个问题的一个(中途)优雅的解决方案? 谢谢

使用.NET中的WS安全性调用Web服务

我需要使用ASP.NET中的WS-Security保护的Web服务。 我正在使用SoapUI测试服务,作为信封请求: ? ? ? ? ? 我得到的回应是: env:Server org.jboss.ws.core.CommonSOAPFaultException: This service requires <wsse:Security>, which is missing. 所以我联系了服务提供商,他们告诉我,必须使用WS-Security来调用服务。 因此,发送到服务器的SOAP消息必须使用我的证书进行数字签名。 问题是我不知道该怎么做。 到目前为止,我添加了一个服务参考,我在代码中传递了提到的证书: var srvRef = new DnaSoapClient(); srvRef.ClientCredentials.ClientCertificate.Certificate = theCert; var response = srvRef.agregarManifiesto( dnaManifiesto ); 我google了一些,有些人推荐WCF。 我正在构建一个ASP.NET 4.5应用程序。 这个场景有什么选择? 我需要知道如何使用我的证书签署邮件。 编辑1:我能够推进这个问题,现在我可以发送用证书签名的SOAP消息,我即将结束我的任务。 现在我无法在安全标签中设置正确的元素,我编辑了问题以显示信封,正确的信封和我的信封。 正确:这是正确请求的样本信封 MIIC9TCCAd2gAwIBAgIIUiM4nWs8kfcwDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UEAwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0UwHhcNMTQwMzIwMTkxMTIwWhcNMTgxMjIwMTQzNzEzWjBBMRQwEgYDVQQDDAtjb3VyaWVyLnRudDEOMAwGA1UECwwFc29maWExDDAKBgNVBAoMA2RuYTELMAkGA1UEBhMCcHkwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOS71x5+ChwGzWs4VlLgkePbU8/zFHUrrE8nFNVsukMCc5q5hCK8/CeNM+mxImilLdJrGoC2/000lQetB9B3AqIrAdOfBFU4/qsAlgWI+kt2jnUsJMLRjQfxhAKMeX4RUb0CmTcsnXtWlFvYFFjiUi9nUJVSxCsmldVFgLIAHRPjAgMBAAGjfzB9MB0GA1UdDgQWBBTCwBBmU7f/4SmNz7GNJ25ILkPuhjAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFDF+1hOSdgg2DFOUofnnXdx9TxjeMA4GA1UdDwEB/wQEAwIE8DAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQEFBQADggEBAALVVGGNsTSMcfDBwkkNQH3MpfiNTo/mhH8ahqUVN1+5BIwWstv8fH0Sl9ea1XShKLPDfDIx8WSzUUIt/93f74B3a3oMpBtbVEiku2BKUp5cJfkYe2c5zPOxk3nzmQwcEoB++RgX9DJOtUkKA/It2IM9/8ggUyjceJQCpBRiA9Kg7+h3HfmOKNn+9/pNu498JXhSRKa8Jr4pp/1udYRk+W8sKGEBtAU9MvL3y0AbvLhUD+MZyvpHGB17fslC8Nnd5EBQH8hQD+DWGepyCBIlb0NA13YEoLMcRKDcWvSPd0UGWo2G0IOeUZaGuzzIz2n04QrXvnqQKAOFd9yH2VfGtWE= whvAdAkypsWVXHXbIz/T54n0dBw= MdHy5mceNtQWUD5WmVOzZU8roxD3EQkQmcZA9LsfhBcp3cFAD3P1qJJ9EyrRFBs5yCiYDY716Wzh M+tFybt1+EujXZZ3ytk4XaahkexNAG51iup1wvw0Km+nsj4u/x8DzTA/J9EG3ZdTSUrIVBsFcEQa TF4BwUAgGBS87xqL5zc= 2014-05-13T19:06:00.188Z 2014-05-13T19:07:00.188Z 我的,这不行 uIDPowmum40QT95GqsY7XPKT7LIAAAAAvMwgorinWU+AVOWH+3TPjP6NBU03AZtHqle8GLRYcYAACQAA 2014-05-15T21:30:20.723Z 2014-05-15T21:35:20.723Z MIIC9jCCAd6gAwIBAgIINNZyZplkQHgwDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UEAwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0UwHhcNMTQwMzIwMTgzMjQ3WhcNMTgxMjIwMTQzNzEzWjBCMRUwEwYDVQQDDAxjb3Vycmllci5kaGwxDDAKBgNVBAsMA09QUzEOMAwGA1UECgwFREhMUFkxCzAJBgNVBAYTAlBZMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCGoP0dxByIfto/hqJCOhobTdwQJ3AxJkqUeSNFnprAH8zi6HjBJhzkXptqXiR9GZR1H4U3UaN6aczKVh2PaPqU8ooTxjST0ywWBgXA1WP3ukrybUKxpSvqmiRJ/cANAYLovL+gmh2v/fqPiLs7vsgT+zj1330wRGqtrokYPMjlbQIDAQABo38wfTAdBgNVHQ4EFgQU6IHB4XfP7+rbryy1Ru8kFcfSDqcwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBQxftYTknYINgxTlKH5513cfU8Y3jAOBgNVHQ8BAf8EBAMCBPAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMA0GCSqGSIb3DQEBBQUAA4IBAQB3NQC+0/VmC7A1MStKdc2NctTo7P+mhvIBe54U/Vs8I5vXiatKz01BzHIbl7chjP063V4YTtehDCGkwUTtARqpkua7RfdlMqsmcr1s3qnD4lUpGuAeVW0Wsrhu1xGjPf02fTBdD3yyGWCeUiNvKuoweeATlGyB/VlHJaZHN4HuJCnWlPic6uUUMBYqrOOa+wJr/OCFHqkEiBsUihD6ergj7AeAAFcG41GI2ZjVWK/PEB71sbQqqGgLpigAS9f8PNMm+TnQuizrvLPKm3hanOKYr9ORrbWjZCL3dva1YobK4ykvUYpncj6YsOtuDi62RcHYjT7IF9UoeZHBE2vePc+K […]

DataGridView只读单元格

我有一个包含大量数据的绑定DataGridView。 问题是某些单元格必须是ReadOnly,当用户在单元格之间使用TAB或ENTER导航时,应绕过ReadOnly单元格。 在装载后,制作某些特定细胞的最佳方法是什么? 在设置DataSource之后循环遍历单元并不是一个好主意,考虑到网格有大量数据。 此外,在CellEnter上创建单元格ReadOnly不起作用,因为当使用TAB键导航时,我必须已经知道下一个单元格是否为ReadOnly。

如何在c#中使用其产品代码卸载MSI

我知道我们可以通过传递命令参数来使用其MSI卸载Windows应用程序,如下所示, Process p = new Process(); p.StartInfo.FileName = “msiexec.exe”; p.StartInfo.Arguments = “/x \”C:\\MyApplication.msi\”/qn”; p.Start(); 但我想知道的是如何在不使用MSI的情况下卸载应用程序? 在上面的场景中,我应该在特定的位置安装MSI来卸载这个应用程序,如果我可以使用产品代码解压缩,那么我就不需要在目标机器上安装MSI。

在触摸板上获取手指位置

有没有办法获得触摸板触摸的位置? 我还需要能够返回这样的2D点arrays图的捕获模块,该arrays图通过请求报告触摸板点的状态(状态表示: 点触摸/未触摸 )。 无论用什么技术/语言写