Когда ставлю хук на мышь, есть две очень неприятные проблемы.
1) Когда использую inputbox, мышь на пару сек. подвисает, а бывает и вообще глюканет сильно.
2) При одновременном скролинге в listbox-е, с помощью ролика мыши, и передвижении мыши, так же идут какие-то подвисания курсора. Эта фигня происходит при включенной плавной прокрутке в системе.
p.s. я так понял, что inputbox блокирует дальнейшее выполнение функции, как это предотвратить.
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
ListBox1: TListBox;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
function SysMsgProc(code: integer; wParam: longint; lParam : longint):longint; stdcall;
var
Form1: TForm1;
Mouse_SysHook: HHOOK;
implementation
{$R *.dfm}
function SysMsgProc(code: integer; wParam: longint; lParam : longint):longint; stdcall;
begin
Result := CallNextHookEx(Mouse_SysHook, Code, wParam, LParam);
if (Code=HC_ACTION) then
begin
if (wParam = WM_MBUTTONDOWN) then
begin
InputBox('','','');
result:=-1;
end;
end else
Result := CallNextHookEx(Mouse_SysHook, Code, wParam, LParam);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
if Mouse_SysHook <> 0 then
UnhookWindowsHookEx(Mouse_SysHook);
Mouse_SysHook := SetWindowsHookEx(WH_MOUSE_LL, @SysMsgProc, HInstance, 0);
end;
end.
-------------------
Сделал обработку inputbox в отдельном потоке, но появился глюк странный, при нажатии кнопки в области моей проге.
p.s. может лучше делать хук в потоке? подскажите пожалуйста..
-------------------
Вроде помогла синхронизация... Но все же, кто нибудь ответит, можно ли этот вопрос решить как-то легче?