| | |
| | | using System.Drawing; |
| | | using System.IO; |
| | | using System.Linq; |
| | | using System.Runtime.InteropServices; |
| | | using System.Text; |
| | | using System.Windows.Forms; |
| | | using TerraExplorerX; |
| | |
| | | |
| | | string mainUrl = Application.StartupPath; |
| | | |
| | | System.Timers.Timer timer; |
| | | |
| | | public FrmWin() |
| | | { |
| | | InitializeComponent(); |
| | | //this.KeyPreview = true; |
| | | this.Load += FrmWeb_Load; |
| | | //this.KeyDown += FrmWin_KeyDown; |
| | | this.FormClosed += FrmWin_FormClosed; |
| | | |
| | | timer = new System.Timers.Timer(1500); |
| | | timer.Elapsed += timer_Elapsed; |
| | | } |
| | | |
| | | void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) |
| | | { |
| | | MoveWinPosition("MeshLayerTool", 583, 304); |
| | | } |
| | | |
| | | void FrmWin_KeyDown(object sender, KeyEventArgs e) |
| | | { |
| | | if (e.Modifiers == Keys.Control && e.KeyCode == Keys.F1) |
| | | { |
| | | MoveWinPosition("MeshLayerTool", 400, 400); |
| | | } |
| | | } |
| | | |
| | | void FrmWeb_Load(object sender, EventArgs e) |
| | |
| | | SG.Command.Execute(1014, 26); break; |
| | | case 0xc6: // 模型数据(*.osgb) |
| | | ExecCmd(new List<string> { "taskkill /f /t /im MeshLayerTool.exe" }); // SG.Command.Execute(2342, null); |
| | | RunExe(Path.Combine(ConfigurationManager.AppSettings["tePath"], "MeshLayerTool.exe"), " -RunConvertor -Mode ImportMeshLayer -Type osgb", false); // -RunApp TerraExplorer |
| | | //RunExe(Path.Combine(ConfigurationManager.AppSettings["tePath"], "MeshLayerTool.exe"), " -RunConvertor -Mode ImportMeshLayer -Type osgb", false); // -RunApp TerraExplorer |
| | | RunExe(Path.Combine(ConfigurationManager.AppSettings["tePath"], "MeshLayerTool.exe"), " -RunApp TerraExplorer -RunConvertor -Mode ImportMeshLayer -Type osgb", false); // -RunApp TerraExplorer |
| | | timer.Stop(); |
| | | timer.Start(); |
| | | break; |
| | | case 0xc7: // 模型数据(*.obj) |
| | | SG.Command.Execute(1012, 13); break; |
| | |
| | | } |
| | | } |
| | | |
| | | #region user32.dll |
| | | public const int SWP_NOSIZE = 0x0001; |
| | | |
| | | public const int SWP_NOMOVE = 0x0002; |
| | | |
| | | public const int SWP_NOZORDER = 0x0004; |
| | | |
| | | public const int SWP_SHOWWINDOW = 0x0040; |
| | | |
| | | public const int HWND_TOPMOST = -1; |
| | | |
| | | public const int HWND_NOTOPMOST = -2; |
| | | |
| | | [DllImport("user32.dll", SetLastError = true)] |
| | | [return: MarshalAs(UnmanagedType.Bool)] |
| | | static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags); |
| | | |
| | | [DllImport("user32.dll", SetLastError = true)] |
| | | static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect); |
| | | |
| | | [Serializable] |
| | | [StructLayout(LayoutKind.Sequential)] |
| | | public struct RECT |
| | | { |
| | | public int Left; |
| | | public int Top; |
| | | public int Right; |
| | | public int Bottom; |
| | | } |
| | | |
| | | public void MoveWinPosition(String name, int left, int right) |
| | | { |
| | | Process[] processes = Process.GetProcessesByName(name); |
| | | if (processes.Length > 0) |
| | | { |
| | | Process process = processes[0]; |
| | | IntPtr hWnd = process.MainWindowHandle; |
| | | |
| | | // 获取窗体的坐标 |
| | | RECT rect; |
| | | GetWindowRect(hWnd, out rect); |
| | | |
| | | if (rect.Left < 0 || rect.Left > 1920 || rect.Top < 0 || rect.Top > 1080) |
| | | { |
| | | timer.Stop(); |
| | | // 移动窗口到屏幕上的位置: |
| | | SetWindowPos(hWnd, IntPtr.Zero, left, right, 0, 0, SWP_NOSIZE | SWP_SHOWWINDOW); |
| | | } |
| | | } |
| | | } |
| | | |
| | | public static void Main() |
| | | { |
| | | // 获取指定窗体的句柄 |
| | | //IntPtr hWnd = // 获取窗体句柄的方法,例如FindWindow或者通过进程名获取 |
| | | // 获取窗体的坐标 |
| | | //RECT rect; |
| | | //GetWindowRect(hWnd, out rect); |
| | | //Console.WriteLine("窗体坐标: 左上角({0}, {1}), 右下角({2}, {3})", rect.Left, rect.Top, rect.Right, rect.Bottom); |
| | | } |
| | | #endregion |
| | | |
| | | public void ShowHtmlByid(int id, int arg) |
| | | { |
| | | switch (id) |