#include <windows.h>
LONG backUp;
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
case WM_LBUTTONDBLCLK:
MessageBox(hWnd, "双击桌面", "", MB_OK);
break;
default:
return CallWindowProc((WNDPROC)backUp, hWnd, uMsg, wParam, lParam);
}
return 0;
}
int main(int argc, char *argv)
{
HWND hWnd;
hWnd = FindWindow("Progman", "Program Manager");
if(NULL == hWnd)
{
MessageBox(NULL, "", "", 0);
return -1;
}
HWND hSubWnd = FindWindowEx(hWnd, NULL, "SHELLDLL_DefView", "");
if(NULL == hSubWnd)
{
MessageBox(NULL, "2", "", 0);
return -2;
}
HWND hSubSubWnd = FindWindowEx(hSubWnd, NULL, "SysListView32", "FolderView");
if(NULL == hSubSubWnd)
{
MessageBox(NULL, "3", "", 0);
return -2;
}
//ShowWindow(hSubWnd, SW_SHOW);
backUp = GetWindowLong(hSubSubWnd, GWL_WNDPROC);
SetWindowLong(hSubSubWnd, GWL_WNDPROC, (LONG)WndProc);
//EnableWindow(hSubWnd, TRUE);
Sleep(60000);
return 0;
LONG backUp;
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
case WM_LBUTTONDBLCLK:
MessageBox(hWnd, "双击桌面", "", MB_OK);
break;
default:
return CallWindowProc((WNDPROC)backUp, hWnd, uMsg, wParam, lParam);
}
return 0;
}
int main(int argc, char *argv)
{
HWND hWnd;
hWnd = FindWindow("Progman", "Program Manager");
if(NULL == hWnd)
{
MessageBox(NULL, "", "", 0);
return -1;
}
HWND hSubWnd = FindWindowEx(hWnd, NULL, "SHELLDLL_DefView", "");
if(NULL == hSubWnd)
{
MessageBox(NULL, "2", "", 0);
return -2;
}
HWND hSubSubWnd = FindWindowEx(hSubWnd, NULL, "SysListView32", "FolderView");
if(NULL == hSubSubWnd)
{
MessageBox(NULL, "3", "", 0);
return -2;
}
//ShowWindow(hSubWnd, SW_SHOW);
backUp = GetWindowLong(hSubSubWnd, GWL_WNDPROC);
SetWindowLong(hSubSubWnd, GWL_WNDPROC, (LONG)WndProc);
//EnableWindow(hSubWnd, TRUE);
Sleep(60000);
return 0;
}
桌面窗口和这个例子属于不同的进程空间, 想这样子类化窗口, 失败