多謝了!
解决方案 »
- 字符串数组都搞不定,这下丢人了,请教各位,解决立即给分
- 请问:fastreport如何做横向循环报表
- 点击查询按钮后,出现表,而且自动在表后加一个计算的列,怎么做?
- 关于数字取整问题???
- 在Delphi中如何显示“水晶报表”的“子报表”
- 制作添加用户窗体问题 在线等待
- ado中master處于新增狀態時﹐detail為和不能新增記錄﹐而BDE卻可以﹐如何做﹐能嚷ADO也可以
- 关于delphi中package安装后改名字的问题
- 请问如何在SQL语句中实现对 Binary 类型的位运算?
- 谁有Webbrowser.ExecWeb的具体说明,E_mail给我一份!最好是webbrowser的使用说明!
- delphi中如何通过函数名(字符串)调用函数?
- 请教:已得到外部程序的某个按纽的句柄,可是它不接收BM_click及enter等信息,还没有办法点击它呢?
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,
UnitHookType;type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject); private
{ Private declarations }
hMapObj: THandle;
pShMem: PShareMem;
fWndClosed: boolean;
procedure getMouseInfo(var theMess: TMessage); message WM_MOUSEPT;
public
{ Public declarations } end;
var
Form1: TForm1;implementation{$R *.DFM}{调用32位的DLL进行取词}function OpenGetKeyHook(sender: HWND; MessageID: WORD): BOOLean; stdcall; external 'GetWord32.DLL';
{取消取词}function CloseGetKeyHook: BOOLean; stdcall; external 'GetWord32.DLL';
{鼠标处理过程}procedure TForm1.Button1Click(Sender: TObject);
begin
if button1.caption = '取词' then
begin
OpenGetKeyHook(Form1.Handle, WM_MOUSEPT);
button1.caption := '取消';
end
else begin
CloseGetKeyHook;
button1.caption := '取词';
end;
end;procedure TForm1.getMouseInfo(var theMess: TMessage);
begin
if fWndClosed then
Exit;
if theMess.LParam = 1 then
begin {获取鼠标信息}
Label1.caption := format('X:%d Y:%d HWND:%X %s', [pShMem^.pMouse.x, pShMem^.pMouse.y, pShMem^.hHookWnd,
string(@pShMem^.fStrMouseQueue)]);
Label2.caption := '';
end
else if theMess.LParam = 2 then
begin
{进行取词,获取缓冲区数据}
Label1.caption := format('X:%d Y:%d HWND:%X ', [pShMem^.pMouse.x, pShMem^.pMouse.y, pShMem^.hHookWnd]);
Label2.caption := string(pShMem^.Text);
end;
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if button1.caption <> '取词' then
Button1Click(Sender);
end;procedure TForm1.FormCreate(Sender: TObject);
//var
// wc: TWndClass;
begin
SetForegroundWindow(self.Handle);
hMapObj := OpenFileMapping(FILE_MAP_WRITE, {获得完全访问权}
False,
LPCTSTR(MappingFileName)); {内存映射文件的名字}
if hMapObj = 0 then
begin
ShowMessage('Cannot locate the Share Memory Block!');
Halt;
end;
{pShMem指向内存映象文件}
pShMem := PShareMem(MapViewOfFile(hMapObj,
FILE_MAP_WRITE,
0,
0,
0));
if pShMem = nil then
begin
ShowMessage('Map File Mapping Failed! Error ' + IntToStr(GetLastError));
CloseHandle(hMapObj);
Halt;
end; FillChar(pShMem^, SizeOf(TShareMem), 0);
pShMem^.hMainWnd := Self.Handle;
// pShMem^.MainHinst := hInstance;
fWndClosed := false;{ wc.style := 0;
wc.lpfnWndProc := TFNWndProc(@MouseWndProc);
wc.cbClsExtra := 0;
wc.cbWndExtra := 0;
wc.hInstance := HInstance;
wc.hIcon := 0;
wc.hCursor := 0;
wc.hbrBackground := 0;
wc.lpszMenuName := nil;
wc.lpszClassName := 'ZL_MOUSE_WND_PSEUDO';
Windows.RegisterClass(wc); }
end;end.
alexanda2000(书生活)
winxkm(蹩脚的程序员)