DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: randy522732557
今日帖子: 24
在线用户: 13
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 zhaoyin (zhaoyin) ★☆☆☆☆ -
普通会员
2003/11/18 11:46:16
标题:
谁有扑捉特定进程句柄的程序代码,让小弟学习学习 浏览:1994
加入我的收藏
楼主: 谁有扑捉特定进程句柄的程序代码,让小弟学习学习
----------------------------------------------
-
作者:
男 zizii (高高高级馒头) ★☆☆☆☆ -
神秘会员
2003/11/18 12:32:08
1楼: 捕捉什么?
http://www.2ccc.com/article.asp?articleid=279
看看这个行不行。
----------------------------------------------
维护世界和平,共创美好盒子。
作者:
男 zhaoyin (zhaoyin) ★☆☆☆☆ -
普通会员
2003/11/18 16:31:14
2楼: 一楼给的真是个好东东,谢谢了
以后多指点
----------------------------------------------
-
作者:
男 zhaoyin (zhaoyin) ★☆☆☆☆ -
普通会员
2003/11/18 16:35:38
3楼: 不过我想知道怎么得到一个启动程序的句柄,并对它进行操作
----------------------------------------------
-
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2003/11/18 16:46:40
4楼: 启动程序的句柄???不太明白你的意思啊!
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 zhaoyin (zhaoyin) ★☆☆☆☆ -
普通会员
2003/11/18 17:25:57
5楼: sorry我的意思是,当一个程序一启动,我就可以得到它的句柄,说白了就是一个后台监控程序,我想知道怎样才能在后台不断检测一个程序是否启动,并对它进行操作。
----------------------------------------------
-
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2003/11/18 17:28:34
6楼: 啊,偶想的苯办法就是用TIMER 控件 不停的扫描 刷新 进程列表!
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 zhaoyin (zhaoyin) ★☆☆☆☆ -
普通会员
2003/11/18 17:38:14
7楼: 这样啊,不过有点浪费资源,但我想不出更好的办法,你有代码吗?
----------------------------------------------
-
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2003/11/19 10:44:18
8楼: 偶是用C++BUILDER写的 不是太完善,对不起啊!

void __fastcall TTaskMon::ShowProcess(void)
{
lvwProcess->Items->Clear();
  HANDLE hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
     //  if(hSnapshot==(HANDLE)-1)
     //  {
     //   Application->MessageBox("程序运行失败", "错误",
     //       MB_OK+ MB_ICONEXCLAMATION);
     //    return;
     //  }
    StatusBar1->Panels->Items[0]->Text = "进程";
    StatusBar1->Panels->Items[1]->Text =
                "选择一进程可以查看它调用的模块信息";
    char Hex[14];
    TListItem  *ListItem;
  PROCESSENTRY32 pe;
    AnsiString FileName;
    AnsiString File;
    AnsiString Path;
  pe.dwSize=sizeof(pe);
  for(int i=Process32First(hSnapshot,&pe);i;i=Process32Next(hSnapshot,&pe))
  {
        FileName=pe.szExeFile;
        if (FileName.Pos('\\')==0)
        { File=FileName;
          Path=FileName;
        }
        else
        {
            for(int i=FileName.Length();i>0;i--)
            if(FileName.IsPathDelimiter(i))
            {
                File=FileName.SubString(i+1,FileName.Length());
                Path=FileName.SubString(1,i);
                break;
            }
        }
        /*
        typedef struct tagPROCESSENTRY32
{
    DWORD   dwSize;
    DWORD   cntUsage;
    DWORD   th32ProcessID;          // this process
    ULONG_PTR th32DefaultHeapID;
    DWORD   th32ModuleID;           // associated exe
    DWORD   cntThreads;
    DWORD   th32ParentProcessID;    // this process's parent process
    LONG    pcPriClassBase;         // Base priority of process's threads
    DWORD   dwFlags;
    CHAR    szExeFile[MAX_PATH];    // Path
}
typedef struct tagTHREADENTRY32
{
    DWORD   dwSize;
    DWORD   cntUsage;
    DWORD   th32ThreadID;       // this thread
    DWORD   th32OwnerProcessID; // Process this thread is associated with
    LONG    tpBasePri;
    LONG    tpDeltaPri;
    DWORD   dwFlags;
}

BOOL
WINAPI
Thread32First(
    HANDLE hSnapshot,
    LPTHREADENTRY32 lpte
    );

BOOL
WINAPI
Thread32Next(
    HANDLE hSnapshot,
    LPTHREADENTRY32 lpte
    );
        */
        ListItem= lvwProcess->Items->Add();
        ListItem->Caption = File;           // 文件名
        {
            intToHex(pe.th32ProcessID,Hex);
            ListItem->SubItems->Add(Hex);       // 进程ID
        }
        {
            AnsiString Tmp(pe.pcPriClassBase);
            ListItem->SubItems->Add(Tmp);       // 进程优先权
        }
        {
            intToHex(pe.th32ParentProcessID,Hex);
            ListItem->SubItems->Add(Hex);       // 父进程ID
        }
        {
            AnsiString Tmp(pe.cntThreads);
            ListItem->SubItems->Add(Tmp);       // 创建线程个数
        }
   //     ListItem->SubItems->Add(Path);      // 文件路径
        {
            AnsiString Tmp((int)pe.th32ProcessID);
            ListItem->SubItems->Add(Tmp);       // 进程ID
        }
  }
    CloseHandle(hSnapshot);
}
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 zhaoyin (zhaoyin) ★☆☆☆☆ -
普通会员
2003/11/19 15:29:09
9楼: 这么客气,谢谢你了
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行78.125毫秒 RSS