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

Welcome to ErranLi's Blog!

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

常用鏈接

留言簿(12)

搜索

  •  

積分與排名

  • 積分 - 178126
  • 排名 - 152

最新評論

閱讀排行榜

 
http://m.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 閱讀(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>
            亚洲精品乱码久久久久久黑人 | 欧美精选在线| 国产精品自在线| 亚洲制服av| 在线一区二区日韩| 欧美国产一区二区在线观看 | 欧美成人午夜激情视频| 久久国产精品色婷婷| 国产女人18毛片水18精品| 亚洲图片在区色| 9色国产精品| 国产精品va在线| 午夜精品久久久久久久蜜桃app | 亚洲国产成人精品久久| 久久久久88色偷偷免费| 狠狠色丁香婷婷综合影院| 久久久精品日韩| 久久久久久久一区二区三区| 久久综合久久久| 久久久噜噜噜久久中文字免| 免费日韩视频| 在线欧美小视频| 久久免费国产| 欧美在线精品免播放器视频| 国产精品午夜av在线| 午夜精品福利在线| 午夜精品国产更新| 狠狠色2019综合网| 欧美大片在线观看一区| 欧美夫妇交换俱乐部在线观看| 亚洲精品中文字| 一区二区三区欧美在线观看| 国产精品激情偷乱一区二区∴| 欧美一级淫片播放口| 久久gogo国模裸体人体| 亚洲精品国产欧美| 亚洲一区在线看| 在线欧美日韩| 99热在这里有精品免费| 国产精品影视天天线| 欧美v日韩v国产v| 欧美日韩国产一区| 久久精品二区三区| 欧美国产三级| 欧美在线视频免费观看| 老司机精品导航| 亚洲综合第一页| 久久久福利视频| 宅男精品视频| 久久天天躁夜夜躁狠狠躁2022 | 美女脱光内衣内裤视频久久网站| 亚洲精品欧美日韩| 亚洲女性喷水在线观看一区| 亚洲精品护士| 久久成年人视频| 亚洲一区在线观看免费观看电影高清| 欧美一区二区三区视频| av不卡免费看| 蜜桃av一区二区在线观看| 亚洲综合色自拍一区| 蜜桃av综合| 久久天天躁狠狠躁夜夜av| 国产精品二区在线观看| 亚洲国产欧美在线人成| 国产主播一区| 在线一区日本视频| 亚洲精品中文字幕女同| 久久久亚洲午夜电影| 欧美一级大片在线免费观看| 欧美日韩成人综合| 欧美激情黄色片| 一区精品久久| 欧美一区二区三区四区在线观看地址| 亚洲一区二区黄色| 欧美日本视频在线| 亚洲精品国产拍免费91在线| 亚洲国产99| 久久综合中文| 欧美一区免费视频| 亚洲在线观看免费| 国内成人自拍视频| 午夜视频在线观看一区| 亚洲欧美文学| 国产精品久久久一区二区三区| 亚洲精品色婷婷福利天堂| 1024亚洲| 免费亚洲电影在线| 欧美www在线| 亚洲国产精品久久久久秋霞不卡| 久久国产精品久久国产精品| 久久久久久国产精品mv| 国产麻豆精品久久一二三| 亚洲无限av看| 欧美一区二区三区免费观看| 国产乱子伦一区二区三区国色天香| 一本久久综合亚洲鲁鲁五月天| 一区二区三区四区在线| 欧美肉体xxxx裸体137大胆| 99re热精品| 亚洲一区一卡| 国产欧美高清| 久久久久久亚洲精品中文字幕| 美女国产一区| 亚洲毛片av| 国产精品国产三级国产| 亚洲欧美一区二区三区在线| 久久久久99| 亚洲精品国产精品国自产在线| 欧美二区在线| 正在播放欧美一区| 欧美在线影院| 亚洲日本视频| 国产精品久久久久久久久借妻| 亚洲欧美日韩国产另类专区| 久久人人爽人人爽爽久久| 亚洲国产欧美日韩精品| 欧美色网在线| 篠田优中文在线播放第一区| 欧美成人精品1314www| 一区二区三区高清| 国产毛片一区二区| 裸体女人亚洲精品一区| 亚洲精选在线| 久久亚洲欧美| 一区二区三区国产精品| 国产伪娘ts一区| 欧美激情影音先锋| 午夜精品在线观看| 麻豆久久久9性大片| 欧美福利电影网| 亚洲精品一二区| 欧美成人在线免费观看| 亚洲另类视频| 久久在线播放| 亚洲视频网在线直播| 国产综合香蕉五月婷在线| 欧美国产另类| 久久精品国产欧美亚洲人人爽| 亚洲精品久久久久久久久久久久久 | 亚洲视频免费在线| 久久伊人一区二区| 亚洲图片欧美日产| 亚洲国产婷婷| 国产亚洲日本欧美韩国| 欧美日韩国产成人在线91| 久久久av水蜜桃| 久久精品电影| 国产精品v一区二区三区| 久久精品二区| 亚洲一区二区三区乱码aⅴ| 欧美激情视频在线播放| 久久精品国产一区二区三| 亚洲一区二区三区四区五区午夜| 在线播放中文一区| 国产永久精品大片wwwapp| 欧美日韩亚洲综合| 欧美不卡在线| 美女露胸一区二区三区| 久久av资源网| 性欧美大战久久久久久久久| 亚洲美女中文字幕| 亚洲欧洲日韩在线| 亚洲国产精品一区二区三区 | 久久久91精品国产一区二区三区 | 欧美视频一区二区三区…| 欧美顶级少妇做爰| 欧美成人dvd在线视频| 久久理论片午夜琪琪电影网| 欧美一站二站| 久久国产欧美日韩精品| 欧美一区二区三区视频免费| 亚洲欧美在线免费观看| 亚洲欧美视频在线观看| 午夜电影亚洲| 欧美在线观看视频| 久久国产成人| 久久久免费观看视频| 欧美一区二区三区四区视频 | 日韩亚洲视频在线| 日韩视频在线免费| 亚洲最黄网站| 亚洲夜晚福利在线观看| 亚洲女女女同性video| 午夜精品美女自拍福到在线| 亚洲女同在线| 久久成人久久爱| 国产精品v一区二区三区 | 久久精品一区二区国产| 亚洲一区二区三区视频| 在线观看欧美精品| 国产亚洲va综合人人澡精品| 亚洲国产一区二区三区青草影视| 欧美精品一区在线| 欧美日本中文字幕| 欧美性大战久久久久| 国产女同一区二区| 精品成人一区| 日韩亚洲欧美高清| 午夜免费在线观看精品视频| 久久久久久久一区二区三区|