如何获得一个调用某个函数时产生的线程的句柄或ID

如何获得一个调用某个函数时产生的线程的句柄或ID,第1张

但是box的insertItem()函数不起作用。

我的线程放在了Global类里,现在需要在线程里对别的窗口内的控件进行 *** 作。

------解决方案--------------------------------------------------------我建议的做法是用FindWindowEx取窗口句柄,然后再用GetDlgItem之类的取控件句柄,通过API进行 *** 作。

------解决方案--------------------------------------------------------线程最好不要对别的窗口内的控件进行 *** 作,而是发送消息给窗口,让主线程来 *** 作界面。

还有你说不起作用可能是你未强制重画,试试插入项后调用一下

CListCtrl::RedrawItems 或

Cwnd::UpdateWindow

可以通过指令查询当前进程打开了多少句柄,Linux下有exec函数族可以执行指令,把指令写进去就行了。

-查看当前进程打开了多少句柄数

# lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more

-根据ID号来查看进程名。

# ps aef|grep ID号

是想练习使用c语言吗?

如果只是想实现这种功能,可以添加一个定时任务,用at命令,QQ是可以在命令行下启动且登录的,具体参数为:QQ路径\QQexe /START QQUIN:QQ号码 PWDHASH:Base64(MD5(QQ密码)) /STAT:40/41

其中最前面写QQ的安装路径,比如c:\tencent\qqexe ,“QQ号码”替换成自己的 QQ号码就行了,”Base64(MD5(QQ密码))“是把QQ密码经过MD5加密后再进行Base64加密,两种加密方法网上都有,还都可以在线加密,很容易实现的,后面的/stat的参数是设置QQ的登录模式,40为隐身,41为在线。

这样,通过命令行的两条命令就可以实现每天定时登录QQ。

用c语言专门点的代码写的话我不会,但用c语言实现命令行功能的代码我会,用system("命令行代码");函数来实现在c程序中运行命令行代码的功能。

HANDLE GetProcessHandle(int nID)

{

return OpenProcess(PROCESS_ALL_ACCESS, FALSE, nID);

}

HANDLE GetProcessHandle(LPCTSTR pName)

{

HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

if (INVALID_HANDLE_VALUE == hSnapshot) {

return NULL;

}

PROCESSENTRY32 pe = { sizeof(pe) };

BOOL fOk;

for (fOk = Process32First(hSnapshot, &pe); fOk; fOk = Process32Next(hSnapshot, &pe)) {

if (!_tcscmp(peszExeFile, pName)) {

CloseHandle(hSnapshot);

return GetProcessHandle(peth32ProcessID);

}

}

return NULL;

}

PS你的代码不够精炼,所以重新写了一个。你看下这个能用不,不能用再帮你找找你的错误。主要你的代码太长了,所以没细看,你的Pn酱紫初始化啊,还有既然是DLL的,那就应该分别做LPCWSTR和LPCSTR两个版本,看你在LPCSTR版本里还用Process32FirstW,是不是有些混乱了?Pn被填充了UNICODE字符集再去和LPCSTR做比较,怎么能得出正确结果呢? 还有那个那个连COM的东西也出来了,完全被雷倒了,休克中

===================================

贴上来的代码都已很负责任的运行通过,不会有错你再检查看看是由于什么引起编译错误可以把出错信息贴上来然后帮你分析看看

另外,workingroy说要提权,DLL是不是应该自作主张提权有待商榷,提权完全可以由客户程序负责决定可以在调用函数前提权,函数调用完恢复原来的权限另外就是提权 *** 作也有消耗,对于系统管理员身份运行(通常我们都是系统管理员身份登陆WINDOWS),不需要提权当然,有高手指出,VISTA和7对系统管理员的权限已经有了修改,既是是系统管理员,权限也受到了某些限制这个我没研究过持保留意见当然楼主的函数应该在提供一个参数,用来传递要打开的进程句柄的权限一般不需要PROCESS_ALL_ACCESS的

以上就是关于如何获得一个调用某个函数时产生的线程的句柄或ID全部的内容,包括:如何获得一个调用某个函数时产生的线程的句柄或ID、Linux下获取进程打开的句柄数,用C代码实现、如果用c/c++语言写一个每天定时在某个时间上qq的程序呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9738779.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存