我正在使用C++非托管项目.
我需要知道如何使用这样的字符串"一些数据加密"并得到一个byte []数组,我将用它作为加密的源.
在C#我做
for (int i = 0; i < text.Length; i++)
buffer[i] = (byte)text[i];
Run Code Online (Sandbox Code Playgroud)
我需要知道的是如何使用非托管C++.
谢谢!
我正在使用
[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程序集,我尝试过后期绑定但是也许我一直在做错,因为我无法让它发挥作用.
我需要使用R工具中包含的gcc编译器(R用于windows的统计程序)编译我的一些代码,问题是我需要在我的代码中使用IDispatch来创建访问COM对象的方法,以及gcc编译器不支持我用来执行的大部分代码,这基本上是C++代码.
所以我的问题是如何在C中使用IDispatch来创建COM对象,而不必依赖于MFC,.NET,C#,WTL或ATL.我相信如果我这样做,我将能够毫无问题地编译我的代码.
我正在使用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实例.
我正在我的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中添加文本作为超链接?
谢谢.
我在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#中有一个应用程序,我需要做一些优化计算,就像Excel Solver Add-in一样,一个选项肯定是编写我自己的求解器实现,但是我有点时间,所以我正在研究已经存在的库可以帮助我解决这个问题.
我一直在尝试微软解决方案基金会,这看起来非常整洁和酷,问题是它似乎不适用于我需要做的那种计算.
在这个问题的最后,我正在添加有关我需要执行和优化的计算的信息.
所以基本上我的问题是,如果你们中的任何人知道我可以用于此目的的任何其他库,或任何可以帮助我自己的解算器的教程,或任何让我领导解决这个问题的想法.
谢谢.
附加信息:
这是我需要计算的数据:
我有7个变量,我们称之为var1,var2,...,var7
这些变量的约束是:
目标是最大化目标公式,在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++ unmanaged,当我调用一个返回LPVOID的方法时,我遇到了这个问题.
LPVOID MyMethod(...);
Run Code Online (Sandbox Code Playgroud)
问题是这个方法有时返回Bad Ptr,我想知道是否有一种方法可以检测到这个,如果返回的值是Bad Ptr.
我试过询问它是否为NULL而没有运气.
我知道如果结果是坏Ptr的唯一方法是在我调试时,我尝试了一些不同的方法,但仍然无法做到.
我正在一个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(),因为我需要访问到父窗口.
任何人都可以帮我弄清楚为什么会这样.
谢谢!
首先我想说的是我对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) c# ×4
c++ ×3
excel ×3
activex ×1
c ×1
com ×1
dpapi ×1
encryption ×1
gcc ×1
hyperlink ×1
idispatch ×1
inno-setup ×1
installer ×1
ipad ×1
messagebox ×1
mvvm ×1
objective-c ×1
optimization ×1
pascalscript ×1
solver ×1
string ×1
uitableview ×1
winforms ×1
wpf ×1
wpf-controls ×1