Quellcode durchsuchen

GetWindowThreadId的返回值是线程ID,参数2返回的才是进程ID.

Jeff vor 3 Jahren
Ursprung
Commit
60a8baeafa

+ 9 - 8
DLLInjection/RegistryInjection/InjectionDLL/InjectionDLL/dllmain.cpp

@@ -11,14 +11,15 @@ BOOL CALLBACK EnumWndProc(HWND hwnd, LPARAM lParam)
     TCHAR szLog[MAX_PATH] = {0};
     DWORD dwCurrentProcessId = *((DWORD*)lParam);
     // 根据进程ID、窗口,获取当前窗口所在线程ID;
-    DWORD dwThreadProcessId = GetWindowThreadProcessId(hwnd, &dwCurrentProcessId);
+	DWORD dwWindProcessId = 0;
+    DWORD dwThreadId = GetWindowThreadProcessId(hwnd, &dwWindProcessId);
 #if _MSC_VER >= 1200 && _MSC_VER < 1500
-	sprintf(szLog, _T("<Injecter> 进程ID=%ld, 窗口进程ID=%ld"), dwCurrentProcessId, dwThreadProcessId);
+	sprintf(szLog, _T("<Injecter> 进程ID=%ld, 窗口进程ID=%ld\n"), dwCurrentProcessId, dwThreadId);
 #else
-	_stprintf_s(szLog, _T("<Injecter> 进程ID=%ld, 窗口进程ID=%ld"), dwCurrentProcessId, dwThreadProcessId);
+	_stprintf_s(szLog, _T("<Injecter> 进程ID=%ld, 窗口进程ID=%ld\n"), dwCurrentProcessId, dwThreadId);
 #endif
     OutputDebugString(szLog);
-    if ( dwCurrentProcessId == dwThreadProcessId && GetParent(hwnd) == NULL )   // GetParent==Null表示主窗口,本来就是找顶级的,有点多余?;
+    if ( dwCurrentProcessId == dwWindProcessId && GetParent(hwnd) == NULL )   // GetParent==Null表示主窗口,本来就是找顶级的,有点多余?;
     {
         *((HWND*)lParam) = hwnd;
         // 回调函数调用SetLastError以获取有意义的错误代码,以返回给EnumWindows的调用方
@@ -47,9 +48,9 @@ HWND GetMainWnd()
     }
 
 #if _MSC_VER >= 1200 && _MSC_VER < 1500
-	sprintf(szLog, _T("<Injecter> 进程ID=%ld, 没找到窗口,GetLastError=%ld"), dwCurrentProcessId, dwError);
+	sprintf(szLog, _T("<Injecter> 进程ID=%ld, 没找到窗口,GetLastError=%ld\n"), dwCurrentProcessId, dwError);
 #else
-	_stprintf_s(szLog, _T("<Injecter> 进程ID=%ld, 没找到窗口,GetLastError=%ld"), dwCurrentProcessId, dwError);
+	_stprintf_s(szLog, _T("<Injecter> 进程ID=%ld, 没找到窗口,GetLastError=%ld\n"), dwCurrentProcessId, dwError);
 #endif
     OutputDebugString(szLog);
 
@@ -75,9 +76,9 @@ DWORD WINAPI WorkThreadProc(LPVOID lParam)
     // 得到窗口名称
     GetWindowText(hWnd,szWndTitle,sizeof(szWndTitle));
 #if _MSC_VER >= 1200 && _MSC_VER < 1500
-	sprintf(szLog, _T("找到窗口名称:%s"),  szWndTitle);
+	sprintf(szLog, _T("找到窗口名称:%s\n"),  szWndTitle);
 #else
-    _stprintf_s(szLog, _T("找到窗口名称:%s"),  szWndTitle);
+    _stprintf_s(szLog, _T("找到窗口名称:%s\n"),  szWndTitle);
 #endif
     OutputDebugString(szLog);
     //是否名称是计算器