#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;
}
桌面窗口和这个例子属于不同的进程空间, 想这样子类化窗口, 失败
本文介绍如何使用C++编程语言通过Windows API实现双击桌面触发特定操作的功能,涉及窗口查找、消息循环和宏对话框等关键技术。
800

被折叠的 条评论
为什么被折叠?



