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

Welcome to ErranLi's Blog!

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

常用鏈接

留言簿(12)

搜索

  •  

積分與排名

  • 積分 - 178126
  • 排名 - 152

最新評論

閱讀排行榜

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

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

        
/// <summary>
        
/// WM_COPYDATA消息結(jié)構(gòu)體
        
/// </summary>
        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
        
public struct COPYDATASTRUCT
        {
            
/// <summary>
            
/// 用戶定義數(shù)據(jù)
            
/// </summary>
            public IntPtr   dwData;
            
/// <summary>
            
/// 數(shù)據(jù)大小
            
/// </summary>
            public int      cbData;
            
/// <summary>
            
/// 指向數(shù)據(jù)的指針
            
/// </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>
        
/// 發(fā)送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>
        
/// 發(fā)送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# 消息解析函數(shù)

/// <summary> 
/// <para> 版 權(quán) : Copyright (c) 20010-2011 </para>
/// <para> 項 目 : xxxxx/RD/xxxx </para> 
/// <para> 文件名稱 : </para>
/// <para> 創(chuàng) 建 人 : lizhi </para>
/// <para> 創(chuàng)建日期 : 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>
        
/// 消息 繼續(xù)
        
/// </summary>
        public const int WM_USER_CONTINUE = 0x05F8;
        
/// <summary>
        
/// 消息 停止
        
/// </summary>
        public const int WM_USER_ABORT = 0x06F9;

        
/// <summary>
        
/// 最后的消息數(shù)據(jù)
        
/// </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>
        
/// 處理拷貝數(shù)據(jù)
        
/// </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>
        
/// 繼續(xù)
        
/// </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>
        
/// 繼續(xù)
        
/// </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> 版 權(quán) : Copyright (c) 20010-2011 </para>
/// <para> 項 目 : xxxxx/RD/xxxx </para> 
/// <para> 文件名稱 : </para>
/// <para> 創(chuàng) 建 人 : lizhi </para>
/// <para> 創(chuàng)建日期 : 2010-11-22 </para>
/// <remarks> 備 注 : 
///     ddgooo@sina.com
/// </remarks>
/// </summary>
///
 
   public partial class FormMain : Form
    {

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

        
/// <summary>
        
/// 構(gòu)造
        
/// </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>
        
/// 關(guān)閉
        
/// </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>
        
/// 消息處理函數(shù)
        
/// </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 消息發(fā)送端

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)
        {
            
// 發(fā)送數(shù)據(jù)
            COPYDATASTRUCT cd;
            cd.cbData 
= strlen(pScript);
            cd.dwData 
= WM_COPYDATA;
            cd.lpData 
= (void*)pScript;
            ::SendMessage(hWnd, WM_COPYDATA, 
0, (LPARAM)(&cd));

            
// 發(fā)送命令
            ::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 閱讀(902) 評論(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>
            亚洲日本理论电影| 久久婷婷亚洲| 久久国产欧美精品| 欧美一级久久| 欧美小视频在线| 一区二区国产日产| 久久视频在线免费观看| 午夜精品一区二区三区在线播放 | 久久久国产91| 久久久久久久综合狠狠综合| 国产日韩av一区二区| 亚洲一区中文字幕在线观看| 亚洲综合丁香| 国产精品久久久久久久久免费| 在线一区二区三区四区| 午夜精品久久久久久久白皮肤| 国产精品免费在线| 久久精品午夜| 亚洲国产成人av在线| 999亚洲国产精| 国产精品乱子久久久久| 欧美一区亚洲一区| 亚洲国产成人av好男人在线观看| 日韩一二三区视频| 国产精品乱人伦中文| 欧美综合77777色婷婷| 模特精品裸拍一区| 99在线热播精品免费| 欧美亚州一区二区三区| 午夜精品久久久久久久99樱桃 | 久久久久久久综合| 亚洲观看高清完整版在线观看| 欧美精品粉嫩高潮一区二区| 99国产精品视频免费观看一公开| 午夜久久99| 在线观看视频亚洲| 欧美日韩在线观看一区二区三区 | 久久这里有精品视频| 亚洲国产精品成人久久综合一区| 亚洲图中文字幕| 狠狠久久婷婷| 欧美日韩国产综合久久| 亚洲欧美不卡| 亚洲第一在线视频| 亚洲欧美日韩久久精品 | 欧美黄网免费在线观看| 亚洲综合日韩在线| 亚洲福利视频三区| 欧美一区二区三区视频免费| 91久久精品国产91久久性色tv | 欧美日韩国产美女| 欧美一区二区三区视频在线| 亚洲国产欧美在线人成| 欧美一级午夜免费电影| 亚洲日本免费| 国色天香一区二区| 欧美日韩亚洲视频| 你懂的网址国产 欧美| 亚洲欧美国产精品专区久久| 亚洲国产精品久久久久秋霞影院| 午夜视频在线观看一区二区| 亚洲激情第一页| 国产一区二区高清不卡| 欧美日韩卡一卡二| 蜜臀91精品一区二区三区| 亚洲精品日韩在线观看| 久久精品日产第一区二区三区| 午夜久久tv| 久久亚洲综合色一区二区三区| 亚洲人成网站777色婷婷| 久久夜色精品国产亚洲aⅴ| av成人免费在线| 欧美金8天国| 亚洲午夜精品久久久久久app| 日韩一区二区福利| 国产精品无码专区在线观看| 欧美激情在线狂野欧美精品| 亚洲欧美日韩综合| 国产老女人精品毛片久久| 亚洲一区www| 亚洲午夜在线观看视频在线| 国产欧美日韩综合一区在线播放| 欧美专区第一页| 久久久久九九视频| 好吊色欧美一区二区三区四区| 久久大逼视频| 久久精品在线观看| 亚洲免费不卡| 亚洲一区二区在线免费观看视频| 国产欧美一区二区三区沐欲| 久久综合九色欧美综合狠狠| 一区二区欧美在线| 欧美激情在线播放| 一区二区三区国产精品| 亚洲美女淫视频| 国产精品入口福利| 久久综合九色九九| 欧美日韩精品不卡| 久久综合色综合88| 欧美视频精品在线| 蜜臀久久久99精品久久久久久| 欧美国产第二页| 久久天天躁夜夜躁狠狠躁2022| 欧美高清影院| 欧美一区二区在线看| 久久综合伊人77777麻豆| 亚洲少妇最新在线视频| 久久久精彩视频| 亚洲一区二区三区四区中文| 久久精品国产精品亚洲精品| 一区二区三区精品视频| 久久精品人人做人人综合| 亚洲夜间福利| 欧美高清在线| 欧美成人免费网| 国产在线不卡精品| 一区二区三区欧美在线| 亚洲激情影院| 久久久久久久999精品视频| 久久频这里精品99香蕉| 久久精品国产在热久久 | 亚洲美女视频在线观看| 国产在线播放一区二区三区| 亚洲私人影吧| 亚洲午夜未删减在线观看| 久久综合九色九九| 久久亚洲国产成人| 国产欧美日韩在线播放| 一区二区三区日韩精品| 一区二区三区视频观看| 免费成人黄色av| 模特精品在线| 亚洲第一福利社区| 久久久www成人免费精品| 欧美一区二区三区精品电影| 国产精品成人aaaaa网站| 亚洲靠逼com| 一区二区三区你懂的| 欧美精品v国产精品v日韩精品| 欧美成人午夜视频| 亚洲人成在线播放网站岛国| 麻豆精品精华液| 亚洲国产1区| 亚洲美女在线国产| 欧美日韩国产页| 一二三区精品福利视频| 亚洲一区国产一区| 国产伦精品一区二区三区照片91 | 欧美黄色免费| 亚洲日本va午夜在线影院| aa国产精品| 国产精品色在线| 久久福利精品| 欧美激情在线免费观看| 亚洲午夜电影| 国产一区二区久久久| 久久久免费av| 亚洲国产导航| 亚洲男人av电影| 极品少妇一区二区| 欧美久久久久免费| 亚洲一区二区三区视频播放| 久久精品国产久精国产一老狼| 国产亚洲电影| 免费成人小视频| 亚洲一区不卡| 欧美激情视频在线免费观看 欧美视频免费一| 亚洲国产精品久久久久秋霞蜜臀| 欧美国产精品劲爆| 欧美一区二区三区男人的天堂| 欧美成人网在线| 亚洲欧美日韩一区二区三区在线| 激情久久五月| 国产精品v欧美精品∨日韩| 久久精品在线| 亚洲永久网站| 日韩午夜在线播放| 蜜臀久久99精品久久久久久9| 日韩视频在线你懂得| 国产日韩欧美电影在线观看| 欧美激情va永久在线播放| 欧美一区二区久久久| 亚洲精品无人区| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美va天堂在线| 久久免费视频网| 91久久国产综合久久蜜月精品| 欧美日韩国产系列| 久久在线91| 欧美一区二区女人| 亚洲视频在线观看网站| 亚洲国产日韩在线| 老色鬼精品视频在线观看播放| 亚洲主播在线观看| 日韩亚洲欧美精品| 亚洲欧洲日本mm| 在线不卡亚洲| 激情综合在线| 在线观看一区欧美| 黄色成人在线网址|