示例#1
0
        public PublishPdfOptions(IntPtr parentHandle)
        {
            PdfFormat = true;
            PrintAll = true;
            ExcludedMetadata = new List<MetadataType>();

            DisablePrinting = PolicyBridge.IsEnabled("PDFProhibitPrinting");
            DisableModification = PolicyBridge.IsEnabled("PDFProhibitModification");
            DisableCopy = PolicyBridge.IsEnabled("PDFProhibitCopy");
            DisableNotesModification = PolicyBridge.IsEnabled("PDFProhibitComments");

            DisablePrintingAllowOverride = PolicyBridge.AllowOverride("PDFProhibitPrinting");
            DisableModificationAllowOverride = PolicyBridge.AllowOverride("PDFProhibitModification");
            DisableCopyAllowOverride = PolicyBridge.AllowOverride("PDFProhibitCopy");
            DisableNotesModificationAllowOverride = PolicyBridge.AllowOverride("PDFProhibitComments");
            OpenPasswordAllowOverride = OptionApi.AllowUserOverride("PDFPasswordEx");

            OpenPassword = OptionApi.GetEncrypted("PDFPasswordEx", "?|2^&(*$:@!!*");
            ConfirmOpenPassword = OptionApi.GetEncrypted("PDFPasswordEx", "?|2^&(*$:@!!*");

            ParentWindow = new WindowWrapper(parentHandle);
        }
		internal DialogResult ShowDialogExt(FileDialog fdlg,IWin32Window owner)
		{
			DialogResult returnDialogResult = DialogResult.Cancel;
			if (this.IsDisposed)
				return returnDialogResult;
			if (owner == null || owner.Handle == IntPtr.Zero)
			{
				WindowWrapper wr = new WindowWrapper(System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle);
				owner = wr;
			}
			OriginalCtrlSize = this.Size;
			MSDialog = fdlg;
			_dlgWrapper = new WholeDialogWrapper(this);

			try
			{
				System.Reflection.PropertyInfo AutoUpgradeInfo = MSDialog.GetType().GetProperty("AutoUpgradeEnabled");
				if (AutoUpgradeInfo != null)
					AutoUpgradeInfo.SetValue(MSDialog, false, null);
				returnDialogResult = _MSdialog.ShowDialog(owner);
			}
			// Sometimes if you open a animated .gif on the preview and the Form is closed, .Net class throw an exception
			// Lets ignore this exception and keep closing the form.
			catch (ObjectDisposedException)
			{
			}
			catch (Exception ex)
			{
				MessageBox.Show("unable to get the modal dialog handle", ex.Message);
			}
			return returnDialogResult;
		}
        /// <summary>
        /// Returns the window wrapper.
        /// If window wrapper is null it correctly initializes the static member
        /// </summary>
        /// <param name="hMainWnd">Handle to a window</param>
        /// <returns>Window wrapper for the given handle</returns>
        private static WindowWrapper GetWindowWrapper(int hMainWnd)
        {
            if (_winWrap == null)
            {
                IntPtr hwnd = new IntPtr(hMainWnd);
                _winWrap = new WindowWrapper(hwnd);
            }

            return _winWrap;
        }
 public DialogResult ShowDialog(IWin32Window owner)
 {
     DialogResult returnDialogResult = DialogResult.Cancel;
     if (this.IsDisposed)
         return returnDialogResult;
     if (owner == null || owner.Handle == IntPtr.Zero)
     {
         WindowWrapper wr = new WindowWrapper(System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle);
         owner = wr;
     }
     if (FileDlgType == FileDialogType.OpenFileDlg)
     {
         _dlgWrapper = new DialogWrapper<OpenFileDialog>(this);
         ((OpenFileDialog)this.MSDialog).Multiselect = true;
         
     }
     else
     {
         _dlgWrapper = new DialogWrapper<SaveFileDialog>(this);
     }
     OnPrepareMSDialog();
     if (!_hasRunInitMSDialog)
         InitMSDialog();
     try
     {
         returnDialogResult = _MSdialog.ShowDialog(owner);
     }
     catch (ObjectDisposedException)
     {
     }
     catch (Exception ex)
     {
         MessageBox.Show("unable to get the modal dialog handle", ex.Message);
     }
     return returnDialogResult;
 }
 public DialogResult ShowDialog(IWin32Window owner)
 {
   DialogResult returnDialogResult = DialogResult.Cancel;
   if (this.IsDisposed)
     return returnDialogResult;
   if (owner == null || owner.Handle == IntPtr.Zero)
   {
     WindowWrapper wr = new WindowWrapper(System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle);
     owner = wr;
   }
   OriginalCtrlSize = this.Size;
   _MSdialog = (DialogType == FileDialogType.OpenFileDlg) ? new OpenFileDialog() as FileDialog : new SaveFileDialog() as FileDialog;
   _dlgWrapper = new WholeDialogWrapper(this);
   OnPrepareMSDialog();
   if (!_hasRunInitMSDialog)
     InitMSDialog();
   try
   {
     System.Reflection.PropertyInfo AutoUpgradeInfo = MSDialog.GetType().GetProperty("AutoUpgradeEnabled");
     if (AutoUpgradeInfo != null)
       AutoUpgradeInfo.SetValue(MSDialog, false, null);
     returnDialogResult = _MSdialog.ShowDialog(owner);
   }
   // Sometimes if you open a animated .gif on the preview and the Form is closed, .Net class throw an exception
   // Lets ignore this exception and keep closing the form.
   catch (ObjectDisposedException)
   {
   }
   catch (Exception ex)
   {
     Utils.HandleError(ex);
   }
   return returnDialogResult;
 }
示例#6
0
        private WindowWrapper GetWrapper()
        {
            //Get the process Hwnd
            IntPtr hwnd = IntPtr.Zero;
            WindowWrapper wrapper = null;
            Process[] procs = Process.GetProcessesByName("msiexec");

            if (null != procs && procs.Length > 0)
                hwnd = procs[0].MainWindowHandle;

            if (hwnd != IntPtr.Zero)
                wrapper = new WindowWrapper(hwnd);

            //Set the windows forms owner to setup project so it can be focused and
            //set infront
            return wrapper;
        }
示例#7
0
        //导出线程
        private void Export()
        {
            try
            {
                model = GetModel.getMode(dgvs, ttName, tjTime);//获取导出数据的模型

                //删除大于模板的列
                if (model.Columns.Count != 0 && model.Printtable.TableName != "A_InitialData")
                {
                    //判断一个string是否在string[]中
                    List<string> lst = model.Columns;

                    for (int j = 0; j < model.Printtable.Columns.Count; j++)
                    {
                        if (!lst.Contains(model.Printtable.Columns[j].ColumnName.ToString()))
                        {
                            model.Printtable.Columns.Remove(model.Printtable.Columns[j].ColumnName);
                            j--;
                        }

                    }
                }

                object objOpt = Missing.Value;

                try
                {
                    excel = new Microsoft.Office.Interop.Excel.Application();
                }
                catch(Exception ee)
                {
                    if (!ee.Message.Equals("正在中止线程。"))
                    {
                        MessageBox.Show("无法创建Excel对象,可能您的机子未安装Excel");
                    }
                    //string time = System.DateTime.Now.ToShortDateString() + " " + System.DateTime.Now.ToLongTimeString();
                    //myop.addOper(time, "无法创建Excel对象,可能您的机子未安装Excel", "NO");
                    return;
                }

                excel.Visible = false;
                wkb = excel.Workbooks.Add(objOpt);
                _Worksheet wks = (_Worksheet)wkb.ActiveSheet;
                wks.Visible = XlSheetVisibility.xlSheetVisible;

                int rowIndex = 1;
                int colIndex = 1;
                int x = 0;
                int y = 0;
                System.Data.DataTable table = ProcessDataTable(model.Printtable);
               

                #region[标题栏]
                //标题栏
                var RowAll1 = wks.get_Range(wks.Cells[rowIndex, 1], wks.Cells[rowIndex, table.Columns.Count]);
                RowAll1.Merge(0);
                excel.Cells[rowIndex, 1] = model.Printname;
                RowAll1.Font.Size = model.Titlefontsize;
                RowAll1.Font.FontStyle = FontStyle.Bold;
                RowAll1.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
                rowIndex++;
                #endregion

                #region[副标题信息]

                //统计时间
                var RowAll2 = wks.get_Range(wks.Cells[rowIndex, 1], wks.Cells[rowIndex, table.Columns.Count / 2]);
                RowAll2.Merge(0);
                excel.Cells[rowIndex, 1] = "打印时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                RowAll2.Font.Size = model.Subfontsize;
                RowAll2.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignLeft;

                var RowAll3 = wks.get_Range(wks.Cells[rowIndex, table.Columns.Count / 2 + 1], wks.Cells[rowIndex, table.Columns.Count]);
                RowAll3.Merge(0);
                excel.Cells[rowIndex, table.Columns.Count / 2 + 1] = model.Tjtime;
                RowAll3.Font.Size = model.Subfontsize;
                RowAll3.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignRight;
                rowIndex++;
                #endregion

                #region[主体信息]
                x = rowIndex;
                foreach (DataColumn col in table.Columns)
                {

                    excel.Cells[x, colIndex] = dgvs.Columns[col.ColumnName].HeaderText;
                    excel.Columns.NumberFormatLocal = "@";
                    colIndex++;
                }
                //foreach (DataRow row in table.Rows)
                //{
                //    rowIndex++;
                //    colIndex = 0;

                //    foreach (DataColumn col in table.Columns)
                //    {
                //        try
                //        {
                //            colIndex++;
                //            // excel.Cells[rowIndex, colIndex] = "1";
                //            excel.Cells[rowIndex, colIndex] = row[col.ColumnName].ToString();
                //        }
                //        catch (Exception ex)
                //        {

                //        }
                //        //excel.Cells[rowIndex, colIndex] = row[col.ColumnName].ToString();
                //    }
                //}
                int rowCount = table.Rows.Count;

                int colCount = table.Columns.Count;

                object[,] dataArray = new object[rowCount, colCount];

                for (int i = 0; i < rowCount; i++)
                {
                    for (int j = 0; j < colCount; j++)
                    {
                        dataArray[i, j] = table.Rows[i][j].ToString();
                    }

                }
                try
                {
                    wks.get_Range("A4", wks.Cells[rowCount + 3, colCount]).Value2 = dataArray;
                }
                catch(Exception ee)
                {
                    if (!ee.Message.Equals("正在中止线程。"))
                    {
                        MessageBox.Show("Excel2003最多只支持65536行数据导出,请重新选择导出数据", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    try
                    {
                        wkb.Close(false, objOpt, objOpt);
                        excel.Quit();
                        if (this.IsHandleCreated)
                            this.Invoke(new MethodInvoker(delegate()
                            {
                                this.Close();
                            }));
                    }
                    catch { }
                }

                y = rowIndex;
                var RowAll = wks.get_Range("A3", wks.Cells[rowCount + 3, colCount]);
                    //wks.get_Range(wks.Cells[x, 1], wks.Cells[y, table.Columns.Count]);
                RowAll.Borders.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
                RowAll.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
                RowAll.EntireColumn.AutoFit();//列宽自适应
                rowIndex = 4 + rowCount;
                #endregion

                #region[签名栏]
                if (table.Columns.Count >= 4)
                {
                    var RowAll4 = wks.get_Range(wks.Cells[rowIndex, 1], wks.Cells[rowIndex, (table.Columns.Count / 4) > 0 ? (table.Columns.Count / 4) : 1]);
                    RowAll4.Merge(0);
                    excel.Cells[rowIndex, 1] = model.Signcontent.Split(',')[0].ToString();
                    RowAll4.Font.Size = model.Signfontsize;
                    RowAll4.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;

                    var RowAll5 = wks.get_Range(wks.Cells[rowIndex, table.Columns.Count / 4 + 1], wks.Cells[rowIndex, (table.Columns.Count / 2) > 0 ? (table.Columns.Count / 2) : 1]);
                    RowAll5.Merge(0);
                    excel.Cells[rowIndex, table.Columns.Count / 4 + 1] = model.Signcontent.Split(',')[1].ToString();
                    RowAll5.Font.Size = model.Signfontsize;
                    RowAll5.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;

                    var RowAll6 = wks.get_Range(wks.Cells[rowIndex, table.Columns.Count / 2 + 1], wks.Cells[rowIndex, (table.Columns.Count * 3 / 4) > 0 ? (table.Columns.Count * 3 / 4) : 1]);
                    RowAll6.Merge(0);
                    excel.Cells[rowIndex, table.Columns.Count / 2 + 1] = model.Signcontent.Split(',')[2].ToString();
                    RowAll6.Font.Size = model.Signfontsize;
                    RowAll6.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;

                    var RowAll7 = wks.get_Range(wks.Cells[rowIndex, table.Columns.Count * 3 / 4 + 1], wks.Cells[rowIndex, table.Columns.Count]);
                    RowAll7.Merge(0);
                    excel.Cells[rowIndex, table.Columns.Count * 3 / 4 + 1] = model.Signcontent.Split(',')[3].ToString();
                    RowAll7.Font.Size = model.Signfontsize;
                    RowAll7.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
                }
                else
                {
                    var RowAll8 = wks.get_Range(wks.Cells[rowIndex, 1], wks.Cells[rowIndex, table.Columns.Count]);
                    RowAll8.Merge(0);
                    string s = string.Empty;
                    foreach (string str in model.Signcontent.Split(','))
                    {
                        s += str + "  ";
                    }
                    excel.Cells[rowIndex, 1] = s;
                    RowAll8.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
                }
                #endregion

                #region[获得父窗体句柄]
                System.IntPtr IntPart;
                IntPart = GetForegroundWindow();
                WindowWrapper ParentFrm = new WindowWrapper(IntPart);
                #endregion

                #region[导出对话框]
                string excelFileName = string.Empty;
                SaveFileDialog sf = new SaveFileDialog();
                sf.Filter = "*.xls|*.*";
                if (sf.ShowDialog(ParentFrm) == DialogResult.OK)
                {
                    try
                    {
                        excelFileName = sf.FileName;
                        wkb.SaveAs(excelFileName, objOpt, null, null, false, false, XlSaveAsAccessMode.xlNoChange, null, null, null, null, null);
                        wkb.Close(false, objOpt, objOpt);
                        excel.Quit();
                        excel = null;
                        if (this.IsHandleCreated)
                            this.Invoke(new MethodInvoker(delegate()
                            {
                                label1.Text = "导出成功!";
                                label1.Left = (this.Width - label1.Width) / 2;
                                btn_Export.Text = "确定";
                                btn_Export.Click -= new EventHandler(btn_Export_Click);
                                btn_Export.Click += new EventHandler(btn_Export_Exit);
                                pictureBox2.Visible = false;
                                lblExport.Visible = false;
                            }));

                        //MessageBox.Show("导出成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    catch
                    {
                        wkb.Close(false, objOpt, objOpt);
                        excel.Quit();
                        if (this.IsHandleCreated)
                            this.Invoke(new MethodInvoker(delegate()
                            {
                                this.Close();
                            }));
                    }
                }
                else
                {
                    wkb.Close(false, objOpt, objOpt);
                    excel.Quit();
                    if (this.IsHandleCreated)
                        this.Invoke(new MethodInvoker(delegate()
                        {
                            this.Close();
                        }));
                }
                #endregion
            }
            catch (Exception ee)
            {
                if (!ee.Message.ToString().Equals("正在中止线程。"))
                    MessageBox.Show("Excel导出失败[" + ee.Message + "][" + ee.StackTrace + "]");
            }
           
        }
		public DialogResult ShowDialog()
		{
			WindowWrapper wrap = new WindowWrapper(System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle);
			return this.ShowDialog(wrap);
		}
示例#9
0
        protected override void WndProc(ref Message m)
        {
            try
            {
                _exoUI = MessageHelper.FindWindow_INTPTR(null, _windowName);

                if (_exoUI != IntPtr.Zero && m.Msg == EXOMsg.WM_APP + 5)
                {

                    //SET UP VARIABLES
                    EXOxtenderLibrary.VolumeControl _vol;

                    int _hWnd = m.HWnd.ToInt32();
                    int _arg0 = MessageHelper.LoWord(m.WParam.ToInt32());
                    int _arg1 = MessageHelper.HiWord(m.WParam.ToInt32());
                    int _arg2 = MessageHelper.LoWord(m.LParam.ToInt32());
                    int _arg3 = MessageHelper.HiWord(m.LParam.ToInt32());
                    //EXO UI MessageID = 32773;

                    textBox1.Text += string.Format("WM_APP + 5 received: arg0:{0} arg1:{1} arg2:{2} arg3:{3}", _arg0, _arg1, _arg2, _arg3) + Environment.NewLine;

                    switch (_arg0)
                    {
                        case EXOMsg.EX_SHUTDOWN:
                            this.Close();
                            break;

                        case EXOMsg.EX_WIFI_GET:

                            lock (wifiMutex)
                            {
                                try
                                {
                                    bool setMonitoring;

                                    if (_arg1 == 1)
                                        setMonitoring = true;
                                    else if (_arg1 == 2)
                                        setMonitoring = false;
                                    else
                                        setMonitoring = isMonitoringWifi;

                                    setCurrentWlanInterface(setMonitoring);

                                    if (_arg1 == 0 || _arg1 == 1)
                                    {
                                        sendWifiStatus(EXOMsg.EX_WIFI_INFO);
                                    }
                                }
                                catch (Exception e)
                                {
                                    trace("wifi get exception: " + e.Message);
                                    trace(e.StackTrace);
                                }
                            }

                            break;

                        case EXOMsg.EX_WIFI_SET:

                            try
                            {
                                if (_arg1 == 1 || _arg1 == 2)
                                    wifiSet(_arg1);
                            }
                            catch (Exception e)
                            {
                                trace("wifi set exception: " + e.Message);
                                trace(e.StackTrace);
                            }

                            break;

                        case EXOMsg.EX_DISP_GET:

                            lock (brightnessMutex)
                            {
                                getBrightnessLevels();

                                if (_arg1 == 1)
                                    isMonitoringBrightness = true;
                                else if (_arg1 == 2)
                                    isMonitoringBrightness = false;

                                if (_arg1 == 0 || _arg1 == 1)
                                    sendBrightness(EXOMsg.EX_DISP_INFO);
                            }

                            break;

                        case EXOMsg.EX_DISP_SET:

                            lock (brightnessMutex)
                            {
                                if (_arg1 != 0) // 0 means ignore
                                {
                                    getBrightnessLevels();

                                    EXOxtenderLibrary.Brightness _bri0 = new EXOxtenderLibrary.Brightness();

                                    if (_arg1 == 2) // 2 means OFF
                                        _arg2 = 0;  // set it to minimum

                                    if (_arg2 < 0) _arg2 = 0;
                                    if (_arg2 >= brightnessLevels.Length)
                                        _arg2 = brightnessLevels.Length - 1;

                                    _bri0.BrightnessLevel = brightnessLevels[_arg2];
                                    _bri0.setBrightnessLevel();

                                    //int _returnValue0 = Convert.ToInt32(_bri0.getBrightness());

                                    //textBox1.Text += "EX_DISP_SET - New level:" + _arg2.ToString() + "\r\n";
                                    //textBox1.Text += "hWnd:" + m.HWnd.ToString() + " Msg:" + m.Msg.ToString() + " arg0:" + _arg0 + " arg1:" + _arg1 + " arg2:" + _arg2 + " arg3:" + _arg3 + "\r\n";
                                    //textBox1.Text += "ReturnCode:" + _arg2.ToString() + "\r\n";
                                }
                            }
                            break;

                        case EXOMsg.EX_SND_GET:
                            //GET THE VOLUME LEVEL
                            int _volumeLevel = EXOxtenderLibrary.VolumeControl.Instance.GetVolume();

                            EXOxtenderLibrary.VolumeControl.Instance.VolumeChanged -= Instance_VolumeChanged;

                            if (_arg1 == 0)
                            {
                                MessageHelper.PostMessage(_exoUI, EXOMsg.WM_APP + 5, MessageHelper.MakeWParam(EXOMsg.EX_SND_INFO, _volumeLevel), MessageHelper.MakeLParam(EXOxtenderLibrary.VolumeControl.Instance.isMute, 0));
                            }
                            else if (_arg1 == 1)
                            {
                                MessageHelper.PostMessage(_exoUI, EXOMsg.WM_APP + 5, MessageHelper.MakeWParam(EXOMsg.EX_SND_INFO, _volumeLevel), MessageHelper.MakeLParam(EXOxtenderLibrary.VolumeControl.Instance.isMute, 0));
                                EXOxtenderLibrary.VolumeControl.Instance.VolumeChanged += new EXOxtenderLibrary.VolumeControl.VolumeEventHandler(Instance_VolumeChanged);
                            }

                            //textBox1.Text += "UI_VOLUME_GET - Current level:" + _volumeLevel.ToString() + ", Mute:" + MessageHelper.HiWord(m.LParam.ToInt32()).ToString() + "\r\n";
                            //textBox1.Text += "hWnd:" + m.HWnd.ToString() + " Msg:" + m.Msg.ToString() + " arg0:" + _arg0 + " arg1:" + _arg1 + " arg2:" + _arg2 + " arg3:" + _arg3 + "\r\n";

                            break;

                        case EXOMsg.EX_SND_SET:
                            //SET THE VOLUME TO A SPECIFIED VALUE
                            int _newVolumeLevel = _arg1;
                            if (_newVolumeLevel > 0 && _newVolumeLevel < 101)
                            { EXOxtenderLibrary.VolumeControl.Instance.SetVolume(_newVolumeLevel); }

                            if (_arg2 == 1)
                            { EXOxtenderLibrary.VolumeControl.Instance.Mute = true; }
                            else if (_arg2 == 2)
                            { EXOxtenderLibrary.VolumeControl.Instance.Mute = false; }

                            //textBox1.Text += "UI_VOLUME_SET - New level:" + _newVolumeLevel.ToString() + ", Mute:" + MessageHelper.HiWord(m.LParam.ToInt32()).ToString() + "\r\n";
                            //textBox1.Text += "hWnd:" + m.HWnd.ToString() + " Msg:" + m.Msg.ToString() + " arg0:" + _arg0 + " arg1:" + _arg1 + " arg2:" + _arg2 + " arg3:" + _arg3 + "\r\n";
                            //try
                            //{
                            //    MessageHelper.PostMessage(_exoUI, WM_APP + 5, MessageHelper.MakeWParam(147, UI_VOLUME_SET), MessageHelper.MakeLParam(_vol.GetVolume(), _vol.isMute));
                            //}
                            //catch (Exception e)
                            //{ textBox1.Text = e.Message; }
                            break;
                        case EX_OK:
                            // Request Dispose of the timer object.
                            textBox1.Text += string.Format("EX_OK received! Stopping to send EX_READY message...{0}", Environment.NewLine);
                            _stateObj.TimerCanceled = true;
                            break;
                        case EXOMsg.EX_TOUCH_SET:
                            /*
                            using (StreamWriter writer = new StreamWriter(@"\patrice\patrice2.txt", true))
                            {
                                writer.WriteLine("EX_TOUCH_SET");
                            }
                            */
                            textBox1.Text += string.Format("EX_TOUCH_SET received!{0}", Environment.NewLine);
                            if (_arg1 == 1)
                            {
                                //Touch manager enabled in hook mode
                                textBox1.Text += string.Format("Initializing touch manager in hook mode...{0}", Environment.NewLine);

                                int keyboardHandle = MessageHelper.MakeWParam(_arg2, _arg3);
                                IntPtr keyboardIntPtr = new IntPtr(keyboardHandle);

                                //MessageBox.Show("keyboardptr: " + keyboardIntPtr.ToString() + "arg2: " + _arg2 + "arg3: " + _arg3);

                                if (InitializeTouch(_windowName, keyboardIntPtr))
                                {
                                    hookModeEnabled = true;
                                    textBox1.Text += string.Format("Touch manager successfully enabled!{0}", Environment.NewLine);
                                    /*
                                    using (StreamWriter writer = new StreamWriter(@"\patrice\patrice2.txt", true))
                                    {
                                        writer.WriteLine("InitTouch ok");
                                    }
                                    */
                                }
                                else
                                {
                                    textBox1.Text += string.Format("ERROR: Unable to initialize touch manager.{0}", Environment.NewLine);
                                    /*
                                    using (StreamWriter writer = new StreamWriter(@"\patrice\patrice2.txt", true))
                                    {
                                        writer.WriteLine("InitTouch failed");
                                    }
                                    */
                                }
                            }
                            else if (_arg1 == 2)
                            {
                                //Touch manager enabled in transparent layer mode
                                WindowWrapper wrapper = new WindowWrapper(_exoUI);

                                tw = new TransparentWindow();
                                tw.Touchdown += new EventHandler<EXOxtender.WMTouchEventArgs>(tw_Touchdown);
                                tw.Touchup += new EventHandler<EXOxtender.WMTouchEventArgs>(tw_Touchup);
                                tw.TouchMove += new EventHandler<EXOxtender.WMTouchEventArgs>(tw_TouchMove);

                                //tw.Show();
                                tw.Show(wrapper);
                                transparentLayerModeEnabled = true;

                                textBox1.Text += string.Format("Touch manager enabled in transparent layer mode.{0}", Environment.NewLine);
                            }
                            else if (_arg1 == 99)
                            {
                                //Touch manager disabled
                                textBox1.Text += string.Format("Disabling touch manager...{0}", Environment.NewLine);

                                if (hookModeEnabled)
                                {
                                    UninitializeTouch();
                                }

                                if (transparentLayerModeEnabled && tw != null)
                                {
                                    tw.Close();
                                }
                            }
                            break;
                        case EXOMsg.EX_TOUCH_AREA_POS:
                            if (tw != null)
                            {
                                string msg = string.Format("EX_TOUCH_AREA_POS received: X={0}, Y={1}{2}", _arg1, _arg2, Environment.NewLine);
                                textBox1.Text += msg;
                                tw.Location = new Point(_arg1, _arg2);
                            }
                            break;
                        case EXOMsg.EX_TOUCH_AREA_SIZE:
                            if (tw != null)
                            {
                                string msg = string.Format("EX_TOUCH_AREA_SIZE received: X={0}, Y={1}{2}", _arg1, _arg2, Environment.NewLine);
                                textBox1.Text += msg;
                                tw.Size = new Size(_arg1, _arg2);
                            }
                            break;
                        case EXOMsg.EX_GESTURE_ENABLE:
                            {
                                int windowHandle = MessageHelper.MakeWParam(_arg2, _arg3);
                                IntPtr windowIntPtr = new IntPtr(windowHandle);
                                GestureEnable(windowIntPtr);
                            }
                            break;
                        case EXOMsg.EX_TOUCH_ENABLE:
                            {
                                int windowHandle = MessageHelper.MakeWParam(_arg2, _arg3);
                                IntPtr windowIntPtr = new IntPtr(windowHandle);
                                TouchEnable(windowIntPtr);
                            }
                            break;
                        case EXOMsg.EX_TOUCH_IGNORE:
                            {
                                int windowHandle = MessageHelper.MakeWParam(_arg2, _arg3);
                                IntPtr windowIntPtr = new IntPtr(windowHandle);
                                TouchIgnore(windowIntPtr);
                            }
                            break;

                        case EXOMsg.EX_UDP_GET:
                            {
                                if (_arg1 == 1)
                                {
                                    if (!isListeningToUDP)
                                    {
                                        isListeningToUDP = true;
                                        udpJob = new ThreadStart(udpThreadProc);
                                        udpThread = new Thread(udpJob);
                                        udpThread.Start();
                                    }
                                }
                                else if (_arg1 == 2)
                                {
                                    if (isListeningToUDP)
                                    {
                                        isListeningToUDP = false;
                                        if (udpClient != null)
                                            udpClient.Close();
                                        udpThread.Abort();
                                    }
                                }
                            }
                            break;

                        case EXOMsg.EX_UDP_SEND:
                            {
                                try
                                {
                                    XmlTextReader reader = new XmlTextReader(_tempPath + "udp_send.xml");
                                    String ip = null;
                                    while (reader.Read())
                                    {
                                        if (reader.NodeType ==  XmlNodeType.Element && reader.Name == "message")
                                        {
                                             while (reader.MoveToNextAttribute())
                                             {
                                                 if (reader.Name == "ip")
                                                 {
                                                     ip = reader.Value;
                                                 }
                                             }
                                        }
                                        else if (reader.NodeType == XmlNodeType.Text && ip != null)
                                        {
                                            byte[] message = Encoding.ASCII.GetBytes(reader.Value);
                                            IPAddress ipAddress = IPAddress.Parse(ip);
                                            UdpClient socket = new UdpClient();
                                            socket.Connect(ipAddress, UDP_PORT);
                                            socket.Send(message, message.Length);
                                            socket.Close();
                                        }
                                    }
                                }
                                catch (IOException e)
                                {
                                    // ignore errors while sending UDP, anyway UDP is not reliable
                                }
                            }
                            break;
                        case EXOMsg.EX_HARDWARE_REPORT_GET:
                            hardwareReportGet();
                            break;
                        case EXOMsg.EX_TRANSP_LAYER_OPEN_XY:
                            transparentLayerX = _arg1;
                            transparentLayerY = _arg2;
                            break;
                        case EXOMsg.EX_TRANSP_LAYER_OPEN_WH:
                            exTranspLayerOpen(transparentLayerX, transparentLayerY, _arg1, _arg2);
                            break;
                        case EXOMsg.EX_DRAG_FEEDBACK:
                            exDragFeedback(_arg1);
                            break;
                        case EXOMsg.EX_TRANSP_LAYER_CLOSE:
                            exTranspLayerClose();
                            break;
                    }
                }
                base.WndProc(ref m);
            }
            catch (Exception e)
            {
                trace("EXOxtender WndProc Exception: " + e.Message);
                trace(e.StackTrace);
            }
        }