Coder Jozu

I believe --- 这里坚持原创,拒绝转贴

  VC知识库BLOG :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 登录 ::
  13 随笔 :: 4 文章 :: 87 评论 :: 1 Trackbacks
<2008年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

留言簿(4)

随笔分类

随笔档案

文章分类

文章档案

东接西链

搜索

最新评论

阅读排行榜

评论排行榜

BOOL NotAllowAttach(HWND hWnd)
{
?typedef BOOL (WINAPI* LPFNREGISTERTASKLIST)(HWND hwnd);
?HMODULE?hUserDll;
?LPFNREGISTERTASKLIST?lpRegisterTasklist;

?hUserDll = LoadLibrary("User32.dll");
?if(hUserDll)
?{
??lpRegisterTasklist = (LPFNREGISTERTASKLIST)
?????GetProcAddress(hUserDll, "RegisterTasklist");
??if(lpRegisterTasklist)
??{
???if(lpRegisterTasklist(hWnd))
????return TRUE;
??}
?}
?ErrorHandle("Error on NotAllowAttach.");
?return FALSE;
}

posted on 2005-01-26 23:11 Coder Jozu 阅读(5125) 评论(6)  编辑 收藏

评论

# re: 发现一个好API,奇怪的是M$怎么就是不公开呢 2005-01-27 00:30 周星星
:( 没看明白 RegisterTasklist 是干什么用的。
另外:NotAllowAttach 和 RegisterTasklist 的中文分别是什么意思?

# re: 发现一个好API,奇怪的是M$怎么就是不公开呢 2005-01-27 06:56 freedk
有啥用?

# re: 发现一个好API,奇怪的是M$怎么就是不公开呢 2005-01-27 07:06 jozu
这个是我写一个防止别人获得我当前线程的键盘状态的程序,在user32。dll里发现的,要想获得某个线程的当前键盘状态,用下面的代码段:
if(AttachThreadInput(GetCurrentThreadId(), dwThreadId, TRUE))
{
hwndFocus = ::GetFocus();
if(hwndFocus != hwndLastFocus)
{
hwndLastFocus = hwndFocus;
sprintf(szMsg, "[%d]:[%d]---[%X]:[%X]", dwProcessId, dwThreadId, hwndForceground, hwndFocus);
m_focusWinList.InsertString(-1, szMsg);
}
if(GetKeyboardState(arrayKbdState))
{
if(bFirst)
{
bFirst = FALSE;
}
else
{
szMsg[0] = '\0';
for(i = 0x30; i < 0x39; i++)
{
if(KeyboardState[i] != arrayKbdState[i])
{
sprintf(&szMsg[strlen(szMsg)], "%c.%02X-%02X ", i, KeyboardState[i], arrayKbdState[i]);
}
}
for(i = 0x41; i < 0x5A; i++)
{
if(KeyboardState[i] != arrayKbdState[i])
{
sprintf(&szMsg[strlen(szMsg)], "%c.%02X-%02X ", i, KeyboardState[i], arrayKbdState[i]);
}
}
if(szMsg[0] != '\0')
m_KbfChangeList.InsertString(-1, szMsg);
}

for(i = 0; i < 256; i++)
KeyboardState[i] = arrayKbdState[i];

}
AttachThreadInput(GetCurrentThreadId(), dwThreadId, FALSE);
}

我需要避免别人获得和我一样的键盘状态,一定程度上防止别人的keylogger(一种偷盗密码的软件)。

这两个函数把禁止线程被Attach,这样用上面代码的方式就不能成功了

# re: 发现一个好API,奇怪的是M$怎么就是不公开呢 2006-05-30 20:26 brodbus
是够奇怪的,调用之后,好象什么作用不起,老大这个东东到底是干什么的啊!

标题  
姓名  
主页
验证码 *
内容   
  登录  使用高级评论  Top
[使用Ctrl+Enter键可以直接提交]