C#调用[DllImport("user32.dll")]、[DllImport("gdi32.dll")]半小时后失效

时间:2022-08-31 09:06:32
本人用VS2010 、C# 想模拟按键精灵写一个脚本,循环 判断某点的颜色是否 等于某个数值。
前面循环几十次(大概半个小时这样) 用起来都没问题,可是用了半个小时左右,就判断不到 那一点的颜色了,然后我断电调试,发现程序还是在运行的,调试的时候到判断颜色的地方,判断出那点是255,255,255也就是白色。
主要代码如下
C#调用[DllImport("user32.dll")]、[DllImport("gdi32.dll")]半小时后失效
C#调用[DllImport("user32.dll")]、[DllImport("gdi32.dll")]半小时后失效
当程序失效的时候我调试过 前面没问题 当到了这个地方的时候 C是=0;代码如下
C#调用[DllImport("user32.dll")]、[DllImport("gdi32.dll")]半小时后失效

6 个解决方案

#1


资源用后要记得释放掉, 半小时后可能是出错了, 查看任务管理器中文件程序占用的内存数,句柄数,线程数是否异常.

#2


那请问我该怎么做呢?每隔一段时间就释放吗?顺便请问下 怎么释放呢?

#3


我查到原因了 好像是 
IntPtr hdc = GetDC(new IntPtr(0));
引起的···那我想请问下 这个 怎么释放内存?

#4


引用 1 楼 tcmakebest 的回复:
资源用后要记得释放掉, 半小时后可能是出错了, 查看任务管理器中文件程序占用的内存数,句柄数,线程数是否异常.

我查到原因了 好像是 
IntPtr hdc = GetDC(new IntPtr(0));
引起的···那我想请问下 这个 怎么释放内存?

#5


既然知道用GetDC,那怎么会不知道用ReleaseDC呢.
[System.Runtime.InteropServices.DllImportAttribute("user32.dll", EntryPoint = "ReleaseDC")]
public static extern int ReleaseDC(System.IntPtr hWnd,System.IntPtr hDC);

#6


引用 5 楼 tcmakebest 的回复:
既然知道用GetDC,那怎么会不知道用ReleaseDC呢.
[System.Runtime.InteropServices.DllImportAttribute("user32.dll", EntryPoint = "ReleaseDC")]
public static extern int ReleaseDC(System.IntPtr hWnd,System.IntPtr hDC);

我也是个新手···什么东西都会点皮毛···这2天才接触这块的···所以不懂·谢谢你哈~

#1


资源用后要记得释放掉, 半小时后可能是出错了, 查看任务管理器中文件程序占用的内存数,句柄数,线程数是否异常.

#2


那请问我该怎么做呢?每隔一段时间就释放吗?顺便请问下 怎么释放呢?

#3


我查到原因了 好像是 
IntPtr hdc = GetDC(new IntPtr(0));
引起的···那我想请问下 这个 怎么释放内存?

#4


引用 1 楼 tcmakebest 的回复:
资源用后要记得释放掉, 半小时后可能是出错了, 查看任务管理器中文件程序占用的内存数,句柄数,线程数是否异常.

我查到原因了 好像是 
IntPtr hdc = GetDC(new IntPtr(0));
引起的···那我想请问下 这个 怎么释放内存?

#5


既然知道用GetDC,那怎么会不知道用ReleaseDC呢.
[System.Runtime.InteropServices.DllImportAttribute("user32.dll", EntryPoint = "ReleaseDC")]
public static extern int ReleaseDC(System.IntPtr hWnd,System.IntPtr hDC);

#6


引用 5 楼 tcmakebest 的回复:
既然知道用GetDC,那怎么会不知道用ReleaseDC呢.
[System.Runtime.InteropServices.DllImportAttribute("user32.dll", EntryPoint = "ReleaseDC")]
public static extern int ReleaseDC(System.IntPtr hWnd,System.IntPtr hDC);

我也是个新手···什么东西都会点皮毛···这2天才接触这块的···所以不懂·谢谢你哈~