首页
社区
课程
招聘
[求助]这段代码哪里有问题?
发表于: 2009-5-17 00:55 3694

[求助]这段代码哪里有问题?

2009-5-17 00:55
3694
初学SDK,望提点下

BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam)
{
	HANDLE hIns = GetCurrentProcess();
	LPDWORD lpdwProcessId=NULL;
	GetWindowThreadProcessId(hwnd,lpdwProcessId);
	HANDLE hInsB=OpenProcess(PROCESS_ALL_ACCESS,FALSE,*lpdwProcessId);
	if (hIns==hInsB)
	{
		if(!SetWindowPos(hwnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE))
		{
			MessageBox(hwnd,"error","error",MB_OK);
		}

	}
	return true;
}


BOOL WINAPI DllMain(HINSTANCE hinstDll, DWORD fdwReason, PVOID fImpLoad) {

   if (fdwReason == DLL_PROCESS_ATTACH) 
   {
	   	EnumWindows(EnumWindowsProc, 0);
   }
   return(TRUE);
}


还有,我段代码,是想借助,windows核心编程里面一个InjLib实例,实现对指定进程ID的主窗口进行置顶操作,没能实现,问题出在哪里?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
2
BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam)
{
  HANDLE hIns = GetCurrentProcess();
  DWORD lpdwProcessId=NULL;
  GetWindowThreadProcessId(hwnd,&lpdwProcessId);
  HANDLE hInsB=OpenProcess(PROCESS_ALL_ACCESS,FALSE,lpdwProcessId);
  if (hIns==hInsB)
  {
    if(!SetWindowPos(hwnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE))
    {
      MessageBox(hwnd,"error","error",MB_OK);
    }
    CloseHandle(hInsB);
  }
  return true;
}

BOOL WINAPI DllMain(HINSTANCE hinstDll, DWORD fdwReason, PVOID fImpLoad) {

   if (fdwReason == DLL_PROCESS_ATTACH)
   {
       EnumWindows(EnumWindowsProc, 0);
   }
   return(TRUE);
}
2009-5-17 01:24
0
雪    币: 197
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
嗯,我按楼上的改了代码,就不崩溃了。
可是不明白为什么

还有,我段代码,是想借助,windows核心编程里面一个InjLib实例,实现对指定进程ID的主窗口进行置顶操作,没能实现,问题出在哪里?
2009-5-17 09:58
0
雪    币: 197
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
没有人回答,只能自己顶下了,我这边的网络上不了CSDN
周围的人又没得问
2009-5-17 14:25
0
雪    币: 254
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
LPDWORD 是个指针类型吧?

如果是的话,你传进去,可能那个函数的parameter2不允许为空,所以给NULL同仁就crash了。

我也是猜的
2009-5-17 15:29
0
雪    币: 44
活跃值: (133)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
LPDWORD lpdwProcessId=NULL;
GetWindowThreadProcessId(hwnd,lpdwProcessId);
这个指针为NULL,怎么放ProcessId
2009-5-17 15:32
0
雪    币: 197
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
谢谢楼上,
对于那个指针已经有个大概的了解了。

还有,我段代码,是想借助,<windows核心编程>里面一个InjLib实例,实现对指定进程ID的主窗口进行置顶操作,没能实现,问题出在哪里?
2009-5-17 17:25
0
游客
登录 | 注册 方可回帖
返回
//