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; }
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; }
//导出线程 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); }
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); } }