能力值:
( LV11,RANK:190 )
|
-
-
2 楼
GetModuleFileNameEx
|
能力值:
( LV3,RANK:20 )
|
-
-
3 楼
.版本 2
GetWindowThreadProcessId (鼠标位置窗口句柄, 进程PID) 进程句柄 = OpenProcess (2035711, 0, 进程PID) 进程名 = 取空白文本 (255) GetModuleFileNameEx (进程句柄, 0, 进程名, 256) 编辑框_获取信息.内容 = 进程名
但是获取的进程名是“?”号
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
易语言??
|
能力值:
( LV3,RANK:20 )
|
-
-
5 楼
恩 是的 暂时没学会VC++
|
能力值:
( LV11,RANK:190 )
|
-
-
6 楼
GetWindowThreadProcessId获取的<进程PID>为0吧,你调试了吗..易语言下从dll引入GetWindowThreadProcessId时第二个参数虚设置为传址
|
能力值:
( LV3,RANK:20 )
|
-
-
7 楼
果然是,是我不够认真,我想请问参数设置为“传址”是什么意思?
有些参数比如GetModuleFileNameEx的第三个参数“文件名缓冲区”,同样是保存文本信息的,为什么它就不需要设置传址了?
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
int CLibProcess::GetCurrentProcessID(string name){
DWORD aProcesses[1024], cbNeeded, cProcesses;
unsigned int i;
HANDLE hProcess = NULL;
HMODULE hMod = NULL;
char szProcessName[MAX_PATH] = "UnknownProcess ";
// 计算目前有多少进程, aProcesses[]用来存放有效的进程PIDs
if(!EnumProcesses(aProcesses,sizeof(aProcesses), &cbNeeded)){
return 0;
}
cProcesses = cbNeeded / sizeof(DWORD);
// 按有效的PID遍历所有的进程
for( i = 0; i < cProcesses; i++){
// 打开特定PID的进程
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,FALSE, aProcesses[i]);
// 取得特定PID的进程名
if(hProcess){
if(EnumProcessModules(hProcess,&hMod,sizeof(hMod),&cbNeeded)){
GetModuleBaseName(hProcess,hMod,szProcessName,sizeof(szProcessName));
//将取得的进程名与输入的进程名比较,如相同则返回进程PID
if(!_stricmp(szProcessName,name.c_str())){
CloseHandle( hProcess);
return aProcesses[i];
}
}
}//end of if ( hProcess )
}//end of for
//没有找到相应的进程名,返回0
CloseHandle(hProcess);
return 0;
}
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
我是个计算机语言小白。求求哪位老师教教我计算机语言。
|
能力值:
( LV3,RANK:20 )
|
-
-
10 楼
自己下载书 慢慢看
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
计算机小白不应该来看雪,里面水太深,反而容易知难而退。
|
能力值:
( LV3,RANK:20 )
|
-
-
12 楼
小白又怎么了,就是看中看雪是个知识大熔炉的好地方。
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
函数原型:
DWORD GetModuleFileName(
HMODULE hModule,
LPTSTR lpFilename,
DWORD nSize
);
函数参数说明:
hModule HMODULE 装载一个程序实例的句柄。如果该参数为NULL,该函数返回该当前应用程序全路径。
lpFileName LPTSTR 是你存放返回的名字的内存块的指针,是一个输出参数
nSize DWORD ,装载到缓冲区lpFileName的最大值
|
|
|