我设置了一个全局钩子(鼠标),
LRESULT WINAPI MouseProc(int nCode,WPARAM wparam, LPARAM lparam)
{
LPMOUSEHOOKSTRUCT pMousehook=(MOUSEHOOKSTRUCT FAR*)lparam;
HWND hwnd=pMousehook->hwnd;
if(nCode>=0){//这里应该如何处理?
if(hwnd是我要处理的窗口){
::SetWindowPos(hwnd,......);
switch(wparam){
case WM_MOUSEMOVE:
//不知道如何做,对还是不对?
break;
default:
break;
}
else{
::SendMessage(.....);//其它处理
}
}
return CallNextHook(......);
}
请高手指点.我想目标窗口的鼠标选择功能(点左键拖动鼠标).有详细代码一定给分!在这里给40分.
http://www.csdn.net/expert/topic/795/795870.xml?temp=.3034326
LRESULT WINAPI MouseProc(int nCode,WPARAM wparam, LPARAM lparam)
{
LPMOUSEHOOKSTRUCT pMousehook=(MOUSEHOOKSTRUCT FAR*)lparam;
HWND hwnd=pMousehook->hwnd;
if(nCode>=0){//这里应该如何处理?
if(hwnd是我要处理的窗口){
::SetWindowPos(hwnd,......);
switch(wparam){
case WM_MOUSEMOVE:
//不知道如何做,对还是不对?
break;
default:
break;
}
else{
::SendMessage(.....);//其它处理
}
}
return CallNextHook(......);
}
请高手指点.我想目标窗口的鼠标选择功能(点左键拖动鼠标).有详细代码一定给分!在这里给40分.
http://www.csdn.net/expert/topic/795/795870.xml?temp=.3034326
file stdafx.h :
#include <windows.h>
#include <windowsx.h> // for message cracker
#include <tchar.h> // for unicodefile stdafx.cpp
#include "stdafx.h"file test.cpp
#include "stdafx.h"LRESULT CALLBACK
WndProc( HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam );// message cracker functions
void
Cls_OnDestroy(HWND hwnd);void
Cls_OnLButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags);int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
const static TCHAR lpClsName[] = TEXT("test_application");
HWND hwnd;
MSG msg;
WNDCLASSEX wcex; wcex.cbSize = sizeof( wcex );
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.lpfnWndProc = WndProc;
wcex.hInstance = hInstance;
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.hIcon = LoadIcon( NULL, IDI_APPLICATION );
wcex.hIconSm = wcex.hIcon;
wcex.hCursor = LoadCursor( NULL, IDC_ARROW );
wcex.hbrBackground = GetStockBrush( WHITE_BRUSH );
wcex.lpszClassName = lpClsName;
wcex.lpszMenuName = NULL; if( ! RegisterClassEx( &wcex ) ) {
goto FAILURE;
} hwnd = CreateWindow( lpClsName, lpClsName,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL ); if( ! hwnd ) {
goto FAILURE;
}
ShowWindow( hwnd , nCmdShow );
UpdateWindow( hwnd ); while( GetMessage( &msg, NULL, 0, 0 ) ) {
TranslateMessage( &msg );
DispatchMessage( &msg );
}
FAILURE:
return 0;
}
LRESULT CALLBACK
WndProc( HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam ) {
switch( iMsg ) {
HANDLE_MSG( hwnd, WM_LBUTTONDOWN, Cls_OnLButtonDown );
HANDLE_MSG( hwnd, WM_DESTROY, Cls_OnDestroy );
default:
break;
}
return ( DefWindowProc( hwnd, iMsg, wParam, lParam ) );
}
void
Cls_OnLButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags) {
SendMessage( hwnd, WM_NCLBUTTONDOWN, (WPARAM)HTCAPTION, (LPARAM)0 );
FORWARD_WM_LBUTTONDOWN( hwnd, fDoubleClick, x, y, keyFlags ,
DefWindowProc );
}
void
Cls_OnDestroy(HWND hwnd) {
PostQuitMessage( 0 );
}
我不用拖动呀,我先在开始点一下,虽然看不出来,然后按住shift在结尾点一下,好了,选中了!
所以你应该挂clip board链,用某种方法检测自己的内容,然后,嘿嘿。。
对了,如果有什么好的建议和消息,可以发邮件给我:[email protected]