資源簡介
用C#實現類似Microsoft Spy 的小程序
代碼片段和文件信息
using?System.Drawing;
using?System.Threading;
using?System.Windows.Forms;
public?class?GrabScreen_XDICT?:?XDICTGRB.IXDictGrabSink
{
????int?tick;
????public?GrabScreen_XDICT(int?tick?=?200)?{?this.tick?=?tick;?}
????string?tmpStr;
????int?XDICTGRB.IXDictGrabSink.QueryWord(string?WordString?int?lCursorX?int?lCursorY?string?SentenceString?ref?int?lLoc?ref?int?lStart)
????{
????????if?(GrabNewString?!=?null?&&?tmpStr?!=?SentenceString)
????????{
????????????tmpStr?=?SentenceString;
????????????GrabNewString(tmpStr);
????????}
????????return?1;
????}
????public?delegate?void?GrabNewStringDelegate(string?str);
????public?event?GrabNewStringDelegate?GrabNewString;
????XDICTGRB.GrabProxy?gp;
????volatile?bool?grabing;
????public?void?StartGrabWord(Point?point)
????{
????????if?(gp?==?null)
????????{
????????????gp?=?new?XDICTGRB.GrabProxy();
????????????gp.GrabEnabled?=?false;
????????????gp.AdviseGrab(this);
????????}
????????else?if?(grabing)
????????{
????????????StopGrabWord();
????????????Thread.Sleep(tick?+?100);
????????????Application.DoEvents();
????????}
????????Thread?thread?=?new?Thread(new?ParameterizedThreadStart(GrabThread));
????????thread.IsBackground?=?true;
????????grabing?=?true;
????????thread.Start(point);
????}
????public?void?StopGrabWord()?{?grabing?=?false;?}
????private?void?GrabThread(object?point)
????{
????????var?p?=?(Point)point;
????????while?(grabing?&&?!Application.OpenForms[0].Disposing)
????????{
????????????try?{?gp.GrabWord(p.X?p.Y);?}
????????????catch?{?}
????????????Thread.Sleep(tick);
????????}
????}
}
/*
//if?(grab?==?null)
//{
//????grab?=?new?GrabScreen_NHW();
//????grab.GrabNewString?+=?new?GrabScreen_NHW.GrabNewStringDelegate(grab_GrabNewString);
//????btnGrab.Text?=?“Stop&Grab“;
//????grab.StartGrabWord(handle?(Point)btnGetHdl.Tag);
//}
//else
//{
//????grab.StopGrabWord();
//????grab.GrabNewString?-=?new?GrabScreen_NHW.GrabNewStringDelegate(grab_GrabNewString);
//????grab?=?null;
//????btnGrab.Text?=?“&GrabWord“;
//}
?*/
/*
public?class?GrabScreen_NHW
{
????private?enum?SetFlag?:?uint
????{
????????GETWORD_ENABLE?=?1000
????????GETWORD_DISABLE?=?1002
????}
????[DllImport(“Nhw32.dll“)]
????private?static?extern?uint?BL_SetFlag32(SetFlag?nFlag?IntPtr?hWnd?int?pX?int?pY);
????[DllImport(“Nhw32.dll“)]
????private?static?extern?uint?BL_GetText32(StringBuilder?strBuf?int?bufSize?ref?Rectangle?rect);
????[DllImport(“Nhw32.dll“)]
????private?static?extern?bool?SetNHW32();
????[DllImport(“Nhw32.dll“)]
????private?static?extern?bool?ResetNHW32();
????int?tick;
????volatile?bool?grabing;
????public?GrabScreen_NHW(int?tick?=?100)?{?this.tick?=?tick;?}
????public?delegate?void?GrabNewStringDelegate(string?str);
????public?event?GrabNewStringDelegate?GrabNewString;
????IntPtr?handle;
????Point?point;
????public?bool?StartGrabWord(IntPtr?hWnd?Point?point)
????{
????????if?(grabing)?StopGrabWord()
- 上一篇:HEXtoASCII碼之間的相互轉換
- 下一篇:C# usb hid 設備控制
評論
共有 條評論