Intptr的释放问题 [问题点数:100分,结帖人jonas401]

Bbs2
本版专家分:500
结帖率 100%
Bbs5
本版专家分:4408
Bbs2
本版专家分:500
Bbs9
本版专家分:82886
Blank
蓝花 2008年5月 .NET技术大版内专家分月排行榜第三
Bbs9
本版专家分:82886
Blank
蓝花 2008年5月 .NET技术大版内专家分月排行榜第三
Bbs4
本版专家分:1051
Bbs2
本版专家分:500
【精华志】C#中的IntPtr+详解
【精华志】C#中的IntPtr+详解 QQ交流群60168829 欢迎C# ASP.NET 和SQL新手 老手 高手加入 谢谢
C# 调用C++非托管DLL, C++中的const char *对应C#中的IntPtr类型。
C# 调用C++非托管DLL, C++中的const char *对应C#中的IntPtr类型。
c# 两个intPtr之间内存拷贝
c#中的March 提供了intPtr数组与intPtr之间的转换,但intPtr之间的却没有,尝试过引入window的copymemory但是拷贝出来的是错的,经多次尝试发现借助byte[]是可以完成的。 下面直接上代码:         public struct  SCENE         {               public uint dwSize;      
初识IntPtr
一:什么是IntPtr 先来看看MSDN上说的:用于表示指针或句柄的平台特定类型。这个其实说出了这样两个事实,IntPtr 可以用来表示指针或句柄、它是一个平台特定类型。对于它的解释,这个哥们写的比较好:It's a class that wraps a pointer that is used when calling Windows API functions. The underl
C# 资源释放及dispose、close方法
需要明确一下C#程序(或者说.NET)中的资源。简单的说来,C#中的每一个类型都代表一种资源,而资源又分为两类: 托管资源:由CLR管理分配和<em>释放</em>的资源,即由CLR里new出来的对象; 非托管资源:不受CLR管理的对象,windows内核对象,如文件、数据库连接、套接字、COM对象等; 毫无例外地,如果我们的类型使用到了非托管资源,或者需要显式<em>释放</em>的托管资源,那么,就需要让类型继
无法访问已释放的对象。 对象名:“WebBrowser”
if (webBrowser1 != null && !webBrowser1.IsDisposed)
创建一个EveryOne SECURITY_ATTRIBUTES.
使用IIS的身份模拟来使用通过SharedMemoryEx生成的内存映射文件...这种做法可以解决一时的<em>问题</em>,不能真正长久的解决<em>问题</em>.在前一个文章MutexEx 中,Mutex的创建,使用也要对其权限进行设置..同样的,如果我们想在不同的帐号使用这个Mutex,我们可能也不得不使用另一种方式的身份模拟.在Win32中,我们可以通过创建 NULL DACL来创建一个Every
讨厌C#的fixed,直接用指针的方法
public struct TUserItem { int a; } // 定义 TUserItem*[] m_UseItems = new TUserItem*[14]; // 分配 TUserItem* FirstItems = (TUserItem*)Marshal.AllocHGlobal(sizeof(TUserItem) * m_UseItems.Length);
C#调用返回C++指针的缓冲区,并释放
在C++的函数中new了一段内存char *test(char* filename) { new一段内存 } void release(char *mm); { delete一段内存 } [DllImport("test.dll", EntryPoint = "test", CallingConvention = CallingConvention.Cdecl
c# 托管对象与InPtr互转
//托管对象转interPtr GCHandle thisHandle = GCHandle.Alloc(this); nGCHandle.ToIntPtr(thisHandle); //interPtr转非托管对象 GCHandle gcUser = GCHandle.FromIntPtr(pUser); HikVisionCamera CamObj = (HikVisionCa...
C# 内存分配与释放示例
原文地址:https://msdn.microsoft.com/zh-cn/library/ms146631.aspxusing System; using System.Runtime.InteropServices; class Example { static void Main() { // Create a managed array.
C# Webbrowser使用加载页面多少了内存泄露问题解决方法汇总
[C#]有关WebBrowser内存使用增加<em>问题</em>     在Windows程序开发中,使用了Webbrowser 控件,陆续发觉该控制存在着不少的<em>问题</em>,当中最严重的是他胃口太好太大,每load一个页面便会吃掉十来M的内存。 Webbrowser是非托管代码,而我开发时用了托管代码,一开始在这方面进行了优化,发现效果没什么改善。 后一查资料才发现病根 Microsoft的内存溢出b
如何将IntPtr类型转为Image类型
在用emgu的cvDisTransform函数时,除了简单的街区距离,其余距离都要求目标图为32位图像,因此,采用IntPtr dst = CvInvoke.cvCreateImage(CvInvoke.cvGetSize(src), Emgu.CV.CvEnum.IPL_DEPTH.IPL_DEPTH_32F, 1);创建目标图像,但是,如何将dst保存到Image里边呢? 方案一: 利用m
IntPtr是什么,该怎么用?
IntPtr是什么,该怎么用?     IntPtr用于表示指针或句柄的平台特定类型,此类型对多线程操作是安全的。C#中的IntPtr类型称为“平台特定的整数类型”,它们用于本机资源,如窗口句柄。资源的大小取决于使用的硬件和操作系统,但其大小总是足以包含系统的指针(因此也可以包含资源的名称)。 所以,在调用的API函数中一定有类似窗体句柄这样的参数,那么当声明这个函数时,应该将它显式地声明为In
C#学习之IntPtr类型
C#中的IntPtr类型称为“平台特定的整数类型”,它们用于本机资源,如窗口句柄。资源的大小取决于使用的硬件和操作系统,但其大小总是足以包含系统的指针(因此也可以包含资源的名称)。 所以,在您调用的API函数中一定有类似窗体句柄这样的参数,那么当您声明这个函数时,您应该将它显式地声明为IntPtr类型。 例如,在一个C#程序中调用Win32API mciSendString函数控制光盘驱动
将C#数组传给具有IntPtr的托管代码函数
来自CSDN的一个结贴:http://bbs.csdn.net/topics/270087167 我在写代码的时候也遇到了这个<em>问题</em>; 需要传入<em>intptr</em>参数的函数, public void GetBounds(IntPtr bounds); 我的数组; double[] bounds_data = new double[6]; 解决方法: IntPtr System.Run
【重要总结】IntPtr、Image以及IplImage三者之间的相互转换
/******************************************************************************/ /***************************MIplImage&IntPtr&Image***************************/ /*************************************
C#中的IntPtr类型
本文转自:http://zhidao.baidu.com/question/22825956.html 问: c#中无法将类型“int”隐式转换为“System.IntPtr” 这个是我引用了一个api函数时出现的<em>问题</em>,我在声明中把<em>intptr</em>换成了int还是不可以,这是为什么呢?要如何处理呢?   答: 您好,C#中的IntPtr类型称为“平台特定的整数类型”
强制释放内存
直接上代码,效果自己测试吧 [DllImport("kernel32.dll", EntryPoint = "SetProcessWorkingSetSize")] public static extern int SetProcessWorkingSetSize(IntPtr process, int minSize, int maxSize);
C中的char * 对应C#中的Intptr
C中的char * 对应C#中的Intptr,有时候C#中也可以用byte[] 代替
C#中获取数组指针再将其转换成IntPtr类型
byte outputData = new byte[2]; void* p; IntPtr ptr; fixed (byte* pc = outputReport) {    p = (void*)pc;    ptr = new IntPtr(p); }
IntPtr和string的相互转化
Marsha有三个方法将string转为IntPtr:   Copies the contents of a managed String into unmanaged memory, converting into ANSI format if required. public static IntPtr StringToHGlobalAuto(string s)   public s
asp.net中c# byte[] 转换为 IntPtr几种方法
有几种方法可以访问与字节数组相对应的 IntPtr。 第一种,使用不安全的代码块来访问直接指向字节数组的指针。  代码如下 复制代码 unsafe {     byte[] test = new byte[5];     fixed (byte* p = &test[0])     {         *p = 0xff;     } }
WriteableBitmap的赋值问题
WriteableBitmap的一个小特点,用的时候需要注意 WriteableBitmap a,b,c; a=b; c=c; 在这样的代码中,a,b,c其实是指向同一个WriteableBitmap源的,这个语句相当于只改变了指针,而不是把b的图像内容赋给a,c,所以当对abc中任何一个进行改变的时候,另两个的显示都会随之变化。 我的方法是这样的 var
C# Int 和 IntPtr 互相转换
//int转IntPtr int i = 12; IntPtr p = new IntPtr(i); IntPtr p1 = (IntPtr)i; //IntPtr转int int myi = (int)p; MessageBox.Show(myi.ToString());
Marshal在C#中的应用(void *指针到IntPtr的转化)
http://www.cnblogs.com/zhongxg/archive/2013/03/18/2965301.html Marshal在C#中的应用(void *指针到IntPtr的转化)   C#调用C语言的API时一般把void *指针转换成IntPtr,但这经常远远不够的。在C语言中void *是个万金油,尤其是一些老的c语言程序,所有的参数就一个void*指针,里
将数组转换为IntPtr
//第一种,使用不安全的代码块来访问直接指向字节数组的指针。 static IntPtr ArrayToIntptr(byte[] source) { if (source == null) { return IntPtr.Zero; } unsafe { fixed (byte* point = source) ...
vsto插件在64位Office的一个异常---算术运算溢出(IntPtr转int)
在vsto插件开发中,以前从没发现过这个<em>问题</em>,到了Office2013(64bit) ,历经艰辛跟踪到了这句: SendMessage(this.Handle, WM_ALLOW_LOGIN, -1, (int)ptr); 其中ptr为IntPtr类型,SendMessage为API,声明如下: public static extern int SendMessage(IntPtr hW
(转)C#进行图像处理的几种方法(bitmap,bitmapData,IntPtr)
转自 http://blog.sina.com.cn/s/blog_628821950100wh9w.html 使用C#进行图像处理的几种方法 本文讨论了C#图像处理中Bitmap类、BitmapData类和unsafe代码的使用以及字节对齐<em>问题</em>。 Bitmap类 命名空间:System.Drawing 封装 GDI+ 位图,此位图由图形图像及其属性的像素数据组成
intptr
对INTPTR的理解不深,谁能给我详细讲讲?rnVB.NET里是没有指针的,那么在VB.NET里INTPTR有什么作用?怎么用?rn谢谢
OpenCv,EmguCv及.net之间的图像类型转换
OpenCv,EmguCv及.net之间的互动(The Interaction of OpenCv, EmguCv AND .net) 作者:王先荣 原文链接:http://www.cnblogs.com/xrwang/archive/2010/01/26/TheInteractionOfOpenCv-EmguCvANDDotNet.html 前言     在.net中使
IntPtr是什麼,該怎麼用
http://blog.csdn.net/yang_629/article/details/7440115 IntPtr是什麼,該怎麼用    IntPtr用於表示指針或句柄的平台特定類型,此類型對多線程操作是安全的。C#中的IntPtr類型稱為「平台特定的整數類型」,它們用於本機資源,如窗口句柄。資源的大小取決於使用的硬件和操作系統,但其大小總是足以包含系統的指針(因此也可以包含
WinForms错误:缓冲操作当前正在进行中,无法释放BufferedGraphicsContext 的可能原因和解决方法
http://www.genshuixue.com/i-cxy/p/8047746 WinForms错误:缓冲操作当前正在进行中,无法<em>释放</em>BufferedGraphicsContext 的可能原因和解决方法 来源:博客园2010-01-22 上一篇文章(对WebMatrix 进行现代化改造, 使其完美支持中文)里, 我谈了如何修改WebMatrix使其支持中文. 文章末尾
c#控制台之制造内存泄露简单办法
c#控制台之制造内存泄露简单办法
闪烁应用程序窗体,不用timer控件,C#源代码[DllImport("User32")] public static extern bool FlashWindow(IntPtr hWnd, bool bInvert); try
闪烁应用程序窗体,不用timer控件,C#源代码[DllImport("User32")] public static extern bool FlashWindow(IntPtr hWnd, bool bInvert); try { int MyTimes = 50; int MyTime = 50; for (int MyCount = 0; MyCount < MyTimes; MyCount++) { FlashWindow(this.Handle, true); System.Threading.Thread.Sleep(MyTime); } } catch (Exception MyEx) { System.Windows.Forms.MessageBox.Show(MyEx.Message, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } VisualStudio2008创建
AutoCAD二次开发(.Net)之获取LSP变量的值
[System.Security.SuppressUnmanagedCodeSecurity] [DllImport("accore.dll", EntryPoint = "acedPutSym", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
关于C#中的IntPtr
C#中的IntPtr类型称为“平台特定的整数类型”,它们用于本机资源,如窗口句柄。资源的大小取决于使用的硬件和操作系统,但其大小总是足以包含系统的指针(因此也可以包含资源的名称)。例如,我们可以在vs2008中用C#做基于OpenCV的图像处理开发,下面两行代码就可以完成打开一幅
一个Marshal.Copy的问题
首先介绍下这个<em>问题</em>的背景,是来自很久前一个同事问我请教的<em>问题</em>,当时我也没搞清楚,还去88上问了下。现在我有些空余时间,在88上有看到了自己的提问,想想有必要研究清楚这个<em>问题</em>到底是怎么回事。     其次我要对中文MSDN的文档表达以下不满,正是由于MSDN的中文文档对这个函数的介绍的语义比较模糊,不精确,才导致我当时无法理解清楚这个函数的设计用意和用途是什么。     第三,我要顺便鄙视下.n
c# CF 拨打电话
[DllImport("phone.dll")] private static extern IntPtr PhoneMakeCall(ref PhoneMakeCallInfo ppmci); /// /// Dials the specified phone number. /// /// Phone number to dial. public static void MakeCall(string PhoneNumber) { MakeCall(PhoneNumber, false); } /// /// Dials the specified phone number. /// /// Phone number to dial. /// Prompts the user before the call is placed. unsafe public static void MakeCall(string PhoneNumber, bool PromptBeforeCall) { IntPtr res; PhoneNumber += '\0'; char[] cPhoneNumber = PhoneNumber.ToCharArray(); fixed (char* pAddr = cPhoneNumber) { PhoneMakeCallInfo info = new PhoneMakeCallInfo(); info.cbSize = (IntPtr)Marshal.SizeOf(info); info.pszDestAddress = (IntPtr)pAddr; if (PromptBeforeCall) { info.dwFlags = (IntPtr)PMCF_PROMPTBEFORECALLING; } else { info.dwFlags = (IntPtr)PMCF_DEFAULT; } res = PhoneMakeCall(ref info); } } } /// /// Reads information from the Subscriber Identity Module (SIM) /// public class Sim { private static long SERVICE_PROVIDER = 0x00006F46; [StructLayout(LayoutKind.Sequential)] private struct SimRecord { public IntPtr cbSize; public IntPtr dwParams; public IntPtr dwRecordType; public IntPtr dwItemCount; public IntPtr dwSize; } [DllImport("sms.dll")] private static extern IntPtr SmsGetPhoneNumber(IntPtr psmsaAddress); [DllImport("cellcore.dll")] private static extern IntPtr SimInitialize(IntPtr dwFlags, IntPtr lpfnCallBack, IntPtr dwParam, out IntPtr lphSim); [DllImport("cellcore.dll")] private static extern IntPtr SimGetRecordInfo(IntPtr hSim, IntPtr dwAddress, ref SimRecord lpSimRecordInfo); [DllImport("cellcore.dll")] private static extern IntPtr SimReadRecord(IntPtr hSim, IntPtr dwAddress, IntPtr dwRecordType, IntPtr dwIndex, byte[] lpData, IntPtr dwBufferSize, ref IntPtr lpdwBytesRead); [DllImport("cellcore.dll")] private static extern IntPtr SimDeinitialize(IntPtr hSim); /// /// Gets the phone number from the SIM. /// /// PhoneAddress structure with phone number. unsafe public static PhoneAddress GetPhoneNumber() { PhoneAddress phoneaddr = new PhoneAddress(); Byte[] buffer = new Byte[516]; fixed (byte* pAddr = buffer) { IntPtr res = SmsGetPhoneNumber((IntPtr)pAddr); if (res != IntPtr.Zero) throw new Exception("Could not get phone number from SIM"); byte* pCurrent = pAddr; phoneaddr.AddressType = (AddressType)Marshal.ReadInt32((IntPtr)pCurrent); pCurrent += Marshal.SizeOf(phoneaddr.AddressType); phoneaddr.Address = Marshal.PtrToStringUni((IntPtr)pCurrent); } return phoneaddr; }
意外发现了winform的一个控件个数的极限
很久没来CSDN了,今天跟大家分享一个我的发现,调试这个的时间用了很久,希望大家在遇到类似<em>问题</em>时,不要走弯路. 如下图,我用反射在一个窗体上根据从数据库里取来的数据创建自定义控件,当完成1169个之后创建第1170个,而且每次都是在1170时,会报错,如下图. 有时则直接说发生 了一个异常,根本没把这个错误报出来. 大概是微软觉得你肯定不会在同一个窗体上创建1000多个控件吧....
C# 释放C++DLL 中申请的内存空间
<em>问题</em>描述:C#调用C++的dll,传入一组数据,返回处理后的数据以及一些信息字段。但是,返回的内容是不定长的,也就是dll内部要进行动态内存申请。那么<em>问题</em>来了,C#怎么接收一个大小不确定的变量?使用完这些数据后,怎么在C#里面<em>释放</em>其内存? 前一个<em>问题</em>的危险是,该段内存的大小,调用方事先是未知的不能进行初始化,这可能会导致缓冲区溢出<em>问题</em>。目前的解决方法只能够是调用方预先分配一个足够大的内存空间
在VB.Net中使用指针
 例1:以下程序我们申请几个指向不同类型的指针:’使用属性告诉net编译器:结构的元素在内存中按其出现的顺序排列 _Public Structure DEFUDT_Test Public bytb As Byte Public i32a As Int32End StructurePublic Function fnGetIntptr1() As IntPtr ’取得一个4字节数组指针 Di
C#中使用FindWindow函数详解
 FindWindow 用来根据类名和窗口名来得到窗口句柄的。但是这个函数不能查找子窗口,也不区分大小写。如果要从一个窗口的子窗口中查找需要使用FindWindowEX。1.在C#中使用方法如下:[DllImport("User32.dll", EntryPoint = "FindWindow")] private static extern IntPtr FindW
C# byte[]、struct、intptr等的相互转换
1.struct byte[]互相转换 //struct转换为byte[] public static byte[] StructToBytes(object structObj) { int size = Marshal.SizeOf(structObj); IntPtr buffer = Mar...
C#中byte[]、struct,Intptr之间相互转化
//byte[]转换为struct public static object BytesToStruct(byte[] bytes, Type type) { int size = Marshal.SizeOf(type); IntPtr buffer = Marshal.AllocHGlobal(size); try { Marshal.Copy(bytes, 0, buffer, size);...
IntPtr是什么,该怎么用
  IntPtr用于表示指针或句柄的平台特定类型,此类型对多线程操作是安全的。C#中的IntPtr类型称为“平台特定的整数类型”,它们用于本机资源,如窗口句柄。资源的大小取决于使用的硬件和操作系统,但其大小总是足以包含系统的指针(因此也可以包含资源的名称)。 所以,在调用的API函数中一定有类似窗体句柄这样的参数,那么当声明这个函数时,应该将它显式地声明为IntPtr类型。  IntPtr 类型被
C# 调用C写的DLL时 对应的int* 类型返回值转化为 IntPtr
C中代码: [cpp] view plaincopy int* read( char *filename )  {      .......  }   C#中代码: [csharp] view plaincopy [DllImport("myC.dll", EntryPoint = "read", CharSet = CharSet.Aut
Wpf WndProc 消息处理
public MainWindow() { InitializeComponent(); this.SourceInitialized += new EventHandler(WSInitialized); } void WSInitialized(object sender, EventArgs e)
C# 游动小金鱼 动态屏保
C#游动屏保小金鱼, [DllImport("gdi32.dll", ExactSpelling = true, SetLastError = true)] public static extern IntPtr CreateCompatibleDC(IntPtr hDC); [DllImport("user32.dll", ExactSpelling = true, SetLastError = true)] public static extern IntPtr GetDC(IntPtr hWnd); [DllImport("gdi32.dll", ExactSpelling = true)] public static extern IntPtr SelectObject(IntPtr hDC, IntPtr hObj); [DllImport("user32.dll", ExactSpelling = true)] public static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC); [DllImport("gdi32.dll", ExactSpelling = true, SetLastError = true)] public static extern int DeleteDC(IntPtr hDC); [DllImport("gdi32.dll", ExactSpelling = true, SetLastError = true)] public static extern int DeleteObject(IntPtr hObj); [DllImport("user32.dll", ExactSpelling = true, SetLastError = true)] public static extern int UpdateLayeredWindow(IntPtr hwnd, IntPtr hdcDst, ref Point pptDst, ref Size psize, IntPtr hdcSrc, ref Point pptSrc, Int32 crKey, ref BLENDFUNCTION pblend, Int32 dwFlags);
oracle 64为报错的问题
System.InvalidOperationException: 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此<em>问题</em>。 - System.BadImageFormatException: 试图加载格式不正确的程序。 (Exception from HRESULT:
空心字体效果演示程序(C#源代码编写) [System.Runtime.InteropServices.DllImport("gdi32")]
空心字体效果演示程序(C#源代码编写) [System.Runtime.InteropServices.DllImport("gdi32")] private static extern IntPtr CreateFont(int H, int W, int E, int O, int FW, int I, int u, int S, int C, int OP, int CP, int Q, int PAF, string F); [System.Runtime.InteropServices.DllImport("gdi32")] private static extern IntPtr BeginPath(IntPtr hdc); [System.Runtime.InteropServices.DllImport("gdi32")] private static extern IntPtr EndPath(IntPtr hdc); [System.Runtime.InteropServices.DllImport("gdi32")] private static extern int SetBkMode(IntPtr hdc, int nBkMode); [System.Runtime.InteropServices.DllImport("gdi32")] private static extern IntPtr StrokePath(IntPtr hdc); [System.Runtime.InteropServices.DllImport("gdi32")] private static extern int TextOut(IntPtr hdc, int x, int y, string lpString, int nCount); [System.Runtime.InteropServices.DllImport("gdi32")] private static extern IntPtr SelectObject(IntPtr hdc, IntPtr hObject); [System.Runtime.InteropServices.DllImport("user32")] private static extern IntPtr GetDC(IntPtr hwnd); const int FW_HEAVY = 900; const int ANSI_CHARSET = 0; const int OUT_DEFAULT_PRECIS = 0; const int CLIP_DEFAULT_PRECIS = 0; const int DEFAULT_QUALITY = 0; const int DEFAULT_PITCH = 0; const int FF_SWISS = 32; const int TRANSPARENT = 1;
请教:IntPtr的问题,谢谢
请问System.InPtr的用法
C# IntPtr 问题
我有一结构如下:rn [StructLayout(LayoutKind.Sequential)]rn public struct PEventrn rn public byte Code;rn public byte DotID;rn public TCardNumber CardNumber;rn public ushort reserved;rn public Time Time;rn public IntPtr pNext; rn rn关于最后面 public IntPtr pNext;想问下大家:rnrn DPU3001EG.PEvent lpNext = new DPU3001EG.PEvent();rn lpNext = lpNext.pNext; 这句他提示rn“错误1 无法将类型“System.IntPtr”隐式转换为“DPU3001EG.PEvent”E:\依柯通\DPU3001EG\Form1.cs 502 34 DPU3001EG”rnrn我该怎么解决呢??
有关IntPtr的问题,急!
有关IntPtr定义的<em>问题</em>有点晕rnC++ 里是rnEXPORT int WINAPI Match(void* Minu1, int nMinu1, void* Minu2, int nMinu2);rnrnC#里rn[DllImport("brmatchCHS.dll", SetLastError=true)]rn public static extern int Match(System.IntPtr Minu1, int nMinu1,System.IntPtr Minu2, int nMinu2);rnrnrnMinu1实际的数据类型应该是byte[]或string rn那么我该如何用IntPtr来表示byte[]或string 呢?
关于IntPtr赋值的问题
在开发中遇到这样的一个<em>问题</em>,需要将类似strsql="select '权' from dual"送往接口,接口函数是指针型的,程序实现:rnIntPtr SendData;rnrn调用DLL申请中间服务缓冲区rnrnSendData=tpalloc("string","",1024);rnrnbyte[] bt=Encoding.ASSCII.GetBytes(strsql);rnMarshal.Copy(bt,0,SendData,bt.Length);rn调用接口:rnint i=tpcall(服务名,Senddata,0,out 输出,out 错误,0);rn但服务端接收时“权”变成“?”,编码格式:更改成utf8\utf7\unicode等都不行,汉字都变了,没有汉字照常运行,请专家指点!
c#调用C++ dll 的方法
c#调用C++ dll 的方法: 1.添加 using System.Runtime.InteropServices; 2.将dll 放到运行程序的根目录下 3.c++中可识别的字符为:UTF8,在传输字符的时候,需要先转换为UTF8,然后再传输,要不然中文会识别不了,同样在返回数据的时候,也需要将UTF8转换为Default格式,否则中文为乱码 4.载入的时候判断一下,只需要
WPF窗口如何获得一个句柄?
1) 在窗体事件内获得句柄 private void Window_Loaded(object sender, RoutedEventArgs e) {           WindowInteropHelper wndHelper = new WindowInteropHelper(this);           IntPtr  wpfHwnd=wndHelper.Han
byte[]到IntPtr的问题
dll函数声明:rn[code=C#]public static extern bool VCASaveBitsToBuf(Int32 dwCard, IntPtr pDestBuf, ref Int32 dwWidth, ref Int32 dwHeight);[/code]rnrn[code=C#]byte[] mbuffer = new byte[bsize];rnGCHandle hbuffer = GCHandle.Alloc(mbuffer, GCHandleType.Pinned);rnret = VideoAPI.VCASaveBitsToBuf(frm.DevCur, hbuffer.AddrOfPinnedObject(), ref Width, ref Height);[/code]rn为什么会出现访问内存错误?除了VCASaveBitsToBuf,其他操作都返回成功。rnrn我是参考http://msdn.microsoft.com/zh-cn/library/aa497275.aspxrn上的以下内容来做的:rn[code=C#] //C#rnrnusing System.Runtime.InteropServices;rnrnbyte[] test = new byte[5];rnGCHandle hObject = GCHandle.Alloc(test, GCHandleType.Pinned);rnIntPtr pObject = hObject.AddrOfPinnedObject();rnrnif(hObject.IsAllocated)rn hObject.Free();[/code]rnrnVCASaveBitsToBuf就是向pDestBuf写入位图信息,我用C++可以做,用C#就出现上面的<em>问题</em>了。rnrn测试以下是dll的代码:rn[code=C/C++]void FillBuffer(void *buffer, int size, unsigned char value)rnrnint i;rnfor(i = 0; i < size; i++)rnrn((unsigned char *)buffer)[i] = value;rnrn[/code]rnC#声明rn[code=C#][DllImport("DynamicDLL.dll", EntryPoint = "FillBuffer")]rnpublic static extern void FillBuffer(IntPtr buffer, int size, byte value);[/code]rn我改为:rn[code=C#]byte[] mbuffer = new byte[bsize];rnGCHandle hbuffer = GCHandle.Alloc(mbuffer, GCHandleType.Pinned);rnFillBuffer(hbuffer.AddrOfPinnedObject(), bsize, 255);[/code]rnrn这样的出现同样的错误,所以我基本判断VCASaveBitsToBuf这个dll里的函数是没<em>问题</em>的。可是不知道该怎么改了。rnrn错误信息为:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。rn
byte[]与IntPtr互转问题
[code=C#]rn byte[] buffer = new byte[(int)dwBufSize]; //dwBufSize数据长度rn Marshal.Copy(pBuffer, buffer, 0, (int)dwBufSize);//pBuffer IntPtr类型rnrn[/code]rn这个是我将IntPtr转成byte[] ,请问有哪些方法将byte[]转成IntPtr?请再说的时候自己先试一下,我知道一个就是效率不高
c# intPtr 内存泄漏问题
我的这个程序是C#调用C++使用OpenCV实现二值图片缩放。返回数组c#再处理。rn是在线程foreach循环中的,运行一段时间就内存飙升,怀疑内存泄露。rn或者bmpimage.Save("Image\\" + (i + 1) + ".tiff", ImageFormat.Tiff);对象被占用。rn或者主程序 Application.Run(new Fmain());对象被占用。rn对象被占用的情况还是偶尔出。好头疼。困扰我多时了。我不知道我在循环中申请的intPtr到底改不改<em>释放</em>。rn rnforeach (VDP_PictureBox.VDP_PictureBox pic in list_picture)rn rn Bitmap bit3 = VDP_QrCodeEncoder.Encode(pi[i - index].urlStr.ToString());//生成一个bit3图像。rn resize = (float)(pic.pictureBox1.Width) / (float)(bit3.Width);//获取缩放比例rn BitmapInfo bina = GetImagePixel(bit3);//BitmapInfo是一个类。将图像转换成数组。代码略了。rn int width = bit3.Width;rn int height = bit3.Height;rn int step = bina.Step;rn if(Bitmap_mutex.WaitOne() == true)rn rn IntPtr [color=#FF0000]dst[/color] = showImages(out width, out height, out step, resize, bina.Result);//这里的dst需要<em>释放</em>么?rn Bitmap img = new Bitmap(width, height, step, System.Drawing.Imaging.PixelFormat.Format32bppArgb, dst);rn pic.pictureBox1.Image = img;rnrn using (Graphics g3 = Graphics.FromImage(bmpimage))rn rn g3.DrawImage(img, new Rectangle((int)((pic.Left + 5) * param),rn (int)((pic.Top + 5) * param),rn img.Width,rn img.Height),rn 0, 0, img.Width, img.Height, GraphicsUnit.Pixel);rn rn bmpimage.Save("Image\\" + (i + 1) + ".tiff", ImageFormat.Tiff);//老是对象被占用。我改如何解决呀。rn Bitmap_mutex.ReleaseMutex();rn
int与intptr转换问题
最近在研究用directShow制作多媒体播放器 ,由于对directShow不甚了解,从网上搜了不少相关的事例,不知道那些提供事例的朋友有没有真正运行过,或者研究过,反正我是遇到了不少<em>问题</em>。rn m_objFilterGraph.RenderFile(openFile.FileName);rn m_objBasicAudio = m_objFilterGraph as IBasicAudio;//图象控制接口rn m_objVidwoWindow = m_objFilterGraph as IVideoWindow; //声音控制接口rn m_objVidwoWindow.Owner =(int ) this.panel1.Handle; ////指定的转换无效rnint 与 <em>intptr</em>强制转换是有<em>问题</em>的,所以我想请教大家该怎么解决呢
纠结的C#问题 intptr
为什么这样写值rnpublic int Write(IntPtr bytData, )rnrnCopyMemory(m_pwDataWrite, bytData, lngSize);rnrnrn读得时候长度要加2呢rnpublic int Read(IntPtr bytData)rnrnCopyMemory(bytData, m_pwDataWrite, lngSize+2);rnrn
针对中国政府机构的准APT攻击样本Power Shell的ShellCode分析
一、事件回放 网络管理员在服务器上通过网络监控软件检测到,有程序在不断向外发包,并且ip地址显示国外的区域,经过相关安全工程师的分析和定位,最确定是微软操作系统上的Power Shell程序出现异常。发现的这个Power Shell程序和微软操作系统上的Power Shell程序不同,出现异常的这个Power Shell会不断的向外发包。经过该安全工程师的分析和反编译程序,最终得到了下面这段关键
C# 加载驱动程序,监控进程创建
主要代码using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; using S
Unity3D中C#调用C++动态库总结
动态库是用C++和OpenCV写的。 我们可以这样给它分类, 1.普通传值,如下面代码中MotionDetect的第4个参数; 2.传引用,MotionDetect的第3个参数,nNum传进动态库后赋值再传回来; 3.引用传一个结构体,MotionDetect的第2个参数,这里其实是传一个结构体的数组,具体像加ref的传参还真不会; 4.传一个有分配内存的变量,需要用到GCHandle,
C#模拟鼠标操作(移动 单击 双击等很多操作)
WinAPI-Wrapper 模拟鼠标点击 用于模拟鼠标移动、点击、窗口操作等的Windows API包装器类。 API 下面是一些可用的方法的总结。有更多的方法和类,比下面列出的要多,但目的是要大致了解包装器能做什么。要查看关于特定方法的详细信息和参数的详细信息,请查看代码本身,因为它的注释很好。 Mouse.cs public static void LeftClick(); public static void RightClick(); public static void MiddleClick(); public static void LeftDown(); public static void LeftUp(); public static void RightDown(); public static void RightUp(); public static void MiddleDown(); public static void MiddleUp(); public static void Move(int x, int y); public static void LeftDrag(Point point1, Point point2, int interval, int lag); Window.cs public static bool DoesExist(string windowTitle); public static IntPtr Get(string windowTitle); public static IntPtr GetFocused(); public static void SetFocused(IntPtr hWnd); public static bool IsFocused(IntPtr hWnd); public static void Move(IntPtr hWnd, int x, int y); public static void Resize(IntPtr hWnd, int width, int height); public static void Hide(IntPtr hWnd); public static void Show(IntPtr hWnd); public static Rectangle GetDimensions(IntPtr hWnd); public static Size GetSize(IntPtr hWnd); public static Point GetLocation(IntPtr hWnd); public static string GetTitle(IntPtr hWnd); public static void SetTitle(IntPtr hWnd, string title); public static void Maximize(IntPtr hWnd); public static void Minimize(IntPtr hWnd); public static void Normalize(IntPtr hWnd); public static Bitmap Screenshot(IntPtr hWnd); public static void RemoveMenu(IntPtr hWnd); public static void Close(IntPtr hWnd); public static void DisableCloseButton(IntPtr hWnd); public static void DisableMaximizeButton(IntPtr hWnd); public static void DisableMinimizeButton(IntPtr hWnd); public static void EnableMouseTransparency(IntPtr hWnd); public static Point ConvertToWindowCoordinates(IntPtr hWnd, int x, int y); public static Point GetCoordinateRelativeToWindow(IntPtr hWnd); Desktop.cs public static Bitmap Screenshot(); public static void HideTaskBar(); public static void ShowTaskBar(); public static int GetWidth(); public static int GetHeight(); 使用 在windows api文件夹中编译代码会产生一个.dll文件。任何引用这个.dll的ccode都可以使用包装器。
Mem-Reduct
内存自动<em>释放</em>,可定时<em>释放</em>,或占用率到达阈值后<em>释放</em>,适合某些内存<em>释放</em>机制有<em>问题</em>的大型游戏
c#调用win32更改图标
更改exe文件图标 struct ICONDIRENTRY { byte bWidth; byte bHeight; byte bColorCount; byte bReserved; short wPlanes; short wBitCount; public int dwBytesInRes; public int dwImage...
Graphics类及相关类详解
如果发现有什么错误地方,请指正,本文章仅仅是个人的了解和学习结果。 本文章介绍Graphics类的使用并通过demo进行了解,至于User32.Dll的使用在其他文章进行详细介绍。1.相关介绍。 2.属性。 3.函数。 4.创建Graphics。 5.注意事项 6.Demo。个人理解:Graphics是一个画家,而创建Graphics的参数Handle或者Image等为画板,当Graphics进行绘
GDI+ 中发生一般性错误。
调试程序时发生了“GDI+ 中发生一般性错误”,其代码如下:string relpath =  "images/" + Guid.NewGuid().ToString() +".jpg";string saveFileName = _path + relpath;objBitmap.Save(saveFileName,System.Drawing.Imaging.ImageFormat.J
Mat,cvMat和IplImage的相互转换方法
Mat,cvMat和IplImage的相互转换方法   由于opencv内即有c也有c++函数,然后有些函数只支持c++,所以必须对数据类型进行转换,这样才能作为参数引用 IplImage《-------cvClone函数-------》cvMat      cvMat、IplImage----cv::cvarrToMat函数-------》Mat Mat      ----(Ma
虹软人脸识别图片匹配实测通过
实测通过 //人脸检测引擎 IntPtr detectEngine = IntPtr.Zero; //人脸识别引擎 IntPtr regcognizeEngine = IntPtr.Zero; //拖拽线程 private Thread threadMultiExec;
IntPtr使用
IntPtr用于表示指针或句柄的平台特定类型,此类型对多线程操作是安全的。C#中的IntPtr类型称为“平台特定的整数类型”,它们用于本机资源,如窗口句柄。资源的大小取决于使用的硬件和操作系统,但其大小总是足以包含系统的指针(因此也可以包含资源的名称)。 所以,在调用的API函数中一定有类似窗体句柄这样的参数,那么当声明这个函数时,应该将它显式地声明为IntPtr类型。   IntPtr 类型被
C# 托管内存与非托管内存之间的转换(结合Unity3d的实际开发)
1.c#的托管代码和非托管代码 c#有自己的内存回收机制,所以在c#中我们可以只new,不用关心怎样delete,c#使用gc来清理内存,这部分内存就是managed memory,大部分时候我们工作于c#环境中,都是在使用托管内存,然而c#毕竟运行在c++之上,有的时候,(比如可能我们需要引入一些第三方的c++或native代码的库,在Unity3d开发中很常见)我们需要直接在c#中操纵非托管
ActivexForm释放问题
测试ActivexForm<em>释放</em><em>问题</em>,实在是痛苦了
IntPtr介绍
一:什么是IntPtr 先来看看MSDN上说的:用于表示指针或句柄的平台特定类型。这个其实说出了这样两个事实,IntPtr 可以用来表示指针或句柄、它是一个平台特定类型。对于它的解释,这个哥们写的比较好:It's a class that wraps a pointer that is used when calling Windows API functions. The underl
使用.net操作pcc的个人数据库代码
这篇文章介绍如何管理操作PPC自带的个人数据库。附件是其中的例子,使用C#Windows CE的数据库也叫CEDB,这个数据库的每个数据都有一个table而没有固定的结构记录。每个数据库只容许有4 个字段的。他可以被直接创建或者通过程序来创建。看内容还挺都多,最近时间有点紧写个Introduction算了。原文如下:IntroductionThis article shows how Window
Unity热更新专题(四)Unity热更新之LuaInterface(下)
Unity热更新专题(三)Unity热更新之LuaInterface(下) ①在Lua中使用C#的类 新建Lua脚本Script.lua require "luanet" luanet.load_assembly("System") Int32 = luanet.import_type("System.Int32") print(Int32) 修改Program.cs
也谈跨进程设置模式窗口的父窗体:(关于IWin32Window)
 一般情况下,应用程序中加载窗体的显示分为模式弹出和无模式弹出两种,对应到C#语句就是:Form.ShowDialog()Form.ShowDialog(IWin32Window)和Form.Show()。Form.Show(IWin32Window)。可以看出,无论是模式弹出和无模式弹出,dotnet都分别提供了一个传入参数名为IWin32Wi
c#里FindWindow的用法
FindWindow()函数的用法。要在C#里使用该API,写出FindWindow()函数的声明:             [DllImport("coredll.dll", EntryPoint = "FindWindow")]            private extern static IntPtr FindWindow(string lpClassName, string lpWin
C#进程间通讯技术-整理。
扩展阅读:http://www.cnblogs.com/joye-shen/archive/2012/06/16/2551864.html 一、进程间通讯的方式 1)共享内存 包括:内存映射文件,共享内存DLL,剪切板。 2)命名管道及匿名管道 3)消息通讯 4)利用代理方法。例如SOCKET,配置文件,注册表方式。 等方式。 方法一:通
WPF VLC客户端和SDK的简单应用
VLC_SDK编程指南 VLC 是一款自由、开源的跨平台多媒体播放器及框架,可播放大多数多媒体文件,以及 DVD、音频 CD、VCD 及各类流媒体协议。它可以支持目前市面上大多数的视频解码,除了Real。 VLC_SDK的调用 VLC的SDK使用C语言写成,它的解码库部分的基础是FFMpeg,FFMpeg也是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。 VLC的...
IntPtr类型
声明:从MSDN 2005 Express上抄来的,不知道对不对,娃哈哈哈 一个平台相关的类型,它的作用是描述一个指针或是一个句柄 Namespace: System Assembly: mscorlib (in mscorlib.dll) 原型 Visual Basic Public Structure IntPtr Implements ISerializable C#
IntPtr 相关
请问高手 IntPtr 是个什么样的类型 能举个例子看看吗rn它该怎么用
IntPtr简介
转自:http://apps.hi.baidu.com/share/detail/33637951 IntPtr用于表示指针或句柄的平台特定类型,此类型对多线程操作是安全的。 C#中的IntPtr类型称为“平台特定的整数类型”,它们用于本机资源,如窗口句柄。资源的大小取决于使用的硬件和操作系统,但其大小总是足以包含系统的指针(因此也可以包含资源的名称)。 所以,在调用的API函数中一定有类似窗
c# 多线程 接收键盘输入 网络资源
c# 多线程 接收键盘输入 Intptr to Bitmap
C# opencv 加载图片报错
========================== 未经处理的异常:  System.TypeInitializationException: “Emgu.CV.CvInvoke”的类型初始值设定项引发异常。 ---&amp;gt; System.BadImageFormatException: 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)    在 Emgu.CV....
C#中IntPtr的使用问题
在VTK的类OBBTree类里有一个成员函数是int Insideoroutside(IntPtr point),我现在有一个点,它的三维坐标都有,要怎么传到这个函数里?rnrn新手求问啊,对IntPtr不熟悉
跨DLL的内存分配释放问题 Heap corruption
这是个很典型的<em>问题</em>,在MSDN上也有描述。<em>问题</em>是
iOS NSTimer不被释放的若干问题
_timer = [NSTimer scheduledTimerWithTimeInterval:3.0f target:self selector:@selector(timerFire:) ...
网上拍卖平台系统(SSH)----毕业设计(源代码、论文、翻译...)下载
毕业设计 ssh框架 网上拍卖平台系统----源代码、论文、开题报告、外文翻译.... 交流学习 相关下载链接:[url=//download.csdn.net/download/remixmoon/2692528?utm_source=bbsseo]//download.csdn.net/download/remixmoon/2692528?utm_source=bbsseo[/url]
asp.net网络开发指南(源代码)下载
1.搭建ASP.NET开发环境 2.C#语言基础 3.ASP.NET的基本对象 4.应用ADO.NET编程 5.进一步使用ADO.NET编程 6.导航与控件 7.用户输入验证 8.网络用户管理系统 9.网络硬盘 10.留言板 11.网络邮件管理系统 12.网站流量统计 13.网络在线投票系统 14.网上购物商城 相关下载链接:[url=//download.csdn.net/download/asdf658/3249331?utm_source=bbsseo]//download.csdn.net/download/asdf658/3249331?utm_source=bbsseo[/url]
Introduction To Information Retrieval下载
信息检索的经典英文教程。介绍信息检索的模型、算法及其比较。例子较多,文本分类部分很好。 相关下载链接:[url=//download.csdn.net/download/wlqcw/2100991?utm_source=bbsseo]//download.csdn.net/download/wlqcw/2100991?utm_source=bbsseo[/url]
文章热词 设计制作学习 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 区块链问题 大数据专业教育的问题
我们是很有底线的