进程查看器1.3版开发后记

水银灯の桀

水银灯の桀

2016-02-19 18:50

给自己一点时间接受自己,爱自己,趁着下午茶的时间来学习图老师推荐的进程查看器1.3版开发后记,过去的都会过去,迎接崭新的开始,释放更美好的自己。
终于赶在元宵节这天发布“进程查看器1.3版”,顺便将它的中文版名字改为“05元宵版”。“进程查看器”一直都是用休息时间编码的,虽然1.3版增加的功能不多,但也耗用了好几天的下班时间。开发过程中还是有点东西需要记录下来,免得以后又忘记了。
  
  一、查找主窗体
  通过特定的窗体句柄查找主窗体,这是以前做过的功能,随手写出以下代码:
  
    if hWnd 0 then
          while GetParent(hWnd)  NULL do hWnd := GetParent(hWnd);
  在调整时发现竟然会死循环,把循环改为while GetParent(hWnd)  0后正常,后来才想起我以前在CSDN回答过别人的这个问题,发现自己起来越没记性了。

  二、最大化窗口的矩形区域
  通过窗体句柄计算窗体矩形区域并画虚线提示框也是以前做过的功能,不过源码在家里,这趟只得重新编写。但是在我现用的Win2000系统中,最大化窗体的矩形区域左上角竟然是(-4,-4),且宽度也比屏幕宽度多了4,想来可能是Windows有意这样处理窗体,让它那个3D的边框显示在屏幕之外。印象中我上次做这个功能时并没有这个问题,不知是不是以前没注意到。

  三、取进程的内存用量
  在Win2000下很容易实现,用GetProcessMemoryInfo就可以了,而且有任务管理器可以对比。而在Win98/ME下就麻烦多了,最后使用了下面的代码,但得到的数值很大,没得对比的情况下只能这样了。
  
    iFlag := VirtualQueryEx(hndProcess, lpAddr, mi, SizeOf(mi));
      repeat
          LongWord(lpAddr) := LongWord(mi.BaseAddress) + mi.RegionSize;
          if LongWord(lpAddr) $7fffffff then break;
          if mi.State = MEM_COMMIT then Inc(iTotalCommit, mi.RegionSize);
          iFlag := VirtualQueryEx(hndProcess, lpAddr, mi, SizeOf(mi));
      until iFlag sizeof(mi);

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  四、GetWindowThreadProcessId
  DWORD GetWindowThreadProcessId(HWND, LPDWORD)可以返回两个值,一个是函数本身的返回值,另一个LPDWORD指向的变量,LPDWORD才进程ID。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)
展开更多 50%)
分享

猜你喜欢

进程查看器1.3版开发后记

编程语言 网络编程
进程查看器1.3版开发后记

开发一个密码查看器

编程语言 网络编程
开发一个密码查看器

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Win10系统如何查看照片查看器的进程

电脑入门
Win10系统如何查看照片查看器的进程

Win10照片查看器的系统进程是什么?

电脑入门
Win10照片查看器的系统进程是什么?

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

如何关闭事件查看器

电脑入门
如何关闭事件查看器

如何打开“事件查看器”

电脑入门
如何打开“事件查看器”

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

网友当心 HTML文件也能格式化硬盘

网友当心 HTML文件也能格式化硬盘

实现QQ窗体的缩入伸出功能

实现QQ窗体的缩入伸出功能
下拉加载更多内容 ↓