2024年3月28日发(作者:)
以前用输入法注入的时候需要用到的代码,写的还不错,分享一下吧,顺便当个备用
view source
print?
//根据进程名获取进程
01
ID
02 DWORD GetPidByProcessName(TCHAR * pProcess)
03 {
04 HANDLE hSnapshot;
05 PROCESSENTRY32 lppe;
06
//创建系统快照
hSnapshot = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,
07
//#include
08 if (hSnapshot == NULL)
09 return 0;
10
//初始化 lppe 的大小
11 = sizeof(lppe);
12
//查找第一个进程
13 if (!::Process32First(hSnapshot, &lppe))
14 return false;
15 do
NULL);
16 {
17 if(StrCmp(ile, pProcess) == 0)//#include
18 {
19 return 32ProcessID;
20 }
21 }
22
while (::Process32Next(hSnapshot, &lppe)); //查找下一个进程
23
24 return 1;
25 }
26
//根据进程ID获取窗口句
27
柄
28 HWND GetHwndByPid(DWORD dwProcessID)
29 {
//返回Z序顶部的窗口句
30
柄
31 HWND hWnd = ::GetTopWindow(0);
32 while ( hWnd )
33 {
34 DWORD pid = 0;
//根据窗口句柄获取进程
35
ID
36 DWORD dwTheardId = ::GetWindowThreadProcessId( hWnd,&pid);
37
38 if (dwTheardId != 0)
39 {
40 if ( pid == dwProcessID )
41 {
42 return hWnd;
43 }
44 }
//返回z序中的前一个或后一个窗口的句
45
柄
46 hWnd = ::GetNextWindow(hWnd , GW_HWNDNEXT);
47 }
48 return hWnd;
49 }
50
//前端显示并置顶窗口
51 void ShowForeGround(HWND hWnd)
52 {
53 if (hWnd)
54 {
55
//显示窗口
56 ::ShowWindow(hWnd, SW_NORMAL);
57
58
//前端显示
59 ::SetForegroundWindow(hWnd);
60
61
//窗口置顶
62 ::SetWindowPos(hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
63 }
64 else
65 {
66
::MessageBox(NULL, _T("未找到窗口"), _T("提示"),MB_OK);
67 }
68 }
69 void main()
70 {
71
// TODO: 在此添加控件通知处理程序代码
72 DWORD dwPid = GetPidByProcessName(_T(""));
73 HWND hWnd = GetHwndByPid(dwPid);
74 ShowForeGround(hWnd);
75 }


发布评论