• 大小: 0.10M
    文件类型: .7z
    金币: 1
    下载: 0 次
    发布日期: 2024-04-29
  • 语言: C#
  • 标签: C#  

资源简介

用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()

评论

共有 条评论