vc 獲取窗口標題GetWindowText


今天在寫一個模塊,具體功能是想時刻監控用戶當前活動窗口,需要獲取窗口標題以及其它相關信息,記得API GetWindowText就是用來做這個的,結果試了半天,有的獲取成功了有的獲取失敗了,而且有關漢字的標題獲取不到。找了好半天資料方法都試還是行不通。最后還得仔細看MSDN,偶爾靈感突現,抱着試試的心態試一下ANSI版本的(以前一值用的是Unicode版本,感覺這兩個版本是一樣的),結果奇跡終於出現了----OK了。看來有時候還是有區別的。具體我知道的有兩種方法可以獲取窗口標題,除了上面的API,還可以向窗口發送一個WM_GETTEXT也是可以的。
下面貼出關鍵代碼:

/代碼不嚴謹,需要對返回值做判斷
while (1)
	{
		HWND hWindow = GetForegroundWindow();
		DWORD dwProcess;
		LRESULT result = 0;
		DWORD dwForeID = GetWindowThreadProcessId(hWindow, &dwProcess);

		HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, dwProcess);
		
		WCHAR wszProcessPath[MAX_PATH] = { 0 };
		DWORD dwSize = MAX_PATH;
		QueryFullProcessImageNameW(hProcess, 0, wszProcessPath, &dwSize);
		printf("processName:%ws\n", wszProcessPath);
		CHAR wszTitle[MAX_PATH] = { 0 };
                 //利用window消息機制也是可以的
		//result = SendMessageA(hWindow, WM_GETTEXT, MAX_PATH, (LPARAM)wszTitle);
		result = GetWindowTextA(hWindow, wszTitle, MAX_PATH);
		
		printf("title:%s \nProcessID:%d \n\n", wszTitle, dwProcess);
		
		Sleep(1000);
	}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM