1、如何拦截到打印接口的数据
2.最近使用一个软件,有一个加密狗。它是装在打印接口上的。请问定种加狗的工作原理一般是什么

解决方案 »

  1.   

    给你一段代码参考一下
    截获滚动条消息 
     type{$IFDEF WIN32}WParameter = LongInt;{$ELSE}WParameter = Word;{$ENDIF}LParameter = LongInt;{Declare a variable to hold the window procedure we are replacing}varOldWindowProc : Pointer;function NewWindowProc(WindowHandle : hWnd;TheMessage : WParameter;ParamW : WParameter;ParamL : LParameter) : LongInt{$IFDEF WIN32} stdcall; {$ELSE} ; export; {$ENDIF}varTheRangeMin : integer;TheRangeMax : integer;TheRange : integer;beginif TheMessage = WM_VSCROLL then begin{Get the min and max range of the horizontal scroll box}GetScrollRange(WindowHandle,SB_HORZ,TheRangeMin,TheRangeMax);{Get the vertical scroll box position}TheRange := GetScrollPos(WindowHandle,SB_VERT);{Make sure we wont exceed the range}if TheRange < TheRangeMin thenTheRange := TheRangeMin elseif TheRange > TheRangeMax thenTheRange := TheRangeMax;{Set the horizontal scroll bar}SetScrollPos(WindowHandle,SB_HORZ,TheRange,true);end;if TheMessage = WM_HSCROLL then begin{Get the min and max range of the horizontal scroll box}GetScrollRange(WindowHandle,SB_VERT,TheRangeMin,TheRangeMax);{Get the horizontal scroll box position}TheRange := GetScrollPos(WindowHandle,SB_HORZ);{Make sure we wont exceed the range}if TheRange < TheRangeMin thenTheRange := TheRangeMin elseif TheRange > TheRangeMax thenTheRange := TheRangeMax;{Set the vertical scroll bar}SetScrollPos(WindowHandle,SB_VERT,TheRange,true);end;{ Call the old Window procedure to }{ allow processing of the message. }NewWindowProc := CallWindowProc(OldWindowProc,WindowHandle,TheMessage,ParamW,ParamL);end; procedure TForm1.FormCreate(Sender: TObject);begin{ Set the new window procedure for the control }{ and remember the old window procedure. }OldWindowProc := Pointer(SetWindowLong(ScrollBox1.Handle,GWL_WNDPROC,LongInt(@NewWindowProc)));end;procedure TForm1.FormDestroy(Sender: TObject);begin{ Set the window procedure back }{ to the old window procedure. }SetWindowLong(ScrollBox1.Handle,GWL_WNDPROC,LongInt(OldWindowProc));end;