老師布置的任務,但我覺得不可能完成,我寫了一部分源代碼,可以獲取本應用程式和系統程式的部分標題,也就是無法獲取到一般應用程式的句柄,希望各位大神指點指點,我希望其他應用程式也能被取到:#include<windows.h>
#include<string.h>
#pragma data_seg("mydata")
HHOOK h_gHook=NULL;
HHOOK h_gHook1=NULL;
HWND g_hwnd=NULL;
LPMOUSEHOOKSTRUCT pMouseHook=NULL;
HWND glhPrevTarWnd=NULL;//上次滑鼠所指的視窗
HWND glhDisplayWnd=NULL;//顯示目標視窗編輯框的句柄
HINSTANCE glhInstance = NULL;//DLL實體句柄
char strMsg[100]={0};
#pragma data_seg()
#pragma comment(linker,"/section:mydata,RWS")
LRESULT CALLBACK MouseProc(
int nCode,
WPARAM wParam,
LPARAM lParam
){
// pMouseHook = (MOUSEHOOKSTRUCT FAR*)lParam;
pMouseHook = (MOUSEHOOKSTRUCT*)lParam;
if(WM_MOUSEMOVE==wParam){
if(nCode>=0){
/*獲取視窗標題*/
HWND glhTargetWnd = pMouseHook->hwnd;//取目標視窗
HWND ParentWnd = glhTargetWnd;
int i=1000;
UpdateWindow(glhTargetWnd);
if(glhTargetWnd!=NULL){
GetWindowText(glhTargetWnd,strMsg,100);
SetWindowText(GetDlgItem(g_hwnd,1001),strMsg);
}
/*獲取父視窗標題*/
glhTargetWnd = GetParent(glhTargetWnd);
//取應用程式視窗句柄
if(glhTargetWnd!=NULL){
GetWindowText(glhTargetWnd,strMsg,100);
SetWindowText(GetDlgItem(g_hwnd,1000),strMsg);
}
/*獲取子視窗標題*/
glhTargetWnd=WindowFromPoint(pMouseHook->pt);
// glhTargetWnd=GetWindow(glhTargetWnd,GW_OWNER);
if(glhTargetWnd!=NULL){
// glhTargetWnd=ChildWindowFromPoint(glhTargetWnd,pMouseHook->pt);
GetWindowText(glhTargetWnd,strMsg,100);
SetWindowText(GetDlgItem(g_hwnd,1002),strMsg);
}
}
}
if(WM_RBUTTONDOWN==wParam){
SendMessage(g_hwnd,WM_CLOSE,0,0);
UnhookWindowsHookEx(h_gHook);
UnhookWindowsHookEx(h_gHook1);
}
return CallNextHookEx(h_gHook,nCode,wParam,lParam);
}
LRESULT CALLBACK KeyboardProc(
int nCode,
WPARAM wParam,
LPARAM lParam
){
if(VK_RETURN==wParam||VK_TAB==wParam||VK_F2==wParam){
SendMessage(g_hwnd,WM_CLOSE,0,0);
UnhookWindowsHookEx(h_gHook);
UnhookWindowsHookEx(h_gHook1);
}
return CallNextHookEx(h_gHook1,nCode,wParam,lParam);
}
void SetHook(HWND hwnd){
g_hwnd = hwnd;
glhInstance=GetModuleHandle("Hook1");
h_gHook = SetWindowsHookEx(WH_MOUSE,MouseProc,glhInstance,0);
h_gHook1 = SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,glhInstance,0);
}
uj5u.com熱心網友回復:
螢屏取詞用到更多的是hook API: TextOutuj5u.com熱心網友回復:
那能不能吧源代碼發過來,我是新生,發現網上有一些關于螢屏取詞的,但是大多數都轉至一篇文章,但是我也照抄了,結果總是出錯,一點小小的錯誤對我來說確是致命的,因為其他的太復雜,根本無法除錯uj5u.com熱心網友回復:
這種問題,一般不會給完整原始碼的,一般都是提示你怎么解決,具體解決要靠你自己。uj5u.com熱心網友回復:
樓主可以呼叫金山詞霸的dll csdn有提供介面說明。搜索一下,要自己寫的話肯定要HOOK系統函式。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/117222.html
標籤:基礎類
上一篇:新手指導
下一篇:vc 6.0
