阅读:2455回复:11
如何 实现 资源管理器 菜单中 刷新 功能
我想实现 对 资源管理器 刷新功能,就是按 F5 键的效果,用以下方法都不成功:
1、 发送消息模拟 F5 hwnd = FindWindow(\"ExploreWClass\",NULL); SendMessage(hwnd,WM_KEYDOWN,0x74,0); SendMessage(hwnd,WM_KEYUP,0x74,0); 2、 // Simulate a key release keybd_event( 0x74, 0, 0, 0 ); keybd_event( 0x74, 0,KEYEVENTF_KEYUP, 0); 3、使用 SendInput INPUT input[2]; memset(input, 0, sizeof(input)); input[0].type = input[1].type =INPUT_KEYBOARD; input[0].ki.wVk = input[1].ki.wVk= VK_F5; input[0].ki.dwFlags = 0; input[1].ki.dwFlags = KEYEVENTF_KEYUP; input[0].ki.time = input[1].ki.time = GetTickCount(); SendInput(2, input, sizeof(INPUT)); 那为高人能够指点?偶刚用VC不久 |
|
沙发#
发布于:2005-04-26 15:34
SetActiveWindow\\SetForegroundWindow\\BringWindowToTop\\SetWindowPos.
你挑一个试试,再/或调用SetFocus. [编辑 - 4/26/05 by maqian] |
|
|
板凳#
发布于:2005-04-26 17:10
有空,给你试了一下.代码如下.
HWND h = FindWindow( \"ExploreWClass\", NULL ); ::SetWindowPos( h, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE ); keybd_event( 0x74, 0, 0, 0 ); 注:SetForegroundWindow\\BringWindowToTop也可以.SetActiveWindow不行.你的第一种方法肯定不行,原因可自己找书看. |
|
|
地板#
发布于:2005-04-26 18:03
多谢啊!
我建立了win32 console 程序: HWND h = FindWindow( \"ExploreWClass\", NULL ); ::SetWindowPos( h, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE ); keybd_event( 0x74, 0, 0, 0 ); keybd_event( 0x74, 0,KEYEVENTF_KEYUP, 0); BUILD 后 在资源管理器中执行 exe 还是不幸!为什么? 还需要别的吗? |
|
地下室#
发布于:2005-04-27 08:51
用SetForegroundWindow就行了.
|
|
|
5楼#
发布于:2005-04-27 09:10
he
|
|
6楼#
发布于:2005-04-27 09:47
HWND h = FindWindow( \"ExploreWClass\", NULL );
SetForegroundWindow( h); keybd_event( 0x74, 0, 0, 0 ); keybd_event( 0x74, 0,KEYEVENTF_KEYUP, 0); 你试过吗? 我这样用还是不幸! :( |
|
7楼#
发布于:2005-04-27 10:17
没办法了,只好出绝招,请看:
HWND h = FindWindow( \"ExploreWClass\", NULL ); SetForegroundWindow( h); Sleep(100);:) keybd_event( 0x74, 0, 0, 0 ); keybd_event( 0x74, 0,KEYEVENTF_KEYUP, 0); 搞定收功. |
|
|
8楼#
发布于:2005-04-27 11:33
怎么还不幸? 发个exe 过来如何? lhzh114@yahoo.com.cn QQ:50994497 |
|
9楼#
发布于:2005-04-27 12:12
服了你,我连Sleep这样宫廷名医的祖传秘方都给你用上还不行,真TM不幸.
我把项目发给你吧.你确定是资源管理器?你调试看hWnd的值是否正确.再不行你看看Sleep(200,300,400...行不行. |
|
|
10楼#
发布于:2005-04-27 12:37
你写个没窗口的普通程序,不早就解决了.干嘛非要控制台程序?
|
|
|
11楼#
发布于:2005-04-27 14:31
多谢你啊!不厌其烦多次解释,给分了!
我是了 Sleep(1000) 还是不幸才问的。 原来是他吗的 控制台程序 的问题! |
|