



private:
TWndMethod scMove;
void __fastcall OnFormMove(TMessage& Msg); //---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit2.h"
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
scMove = this->WindowProc;
this->WindowProc = OnFormMove;
}
//---------------------------------------------------------------------------
void __fastcall TForm2::OnFormMove(TMessage &Msg)
{
if(Msg.Msg == WM_MOVING)
{
POINT pWindow;
GetCursorPos(&pWindow);
Form1->Caption = (String)pWindow.x + " <> " + (String)pWindow.y;
}
scMove(Msg);
}
//---------------------------------------------------------------------------//---------------------------------------------------------------------------
int pX, pY; // koniecznie zmienne globalne, można zdefiniować w pliku nagłówkowym w sekcji private
void __fastcall TForm2::OnFormMove(TMessage &Msg)
{
POINT pWindow;
if(Msg.WParam == HTCAPTION)
{
GetCursorPos(&pWindow);
pX = (pWindow.x - this->Left);
pY = (pWindow.y - this->Top);
}
if(Msg.Msg == WM_MOVING)
{
GetCursorPos(&pWindow);
Form1->Caption = (String)(pWindow.x - pX) + " <> " + (String)(pWindow.y - pY);
}
scMove(Msg);
}
//---------------------------------------------------------------------------


HHOOK g_hLogHook = NULL;
HWND g_hLastFocus = NULL;
int pX, pY;
POINT pWindow;
HWND capWindow;
bool getStart = false;
String wClassName = "Notepad";
//---------------------------------------------------------------------------
HOOKPROC ConnectHook(int iCode, WPARAM wParam, LPARAM lParam)
{
if(iCode < 0) return (HOOKPROC)CallNextHookEx(g_hLogHook, iCode, wParam, lParam);
EVENTMSG *pEvt = (EVENTMSG *)lParam;
EVENTMSG *mEvt = (EVENTMSG *)wParam;
if(pEvt->message == WM_LBUTTONDOWN && pEvt->message != WM_MOUSEMOVE)
{
capWindow = FindWindow(wClassName.c_str(), 0);
if(capWindow > 0)
{
GetCursorPos(&pWindow);
tagRECT p;
GetWindowRect(capWindow, &p);
pX = (pWindow.x - p.left);
pY = (pWindow.y - p.top);
getStart = true;
}
}
if(pEvt->message == WM_LBUTTONUP)
{
getStart = false;
}
if(pEvt->message == WM_MOUSEMOVE && getStart)
{
GetCursorPos(&pWindow);
Form1->Caption = (String)(pWindow.x - pX) + " <> " + (String)(pWindow.y - pY);
}
return (HOOKPROC)CallNextHookEx (g_hLogHook, iCode, wParam, lParam);
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TForm1::Button7Click(TObject *Sender)
{
capWindow = FindWindow("Notepad", 0);
if(g_hLogHook == NULL)
g_hLogHook = SetWindowsHookEx(WH_JOURNALRECORD, (HOOKPROC)ConnectHook, HInstance,0);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button8Click(TObject *Sender)
{
if(g_hLogHook != NULL)
{
UnhookWindowsHookEx(g_hLogHook);
g_hLogHook = NULL;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
if(g_hLogHook != NULL)
{
UnhookWindowsHookEx(g_hLogHook);
g_hLogHook = NULL;
}
}
//---------------------------------------------------------------------------
Powrót do Ogólne problemy z programowaniem
Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 8 gości