Tag: c ++

将对象转换为void *并返回?

我正在尝试编写一个C函数的包装器,它需要一个函数指针和任意用户数据( void* )。 函数指针我已经弄清楚如何处理使用委托,但我无法弄清楚如何将object转换为void* 。 我可以把它变成一个ref object ,因为它的行为就像一个指针AFAIK,但是当我尝试它时,我得到一个像 在从非托管VARIANT到托管对象的转换过程中检测到无效的VARIANT。 将无效的VARIANT传递给CLR可能会导致意外的exception,损坏或数据丢失。 这个“解决方案”可能对我有用,但我认为必须有一种方法可以将任意数据传递给C DLL,以便以后可以传回来?

如何强制win10打开虚拟平板电脑键盘?

我有一个需要虚拟键盘的应用程序。 但是,当我点击我的一些TextBox ,它们不会显示虚拟键盘。 我试过用这个: System.Diagnostics.Process.Start(“osk.exe”); 但这会打开另一个键盘,在TextBox没有焦点后不会关闭。 如何强制win10打开虚拟平板电脑键盘? 为了使自己清楚: 这是在win10触摸屏电脑上运行的。 当我启用了平板电脑模式时,虚拟键盘会显示在某些TextBox ,而不显示在其他TextBox上。 因此,为什么我要强制键盘显示。 编辑:我已经找到了一种显示“虚拟平板电脑键盘”的方法,但是我想使用InputPane类来实现。 有人可以为我提供示例代码,以便让我入门吗? 不使用InputPane类打开它的代码: System.Diagnostics.Process.Start(“TabTip.exe”);

正则表达式匹配美元金额

有人能为我提供以下模式的正则表达式吗? $ 1234 $ 31234.3 $ 1234.56 $ 123456.78 $ .99 我的要求是十进制前的数字不应超过6,小数点后不应超过2位。 请帮我。 提前致谢..

替代睡在线程内

各种答案表明睡在线程中是一个坏主意,例如: 避免睡眠 。 为什么呢? 经常给出的一个原因是,如果正在hibernate,很难优雅地退出线程(通过发信号通知它终止)。 假设我想定期检查网络文件夹中的新文件,可能每10秒检查一次。 这对于优先级设置为低(或最低)的线程来说似乎是完美的,因为我不希望可能耗时的文件I / O影响我的主线程。 有哪些替代方案? 代码在Delphi中给出,但同样适用于任何multithreading应用程序: procedure TNetFilesThrd.Execute(); begin try while (not Terminated) do begin // Check for new files // … // Rest a little before spinning around again if (not Terminated) then Sleep(TenSeconds); end; finally // Terminated (or exception) so free all resources… end; end; 一个小修改可能是: // Rest […]

如何从C#调用具有void * callback和object参数的C ++ Dll中的函数

我正在尝试创建一个C dll的包装器,我试图调用一个具有回调函数的函数,接收一个对象作为传回的指针。 .h文件delares extern int SetErrorHandler(void (*handler) (int, const char*, void*), void *data_ptr); 处理程序是一个回调函数,在发生错误时调用,data_ptr是传递给你的任何对象(状态),在我的应用程序就是这个(当前对象)的情况下。 我能够在一个dll中调用函数,它使用编组的常量类型,如简单类型字符串,整数等。但我无法弄清楚如何只是编写一个指向C#对象的指针,这是一个状态。 为了通过在这里搜索我已经找到的对象引用传递对象引用,否则似乎我需要一个结构类型来能够编组该函数,所以我创建了一个结构来保存我的对象: [StructLayout(LayoutKind.Sequential)] struct MyObjectState { public object state; } 编辑:我试图在public object state属性上放置一个属性: [MarshalAs(UnmanagedType.Struct, SizeConst = 4)] ,但这会产生相同的错误,所以我删除它,似乎它无论如何都会工作。 该struct包含一个对象属性,用于保存回调函数的任何对象。 我在C#中声明了委托如下: delegate void ErrorHandler(int errorCode, IntPtr name, IntPtr data); 然后我在C#中声明了导入函数,如下所示: [DllImport(“somedll.dll”, CallingConvention = CallingConvention.Cdecl)] static extern int SetErrorHandler handler, IntPtr data); 然后我在我的C#代码中创建了一个回调函数: […]

C#的问题 C ++ DLLImport“试图读取或写入受保护的内存。”

我有一个C ++ DLL,其中有一个函数,我试图从C#应用程序调用。 这是C ++头文件中的代码 extern “C” _declspec(dllexport) int LabelStoringSSDsim(int devNum, UCHAR serial[40], UCHAR wwn[40], UCHAR ConfigID[5], UCHAR FrmRev[8], UCHAR DevName[40], int eCode); 这是C ++源文件中的代码 int LabelStoringSSDsim(int devNum, UCHAR serialLbl[40], UCHAR wwnLbl[40], UCHAR ConfigID[5], UCHAR FrmRev[8], UCHAR DevName[40], int eCode) { string strConfigID=”12111″; //5 bytes string strFrmRev=”1.25….”; //8 bytes string strDevName=”ABC-123……………………………”; //40 bytes for (int […]

AutoMapper – 使用相同的源和目标对象类型映射

我正在使用Automapper来获取两个相同类型的对象,并映射已更改的任何新值。 我尝试使用下面的代码,但它不断抛出错误,我甚至不确定这是否可以通过Automapper实现。 例如: Mapper.CreateMap(); UserDetails userDetails = Mapper.Map(userDetailsCurrent, userDetailsNew); 基本上,我需要将来自新对象“userDetailsNew”的任何新值复制到现有对象“userDetailsCurrent” – 即使它们属于同一类型。 这样我就可以用新值“更新”现有对象。 我这样做的原因是因为我不确定将传递哪些用户详细信息 – 我需要在它们到达时映射它们。 我通常使用Automapper来映射具有相似属性的不同对象 – 但我认为我可以利用Automapper的强大function以这种方式实现相同的function。 甚至可能有更好的解决方案 – 任何帮助将不胜感激!

是否有任何代码编辑器适用于触摸屏手机?

是否有适用于手机的代码编辑器(如eclipse或visual studio)(如诺基亚5800)? 所以我想要的是在手机上编辑我的C / C ++ / C#代码。 (我有诺基亚,所以这是我的主要兴趣,但我也对其他手机感兴趣,比如基于Android的手机。) 我不需要编译的能力,但我喜欢编码和代码突出显示。

以编程方式更改Windows 7的Windows颜色边框

可能重复: Windows如何改变Aero Glass的颜色? 使用c#在Windows 7上运行aero时如何以编程方式更改窗口边框颜色?

从C#调用任何Java方法

有没有办法使用JNI和C#代码创建一个调用任何给定Java方法的程序? 假设我有一个包含类层次结构的jar,我负责加载JVM和这些类,我可以编写一个C#程序,它可以动态接收java方法签名+参数值并调用java代码吗? 请尽量限制您对免费技术的回答(首选JNI解决方案)。