2013-08-21 8 views
0

"F5"키를 누르는 것과 같이 바탕 화면을 새로 고치는 기능이 있습니다. Sendmessage 및 ToggleDesktopIcons on/off로 많은 코드를 발견했지만 "F5"의 수동 히트와 같이 나를 위해 일한 사람은 없습니다. 나는 또한 여기에 몇 가지 주제를 보았지만 모두이 문제에 대한 비공식적 인 해결책을 가지고 있었다. Windows 7 64 비트에서 IE 10을 사용하고 있고 C# Net Framework 2를 사용합니다.'F5'와 같이 Win7에서 C#의 바탕 화면을 새로 고침하면 탐색기 설정이 적용됩니다.

이 코드도 있지만 올바른 기능으로 보일지라도이 코드는 C#에서 허용되지 않습니다. 내가 여기서 바꿀 필요가있는 것을 모르겠습니다. IDE가 내 실수가 무엇인지, 내가 바로 잡아야 할 필요가 있다고 생각하리라고 생각합니다. 누군가이 함수를 수정하거나 C#과 호환되는 다른 함수를 제안 할 수 있습니까?

procedure RefreshDesktop2; 
var 
hDesktop: HWND; 
begin 
hDesktop := FindWindowEx(FindWindowEx(FindWindow('Progman', 'Program Manager'), 0, 
'SHELLDLL_DefView', ''), 0, 'SysListView32', ''); 
PostMessage(hDesktop, WM_KEYDOWN, VK_F5, 0); 
PostMessage(hDesktop, WM_KEYUP, VK_F5, 1 shl 31); 
end; 

질문 : 방법이나 방법 같은 C#에서 유사한 코드를 찾습니다 (C#으로 변환) 나 C#으로 작업을 위의 코드를 만들 수 있죠. 선택한 바탕 화면 아이콘에서 "F5"키를 눌러 아이콘/설정으로 바탕 화면을 새로 고치는 것이 내 목표입니다. 비슷한 질문으로 여러 코드를 시도해도 결과가 나지 않습니다.

+0

가능한 링크 중 하나처럼 작동 중복 HTTP : /stackoverflow.com/questions/2488727/refresh-windows-explorer-in-win7? rq = 1 –

+2

@feedwall 내가 경험 한만큼, 여기 사람들은 긴 코드와 어려운 질문에 정말로 관심이 없다./이상한 용어. 이 중 하나는 흥미 롭습니다. 그러나 대답하려면 시간이 필요합니다. –

답변

1

좋아요, 실제로 코드를 이해하지 못합니다. 실제로 정확한 창이 표시되어 F5 키 누르기를 보내면 바탕 화면이 새로 고쳐집니다. 여기에 C# 코드 (테스트이고 매력 :

내가 프로그래밍 방식으로 바탕 화면을 새로 고침에 대한 다른 선택이 여전히 있다고 생각하지만
[DllImport("user32")] 
private static extern int PostMessage(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam); 
[DllImport("user32")] 
private static extern IntPtr FindWindow(string className, string caption); 
[DllImport("user32")] 
private static extern IntPtr FindWindowEx(IntPtr parent, IntPtr startChild, string className, string caption); 
public void RefreshDesktop(){  
    IntPtr d = FindWindow("Progman", "Program Manager"); 
    d = FindWindowEx(d, IntPtr.Zero, "SHELLDLL_DefView", null); 
    d = FindWindowEx(d, IntPtr.Zero, "SysListView32", null);  
    PostMessage(d, 0x100, new IntPtr(0x74), IntPtr.Zero);//WM_KEYDOWN = 0x100 VK_F5 = 0x74 
    PostMessage(d, 0x101, new IntPtr(0x74), new IntPtr(1 << 31));//WM_KEYUP = 0x101 
} 

가 여기 How to refresh the windows desktop programmatically (i.e. F5) from C#?