能力值:
(RANK:300 )
2 楼
你的程序没有建立窗口,没有呼叫 GetMessage or PeekMessage ,系统应该不会呼叫 HOOK proc
MSDN -> SetWindowsHookEx -> KeyboardProc
KeyboardProc
The KeyboardProc hook procedure is an application-defined or library-defined
callback function used with the SetWindowsHookEx function. The system
calls this function whenever an application calls the GetMessage or PeekMessage
function and there is a keyboard message ( WM_KEYUP or WM_KEYDOWN) to be
processed.
能力值:
( LV4,RANK:50 )
3 楼
cout << "CONTROL" << endl ;
cout ?
out到哪里去了?
程序本身是不会被Hook的
能力值:
( LV2,RANK:10 )
4 楼
猪头!
你豪客联
加上你的中文 显英语丫!
能力值:
( LV2,RANK:10 )
5 楼
?主,不是呃?忤的.SetWindowsHookEx一定至少要一?message pump如GetMessage之?在哕行,最好是建立一??形window?接收Hook的信息.但呃?只限於忤程式本身的嫔.如果要忤整?windows的嫔,必?要??DLL把KeyboardProc?出.??程序,MSDN有真明.
能力值:
(RANK:1010 )
6 楼
受教了!
还有一个弱的问题要请教各位:
如何利用进程名(比如notepad.exe )来得到进程ID或者是进程句柄?在API中的“Process and Thread Functions”这一部分没有这一个函数啊
能力值:
( LV2,RANK:10 )
7 楼
首先你可以通过进程快照或者枚举来获取进程pid
然后调用OpenProcess获取Handle,不过在你能确定主窗口的情况下,你可以调用GetWindowThreadProcessID来获取进程&线程ID
能力值:
(RANK:1010 )
8 楼
最初由 huoshan 发布 首先你可以通过进程快照或者枚举来获取进程pid 然后调用OpenProcess获取Handle,不过在你能确定主窗口的情况下,你可以调用GetWindowThreadProcessID来获取进程&线程ID
这个我知道啊,我说的是如何利用进程名称(例如notepad.exe)来得到句柄或ID,而不想通过窗口或者进程枚举
能力值:
( LV2,RANK:10 )
9 楼
汗~~~~~难道要系统给你一个
Handle OpenProcess(LPCSTR lpProcName)?
能力值:
(RANK:1010 )
10 楼
大家不要怪我啊,菜鸟一只,不知道那些可以直接调用,那些不可以。
能力值:
( LV2,RANK:10 )
11 楼
最初由 北极星2003 发布 这个我知道啊,我说的是如何利用进程名称(例如notepad.exe)来得到句柄或ID,而不想通过窗口或者进程枚举
可以呃?
DWORD GetPidByName(LPCTSTR lpName)
{
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hSnapshot == INVALID_HANDLE_VALUE)
return 0;
DWORD dwPid = 0;
PROCESSENTRY32 pe;
pe.dwSize = sizeof(PROCESSENTRY32);
if (Process32First(hSnapshot, &pe))
do
{
string name = lpName, exe = pe.szExeFile;
transform(name.begin(), name.end(), name.begin(), tolower);
transform(exe.begin(), exe.end(), exe.begin(), tolower);
if (name == exe)
{
dwPid = pe.th32ProcessID;
break;
}
} while (Process32Next(hSnapshot, &pe));
CloseHandle(hSnapshot);
return dwPid;
}
能力值:
(RANK:1010 )
12 楼
非常感谢!!