小编Vic*_*Vic的帖子

从C++中的std :: string获取字节

我正在使用C++非托管项目.

我需要知道如何使用这样的字符串"一些数据加密"并得到一个byte []数组,我将用它作为加密的源.

在C#我做

  for (int i = 0; i < text.Length; i++)
    buffer[i] = (byte)text[i];
Run Code Online (Sandbox Code Playgroud)

我需要知道的是如何使用非托管C++.

谢谢!

c++ string

21
推荐指数
2
解决办法
9万
查看次数

如何使用后期绑定来获取excel实例?

我正在使用

[DllImport("Oleacc.dll")]
static extern int AccessibleObjectFromWindow(
int hwnd, 
uint dwObjectID, 
byte[] riid,
ref Excel.Window ptr);
Run Code Online (Sandbox Code Playgroud)

使用他的句柄获取Excel实例,我从excel实例的进程ID获取.

这就是我使用这些功能时的样子

const uint OBJID_NATIVEOM = 0xFFFFFFF0;
Guid IID_IDispatch = new Guid("{00020400-0000-0000-C000-000000000046}");
Excel.Window ptr = null;  
int hr = AccessibleObjectFromWindow(hwndChild, OBJID_NATIVEOM, 
          IID_IDispatch.ToByteArray(), ref ptr);

Object objApp = ptr.Application;
Run Code Online (Sandbox Code Playgroud)

这种代码安静很有效,但唯一的问题是我必须添加对Office 2003主互操作程序集的引用.

正如你所看到的,函数中的最后一个参数是我需要添加对Pias的引用的原因,所以我的问题是如果有一种方法可以避免使用Interop程序集,我尝试过后期绑定但是也许我一直在做错,因为我无法让它发挥作用.

c# excel

18
推荐指数
2
解决办法
1万
查看次数

如何在普通C中使用IDispatch来调用COM对象

我需要使用R工具中包含的gcc编译器(R用于windows的统计程序)编译我的一些代码,问题是我需要在我的代码中使用IDispatch来创建访问COM对象的方法,以及gcc编译器不支持我用来执行的大部分代码,这基本上是C++代码.

所以我的问题是如何在C中使用IDispatch来创建COM对象,而不必依赖于MFC,.NET,C#,WTL或ATL.我相信如果我这样做,我将能够毫无问题地编译我的代码.

c com gcc activex idispatch

14
推荐指数
2
解决办法
6539
查看次数

如何使用进程ID获取Excel实例或Excel实例CLSID?

我正在使用C#,我需要通过它的进程ID获取excel的特定实例; 我从另一个应用程序获取了我需要的实例的进程ID,但我不知道还能做什么,我不知道如何根据进程ID获取excel的运行实例.

我在网上已经研究了很多,但我只看到使用Marshal.GetActiveObject(...)或Marshal.BindToMoniker(...)的例子,我不能使用,因为第一个返回第一个Excel实例在ROT中注册而不是我需要的那个,第二个需要在尝试获取实例之前保存excel文件.

另外,如果我能够使用进程ID获取我需要的excel实例的CLSID,那么我可以调用

GetActiveObject(ref _guid, _ptr, out objApp);
Run Code Online (Sandbox Code Playgroud)

最终将返回我需要的excel实例.

c# excel

12
推荐指数
1
解决办法
1万
查看次数

如何在Inno Setup中显示超链接?

我正在我的Inno安装程序安装程序中进行验证,以检查计算机上是否安装了Microsoft更新,如果没有,我会显示一个简单的消息框,告诉用户需要更新,这是消息代码:

MsgBox(
  'Your system requires an update supplied by Microsoft. ' +
  'Please follow this link to install it: ' + 
  'http://www.microsoft.com/downloads/details.aspx?FamilyID=1B0BFB35-C252-43CC-8A2A-6A64D6AC4670&displaylang=en',
  mbInformation, MB_OK);
Run Code Online (Sandbox Code Playgroud)

我想让URL成为网页的超链接,但我无法弄清楚如何在Inno Setup中添加文本作为超链接?

谢谢.

installer inno-setup messagebox hyperlink pascalscript

11
推荐指数
1
解决办法
5430
查看次数

使用DPAPI加密时,为什么会得到不同的输出?

我在C++中使用DPAPI来加密我需要存储在文件中的一些数据.问题是我需要从C#读取该文件,所以我需要能够:

C++加密,C++解密(工作正常)

C#encrypt,C#decrypt(工作正常)

C++加密,C#解密,反之亦然(不工作)

在C#中我使用DllImport来调用方法CryptProtectData和CryptUnprotectData,我按照这里的解释实现它们.我知道在C#中我可以使用ProtectedData类中包含的方法,但我是这样做的(使用DllImport)来确保两个代码(c ++和c#)的外观和工作方式基本相同.

现在奇怪的是,即使两个代码看起来都相同,我也会得到不同的输出,例如对于这个文本:

"纯文本"

在C++中,我得到:

01 00 00 00 D0 8C 9D DF 01 15 D1 11 8C 7A 00 C0 4F C2 97 EB 01 00 00 00 2E 6F 88 86 E6 16 9B 4F 9B BF 35 DA 9F C6 EC 12 00 00 00 00 02 00 00 00 00 00 03 66 00 00 A8 00 00 00 10 00 00 00 93 06 68 39 DB 58 FE …

c# c++ encryption dpapi

6
推荐指数
1
解决办法
2021
查看次数

如何在C#中实现Excel Solver功能?

我在C#中有一个应用程序,我需要做一些优化计算,就像Excel Solver Add-in一样,一个选项肯定是编写我自己的求解器实现,但是我有点时间,所以我正在研究已经存在的库可以帮助我解决这个问题.

我一直在尝试微软解决方案基金会,这看起来非常整洁和酷,问题是它似乎不适用于我需要做的那种计算.

在这个问题的最后,我正在添加有关我需要执行和优化的计算的信息.

所以基本上我的问题是,如果你们中的任何人知道我可以用于此目的的任何其他库,或任何可以帮助我自己的解算器的教程,或任何让我领导解决这个问题的想法.

谢谢.

附加信息:

这是我需要计算的数据:

我有7个变量,我们称之为var1,var2,...,var7

这些变量的约束是:

  • 所有这些都需要为0 <= varn <= 0.5(其中n是变量的数量)
  • 所有变量的总和应该等于1

目标是最大化目标公式,在Excel中如下所示:

 (MMULT(TRANSPOSE(L26:L32),M14:M20)) / (SQRT(MMULT(MMULT(TRANSPOSE(L26:L32),M4:S10),L26:L32))) 
Run Code Online (Sandbox Code Playgroud)

您在此公式中看到的范围L26:L32实际上是包含上述变量的范围,var1,var2,...,varn.

M14:M20和M4:S10是具有从不同来源获得的数据的范围,更可能是十进制值.

正如我之前所说,我使用的是Microsoft Solver Foundation,我用它来模拟几乎所有东西,我创建了处理目标公式操作的函数,但是当我尝试解决模型时它总是失败,我认为这是因为操作的复杂性.

在任何情况下,我只是想显示这些数据,以便您可以了解我需要实现的计算类型.

c# excel optimization solver

5
推荐指数
1
解决办法
4033
查看次数

如何验证LPVOID到<Bad Ptr>

我正在使用C++ unmanaged,当我调用一个返回LPVOID的方法时,我遇到了这个问题.

LPVOID MyMethod(...);
Run Code Online (Sandbox Code Playgroud)

问题是这个方法有时返回Bad Ptr,我想知道是否有一种方法可以检测到这个,如果返回的值是Bad Ptr.

我试过询问它是否为NULL而没有运气.

我知道如果结果是坏Ptr的唯一方法是在我调试时,我尝试了一些不同的方法,但仍然无法做到.

c++

3
推荐指数
2
解决办法
3010
查看次数

文本框控件中的文本输入问题

我正在一个WPF项目中工作,它基本上是一个实现MVVM模式的类库项目.为了清楚起见,我会说我只有一个窗口,上面有一个文本框控件.

现在,我将这个dll添加到另一个项目,这是一个Windows窗体项目,我正在调用该项目中带有文本框控件的窗口.

在我的Windows窗体项目中,我有一个窗口,上面有一个按钮,当我单击它时调用WPF窗口,并且在显示WPF窗口之前,它使WPF窗口成为子窗口,然后显示它.

这是我用来调用WPF窗口的代码:


MyWPFWindow wpfWin = new MyWPFWindow ();
WindowInteropHelper helper = new WindowInteropHelper(wpfWin);
helper.Owner = this.Handle;
wpfWin.Show();
Run Code Online (Sandbox Code Playgroud)

这段代码运行良好,它显示了WPF窗口,但问题是,当我尝试在文本框控件中输入文本时我不能."删除"和"退格"键确实有效,好奇的是如果我使用ShowDialog()而不是Show()那么一切正常,但我不能使用ShowDialog(),因为我需要访问到父窗口.

任何人都可以帮我弄清楚为什么会这样.

谢谢!

wpf mvvm wpf-controls winforms

3
推荐指数
1
解决办法
2922
查看次数

如何从UITableViewCell.accessoryView调用PopOver控制器?

首先我想说的是我对ipad/ipod/iphone开发很新,对于objective-c也是如此.

话虽如此,我正在尝试开发一个针对iPad的小应用程序,使用Xcode和IB,基本上,我有一个表,对于表中的每个UITableViewCell,我在accessoryView中添加了一个包含图像的按钮.

这是代码:

UIImage *img = [UIImage imageNamed:@"myimage.png"];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
CGRect frame = CGRectMake(0.0, 0.0, img.size.width, img.size.height);
button.frame = frame;   // match the button's size with the image size

[button setBackgroundImage:img forState:UIControlStateNormal];

// set the button's target to this table view controller so we can interpret touch events and map that to a NSIndexSet
[button addTarget:self action:@selector(checkButtonTapped:event:) forControlEvents:UIControlEventTouchUpInside];
button.backgroundColor = [UIColor clearColor];
cell.accessoryView = button;
Run Code Online (Sandbox Code Playgroud)

到目前为止,这么好,现在问题是当用户点击单元的accessoryView上的按钮时,我想要一个PopOver控件出现.

我在tableView的"accessoryButtonTappedForRowWithIndexPath"上尝试了这个:

UITableViewCell *cell = [myTable cellForRowAtIndexPath:indexPath];
UIButton *button = (UIButton *)cell.accessoryView; …
Run Code Online (Sandbox Code Playgroud)

objective-c uitableview ipad uipopovercontroller

3
推荐指数
1
解决办法
1万
查看次数