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

f2618958 2015-01-24 03:31:57
本人用VS2010 、C# 想模拟按键精灵写一个脚本,循环 判断某点的颜色是否 等于某个数值。
前面循环几十次(大概半个小时这样) 用起来都没问题,可是用了半个小时左右,就判断不到 那一点的颜色了,然后我断电调试,发现程序还是在运行的,调试的时候到判断颜色的地方,判断出那点是255,255,255也就是白色。
主要代码如下


当程序失效的时候我调试过 前面没问题 当到了这个地方的时候 C是=0;代码如下
...全文
581 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
karl_xy 2018-11-14
  • 打赏
  • 举报
回复
引用 3 楼 f2618958 的回复:
我查到原因了 好像是
IntPtr hdc = GetDC(new IntPtr(0));
引起的···那我想请问下 这个 怎么释放内存?

-------------------------------------------------------
想问下GetDC函数是干嘛的 DC是什么东西啊
f2618958 2015-01-26
  • 打赏
  • 举报
回复
引用 5 楼 tcmakebest 的回复:
既然知道用GetDC,那怎么会不知道用ReleaseDC呢.
[System.Runtime.InteropServices.DllImportAttribute("user32.dll", EntryPoint = "ReleaseDC")]
public static extern int ReleaseDC(System.IntPtr hWnd,System.IntPtr hDC);
我也是个新手···什么东西都会点皮毛···这2天才接触这块的···所以不懂·谢谢你哈~
tcmakebest 2015-01-25
  • 打赏
  • 举报
回复
既然知道用GetDC,那怎么会不知道用ReleaseDC呢.
[System.Runtime.InteropServices.DllImportAttribute("user32.dll", EntryPoint = "ReleaseDC")]
public static extern int ReleaseDC(System.IntPtr hWnd,System.IntPtr hDC);
f2618958 2015-01-25
  • 打赏
  • 举报
回复
引用 1 楼 tcmakebest 的回复:
资源用后要记得释放掉, 半小时后可能是出错了, 查看任务管理器中文件程序占用的内存数,句柄数,线程数是否异常.
我查到原因了 好像是 IntPtr hdc = GetDC(new IntPtr(0)); 引起的···那我想请问下 这个 怎么释放内存?
f2618958 2015-01-25
  • 打赏
  • 举报
回复
我查到原因了 好像是 IntPtr hdc = GetDC(new IntPtr(0)); 引起的···那我想请问下 这个 怎么释放内存?
f2618958 2015-01-25
  • 打赏
  • 举报
回复
那请问我该怎么做呢?每隔一段时间就释放吗?顺便请问下 怎么释放呢?
tcmakebest 2015-01-24
  • 打赏
  • 举报
回复
资源用后要记得释放掉, 半小时后可能是出错了, 查看任务管理器中文件程序占用的内存数,句柄数,线程数是否异常.

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧