青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Welcome to ErranLi's Blog!

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  106 Posts :: 1 Stories :: 97 Comments :: 0 Trackbacks

常用鏈接

留言簿(12)

搜索

  •  

積分與排名

  • 積分 - 178336
  • 排名 - 152

最新評論

閱讀排行榜

 
http://www.shnenglu.com/erran/archive/2012/05/19/175360.html

 C#消息處理函數引用 
  /// <summary> 
/// <para> 版 權 : Copyright (c) 20010-2011 </para>
/// <para> 項 目 : xxxxx/RD/xxxx </para> 
/// <para> 文件名稱 : </para>
/// <para> 創 建 人 : lizhi </para>
/// <para> 創建日期 : 2010-11-22 </para>
/// <remarks> 備 注 : 
///     ddgooo@sina.com
/// </remarks>
/// </summary>
///
 
     public class Win32Message
    {
        
/// <summary>
        
/// 消息
        
/// </summary>
        public const int WM_COPYDATA = 0x004A;

        
/// <summary>
        
/// WM_COPYDATA消息結構體
        
/// </summary>
        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
        
public struct COPYDATASTRUCT
        {
            
/// <summary>
            
/// 用戶定義數據
            
/// </summary>
            public IntPtr   dwData;
            
/// <summary>
            
/// 數據大小
            
/// </summary>
            public int      cbData;
            
/// <summary>
            
/// 指向數據的指針
            
/// </summary>            
            public IntPtr lpData;
        }

        
/// <summary>
        
/// 注冊消息用
        
/// 在win7中,如果以管理員方式運行,需要加入該語句,注冊WM_COPYDATA消息,避免過濾掉該消息。
        
/// </summary>
        
/// <param name="msg"></param>
        
/// <param name="flags"></param>
        
/// <returns></returns>
        [DllImport("user32")]
        
public static extern bool ChangeWindowMessageFilter(int msg, int flags);
        

        
/// <summary>
        
/// 發送WM_COPYDATA消息
        
/// </summary>
        
/// <param name="hWnd"></param>
        
/// <param name="msg"></param>
        
/// <param name="wParam"></param>
        
/// <param name="lParam"></param>
        
/// <returns></returns>
        [DllImport("User32.dll", EntryPoint = "SendMessage")]
        
public static extern int SendMessage(int hWnd, int msg, IntPtr wParam, IntPtr lParam);
        
/// <summary>
        
/// 發送WM_COPYDATA消息
        
/// </summary>
        
/// <param name="hWnd"></param>
        
/// <param name="msg"></param>
        
/// <param name="wParam"></param>
        
/// <param name="lParam"></param>
        
/// <returns></returns>
        [DllImport("user32")]
        
public static extern bool PostMessage(int hWnd, int msg, IntPtr wParam, IntPtr lParam); 
                        
        
/// <summary>
        
/// 查找句柄
        
/// </summary>
        
/// <param name="lpClassName"></param>
        
/// <param name="lpWindowName"></param>
        
/// <returns></returns>
        [DllImport("User32.dll", EntryPoint = "FindWindow")]
        
public static extern IntPtr FindWindow(string lpClassName,string lpWindowName);

        
/// <summary>
        
/// 查找句柄
        
/// </summary>
        
/// <param name="hwndParent"></param>
        
/// <param name="hwndChildAfter"></param>
        
/// <param name="lpszClass"></param>
        
/// <param name="lpszWindow"></param>
        
/// <returns></returns>
        [DllImport("user32.dll", EntryPoint = "FindWindowEx")]
        
public static extern IntPtr FindWindowEx(IntPtr hwndParent,IntPtr hwndChildAfter, string lpszClass, string lpszWindow);

    }
C# 消息解析函數

/// <summary> 
/// <para> 版 權 : Copyright (c) 20010-2011 </para>
/// <para> 項 目 : xxxxx/RD/xxxx </para> 
/// <para> 文件名稱 : </para>
/// <para> 創 建 人 : lizhi </para>
/// <para> 創建日期 : 2010-11-22 </para>
/// <remarks> 備 注 : 
///     ddgooo@sina.com
/// </remarks>
/// </summary>
///
 
    /// <summary>
    
/// 腳本測試類
    
/// </summary> 
    public class TestingMessage
    {   
        
/// <summary>
        
/// 消息 開始
        
/// </summary>
        public const int WM_USER_START = 0x04DD;
        
/// <summary>
        
/// 消息 繼續
        
/// </summary>
        public const int WM_USER_CONTINUE = 0x05F8;
        
/// <summary>
        
/// 消息 停止
        
/// </summary>
        public const int WM_USER_ABORT = 0x06F9;

        
/// <summary>
        
/// 最后的消息數據
        
/// </summary>
        public string testingScript = null;

        
/// <summary>
        
/// 初始化
        
/// </summary>
        public bool tetsingEnable = false;

        
/// <summary>
        
/// 初始化
        
/// </summary>
        
/// <returns></returns>
        public bool Initiate()
        {    
            Win32Message.ChangeWindowMessageFilter(Win32Message.WM_COPYDATA, 
1);

            tetsingEnable 
= true;

            
return true;
        }

        
/// <summary>
        
/// 解析消息
        
/// </summary>
        
/// <param name="msg"></param>
        
/// <returns></returns>
        public bool DoMessage(ref System.Windows.Forms.Message msg)
        {
            
bool tested = false;

            
switch (msg.Msg)
            {
                
case Win32Message.WM_COPYDATA :
                    DoMsgCopyData(
ref msg);
                    tested 
= true;
                    
break;

                
case WM_USER_START :
                    DoMsgStart(
ref msg);
                    tested 
= true;
                    
break;

                
case WM_USER_CONTINUE :
                    DoMsgContinue(
ref msg);
                    tested 
= true;
                    
break;

                
case WM_USER_ABORT :
                    DoMsgAbort(
ref msg);
                    tested 
= true;
                    
break;

                
default :
                    
break;
            }

            
return tested;
        }
        
        
/// <summary>
        
/// 處理拷貝數據
        
/// </summary>
        
/// <param name="msg"></param>
        
/// <returns></returns>
        public bool DoMsgCopyData(ref System.Windows.Forms.Message msg)
        {
            
bool tested = false;

            
if (tetsingEnable)
            {
                
try
                {
                    Win32Message.COPYDATASTRUCT mystr 
= new Win32Message.COPYDATASTRUCT();
                    Type mytype 
= mystr.GetType();
                    mystr 
= (Win32Message.COPYDATASTRUCT)msg.GetLParam(mytype);
                    Byte[] scriptbytes 
= new Byte[mystr.cbData];
                    Marshal.Copy(mystr.lpData, scriptbytes, 
0, mystr.cbData);
                    System.Text.Encoding utf8 
= System.Text.Encoding.UTF8;
                    testingScript 
= utf8.GetString(scriptbytes);

                    System.Windows.Forms.MessageBox.Show(testingScript);

                    tested 
= true;
                }
                
catch
                {
                    tested 
= false;
                }
            }

            
return tested;
        }


        
/// <summary>
        
/// 開始
        
/// </summary>
        
/// <param name="msg"></param>
        
/// <returns></returns>
        public bool DoMsgStart(ref System.Windows.Forms.Message msg)
        {
            
bool tested = false;

            
if (tetsingEnable)
            {
                
try
                {
                    
if (testingScript != null)
                    {
                        tested 
= XXXX.Parser.TestingParser.Instance.TestRunning(testingScript);

                        System.Windows.Forms.MessageBox.Show(
"SERVER DoMsgStart");
                    }
                }
                
catch
                {
                    tested 
= false;
                }
            }

            
return tested;
        }

        
        
/// <summary>
        
/// 繼續
        
/// </summary>
        
/// <param name="msg"></param>
        
/// <returns></returns>
        public bool DoMsgContinue(ref System.Windows.Forms.Message msg)
        {
            
bool tested = false;

            
if (tetsingEnable)
            {
                
try
                {
                    
if (testingScript != null)
                    {
                        tested 
=  XXXX .Parser.TestingParser.Instance.TestContinue();

                        System.Windows.Forms.MessageBox.Show(
"SERVER DoMsgContinue");
                    }
                }
                
catch
                {
                    tested 
= false;
                }
            }

            
return tested;
        }


        
/// <summary>
        
/// 繼續
        
/// </summary>
        
/// <param name="msg"></param>
        
/// <returns></returns>
        public bool DoMsgAbort(ref System.Windows.Forms.Message msg)
        {
            
bool tested = false;

            
if (tetsingEnable)
            {
                
try
                {
                    
if (testingScript != null)
                    {
                        tested 
=  XXXX .Parser.TestingParser.Instance.TestAbort();
                        testingScript 
= null;

                        System.Windows.Forms.MessageBox.Show(
"SERVER DoMsgAbort");
                    }
                }
                
catch
                {
                    tested 
= false;
                }
            }

            
return tested;
        }

    }
C# 窗體
/// <summary> 
/// <para> 版 權 : Copyright (c) 20010-2011 </para>
/// <para> 項 目 : xxxxx/RD/xxxx </para> 
/// <para> 文件名稱 : </para>
/// <para> 創 建 人 : lizhi </para>
/// <para> 創建日期 : 2010-11-22 </para>
/// <remarks> 備 注 : 
///     ddgooo@sina.com
/// </remarks>
/// </summary>
///
 
   public partial class FormMain : Form
    {

        
/// <summary>
        
/// 消息解析
        
/// </summary>
        private TestingMessage testingMessage = null;

        
/// <summary>
        
/// 構造
        
/// </summary>
        public FormMain()
        {
            testingMessage 
= new TestingMessage();

            InitializeComponent();
        }

        
/// <summary>
        
/// 加載
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e"></param>
        private void FormMain_Load(object sender, EventArgs e)
        {
            testingMessage.Initiate();
        }

        
/// <summary>
        
/// 關閉
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e"></param>
        private void FormMain_FormClosed(object sender, FormClosedEventArgs e)
        {
            System.Windows.Forms.Message msg 
= new Message();
            testingMessage.DoMsgAbort(
ref msg);
            testingMessage 
= null;
        }

        
/// <summary>
        
/// 消息處理函數
        
/// </summary>
        
/// <param name="m"></param>
        protected override void DefWndProc(ref System.Windows.Forms.Message msg)
        {
            
if (!testingMessage.DoMessage(ref msg))
            {
                
base.DefWndProc(ref msg);
            }
        }

    }

MFC DLL 消息發送端

CTestingMessage::CTestingMessage(
void)
{
    initializeSuccessed 
= false;

    processAppHandle 
= NULL;

    processAppName 
= _T("\\\\XXXX\\XXXX.XXXXX.XXXX.exe");
    processWindowName 
= _T("XXXXXXXX");    
}

CTestingMessage::
~CTestingMessage(void)
{
}


CTestingMessage
* CTestingMessage::Instance()
{
    
static CTestingMessage* ins = NULL;
    
if (ins == NULL)
    {
        ins 
= new CTestingMessage();
    }
    
return ins;
}

bool CTestingMessage::InitTesting(void)
{
    
bool bFlag = false;

    processMutex.Lock();

    
try
    {
        ::ChangeWindowMessageFilter(WM_COPYDATA, 
1);
        
/*
        TCHAR exepath[MAX_PATH];
        memset(exepath, 0, MAX_PATH);
        GetModuleFileName(NULL, exepath, MAX_PATH);    

        CString strdir = exepath;
        strdir = strdir.Left(strdir.ReverseFind('\\'));
        
        CString szAppName = strdir;
        szAppName += processAppName;

        MessageBox(NULL, szAppName, _T(""), 0);

        PROCESS_INFORMATION pi;    
                    
        bFlag = ::CreateProcess(szAppName, 
            NULL, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, NULL, &pi);

        if (bFlag)
        {
            processAppHandle = pi.hProcess;
        } 
*/
        bFlag 
= true;
    }
    
catch(CException* e)
    {
        bFlag 
= false;    
        processAppHandle 
= NULL;
    }
    
    initializeSuccessed 
= bFlag;

    processMutex.Unlock();

    
return bFlag;
}


bool CTestingMessage::ExitTesting(void)
{
    
bool bFlag = false;

    processMutex.Lock();

    initializeSuccessed 
= false;

    
if (processAppHandle != NULL)
    {
        ::TerminateProcess(processAppHandle, 
0);
         CloseHandle(processAppHandle);
        processAppHandle 
= NULL;        
    }

    bFlag 
= true;    

    processMutex.Unlock();

    
return bFlag;
}


bool CTestingMessage::StartTesting(LPCSTR pScript)
{
    
bool bFlag = false;

    processMutex.Lock();    

    
if (initializeSuccessed)
    {
        HWND hWnd 
= ::FindWindow(NULL, processWindowName);
        
if (hWnd != NULL)
        {
            
// 發送數據
            COPYDATASTRUCT cd;
            cd.cbData 
= strlen(pScript);
            cd.dwData 
= WM_COPYDATA;
            cd.lpData 
= (void*)pScript;
            ::SendMessage(hWnd, WM_COPYDATA, 
0, (LPARAM)(&cd));

            
// 發送命令
            ::SendMessage(hWnd, WM_USER_START, 00);
            
            bFlag 
= true;
        }
    }

    processMutex.Unlock();

    
return bFlag;
}

bool CTestingMessage::AbortTesting()
{
    
bool bFlag = false;

    processMutex.Lock();
    
    
if (initializeSuccessed)
    {
        HWND hWnd 
= ::FindWindow(NULL, processWindowName);
        
if (hWnd != NULL)
        {            
            ::SendMessage(hWnd, WM_USER_ABORT, 
00);
            
            bFlag 
= true;
        }
    }

    processMutex.Unlock();

    
return bFlag;    
}

void CTestingMessage::ContinueTesting()
{
    
bool bFlag = false;

    processMutex.Lock();

    
if (initializeSuccessed)
    {
        HWND hWnd 
= ::FindWindow(NULL, processWindowName);
        
if (hWnd != NULL)
        {            
            ::SendMessage(hWnd, WM_USER_CONTINUE, 
00);
            
            bFlag 
= true;
        }
    }

    processMutex.Unlock();
}


posted on 2012-05-19 09:27 erran 閱讀(903) 評論(0)  編輯 收藏 引用 所屬分類: dotNet
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            在线观看国产日韩| 亚洲最新视频在线| 一本色道久久99精品综合| 国产视频欧美| 日韩亚洲在线| 亚洲免费观看| 麻豆免费精品视频| 久久久久久久一区二区三区| 欧美日韩中文字幕在线视频| 欧美成人午夜77777| 国产亚洲精品aa午夜观看| 一本色道久久88综合日韩精品| 亚洲国产欧美一区二区三区久久| 久久成人免费日本黄色| 欧美一区二区三区播放老司机| 欧美日韩国产系列| 亚洲免费电影在线观看| 亚洲美女黄网| 欧美激情91| 亚洲日本va在线观看| 亚洲精选视频在线| 欧美超级免费视 在线| 男女视频一区二区| 亚洲国产精品一区| 免费黄网站欧美| 欧美激情视频网站| 亚洲精品午夜精品| 欧美日韩国产三区| 一区二区三区国产精华| 亚洲一区欧美二区| 国产美女一区二区| 久久久久国产精品一区二区| 蜜臀久久久99精品久久久久久 | 欧美一区二区在线免费观看| 国产精品久久久久三级| 亚洲主播在线观看| 久久久久免费视频| 亚洲国产片色| 欧美日韩国产丝袜另类| 亚洲一区二区毛片| 久久精品视频亚洲| 亚洲国产精品99久久久久久久久| 久久夜色精品国产噜噜av| 亚洲福利在线观看| 中文亚洲欧美| 国产一区二区三区日韩欧美| 久久一区二区三区av| 亚洲国产你懂的| 亚洲欧美视频在线观看视频| 国产在线观看91精品一区| 蜜桃久久av一区| 亚洲图片欧美一区| 美腿丝袜亚洲色图| 夜夜嗨av一区二区三区四区| 国产精品永久免费视频| 美女任你摸久久| 一区二区三区欧美在线| 久久亚洲欧美| 亚洲四色影视在线观看| 韩日精品在线| 欧美日韩国内| 久久成人国产| 99国产精品国产精品久久| 欧美影院成年免费版| 亚洲伦理在线免费看| 国产三区精品| 欧美色网一区二区| 久久综合九色99| 亚洲在线第一页| 亚洲国产视频直播| 久久亚洲电影| 亚洲女优在线| 99精品欧美一区二区蜜桃免费| 国产欧美精品一区| 欧美网站在线观看| 蜜臀久久99精品久久久画质超高清| 亚洲视频免费在线观看| 欧美大片免费| 久久综合色88| 欧美中文字幕第一页| 在线亚洲精品| 亚洲裸体俱乐部裸体舞表演av| 国产专区一区| 国产欧美日韩另类一区| 欧美视频日韩视频| 欧美国产精品va在线观看| 久久九九国产精品怡红院| 亚洲女同同性videoxma| 99在线热播精品免费| 91久久久久久久久| 欧美成年网站| 美女精品国产| 久久亚洲精选| 久久久久一区二区三区| 久久国产天堂福利天堂| 亚洲永久免费观看| 国产精品99久久久久久人| 亚洲欧洲一区| 亚洲精品乱码久久久久久蜜桃91| 精品动漫一区| 在线精品亚洲一区二区| 很黄很黄激情成人| 国产综合色在线视频区| 国产综合香蕉五月婷在线| 国产亚洲成av人在线观看导航| 国产精品网站在线| 国产欧美在线看| 国产日韩欧美在线播放| 国产午夜亚洲精品羞羞网站 | 欧美揉bbbbb揉bbbbb| 欧美麻豆久久久久久中文| 欧美精品尤物在线| 欧美日韩日本视频| 欧美日韩一区在线| 国产精品久久久久一区二区三区| 欧美三级韩国三级日本三斤| 欧美午夜在线| 国产午夜精品一区理论片飘花 | 欧美日韩亚洲一区二区| 欧美日韩亚洲免费| 国产精品你懂的在线欣赏| 国产伦精品一区二区三区免费迷| 国产伦精品一区二区三区高清| 国产视频综合在线| 伊人一区二区三区久久精品| 亚洲国产精品va在线观看黑人 | 亚洲电影免费在线| 亚洲欧洲精品一区| 亚洲网站在线播放| 久久精品人人做人人爽电影蜜月| 另类天堂视频在线观看| 亚洲人体1000| 亚洲欧美日韩精品久久亚洲区| 久久精品天堂| 欧美激情网站在线观看| 国产精品日韩精品| 亚洲电影激情视频网站| 一区二区精品在线| 久久国产日韩欧美| 欧美电影在线免费观看网站| 一本到高清视频免费精品| 亚洲欧美视频在线观看| 欧美大片免费久久精品三p | 亚洲日本aⅴ片在线观看香蕉| 中文在线资源观看视频网站免费不卡| 欧美一级黄色录像| 欧美成人精品在线| 国产农村妇女毛片精品久久莱园子| 精品动漫3d一区二区三区免费版| 一二美女精品欧洲| 久久精品在线播放| 亚洲开发第一视频在线播放| 欧美一级播放| 欧美日韩精品免费观看视频完整 | 国产精品久久久久久久久久直播| 激情欧美国产欧美| 中文在线资源观看网站视频免费不卡 | 欧美黄色网络| 国产偷国产偷精品高清尤物| 亚洲精品午夜| 久久天堂精品| 亚洲视频专区在线| 欧美激情va永久在线播放| 国产一区二区三区在线观看免费 | 欧美一区久久| 国产精品久久久久高潮| 亚洲看片免费| 免费欧美在线视频| 性欧美xxxx大乳国产app| 欧美日韩国产色视频| 亚洲第一网站| 久久免费视频网| 亚洲中无吗在线| 欧美亚洲成人精品| 99国产精品99久久久久久| 免费亚洲一区| 欧美诱惑福利视频| 国产老肥熟一区二区三区| 一区二区三区免费观看| 欧美国产高潮xxxx1819| 欧美在线999| 国产啪精品视频| 欧美一区二区成人6969| 中文亚洲字幕| 欧美日韩在线观看一区二区三区| 亚洲美女色禁图| 亚洲福利在线视频| 免费欧美电影| 亚洲国产日日夜夜| 欧美国产精品久久| 麻豆国产精品777777在线| 亚洲大片一区二区三区| 快射av在线播放一区| 久久精品视频一| 亚洲大片在线观看| 欧美激情免费观看| 欧美国产日韩二区| 艳女tv在线观看国产一区| 99精品视频免费观看| 国产精品jizz在线观看美国 |