GetTibiaProcess() public static method

public static GetTibiaProcess ( ) : Process
return System.Diagnostics.Process
        public static void ShowSuspendedWindow(bool alwaysShow = false)
        {
            lock (suspendedLock) {
                if (window != null)
                {
                    window.Close();
                    window = null;
                }
                Screen  screen;
                Process tibia_process = ProcessManager.GetTibiaProcess();
                if (tibia_process == null)
                {
                    screen = Screen.FromControl(MainForm.mainForm);
                }
                else
                {
                    screen = Screen.FromHandle(tibia_process.MainWindowHandle);
                }
                window = new AutoHotkeySuspendedMode(alwaysShow);
                int position_x = 0, position_y = 0;

                int suspendedX = SettingsManager.getSettingInt("SuspendedNotificationXOffset");
                int suspendedY = SettingsManager.getSettingInt("SuspendedNotificationYOffset");

                int xOffset = suspendedX < 0 ? 10 : suspendedX;
                int yOffset = suspendedY < 0 ? 10 : suspendedY;
                int anchor  = SettingsManager.getSettingInt("SuspendedNotificationAnchor");
                switch (anchor)
                {
                case 3:
                    position_x = screen.WorkingArea.Right - xOffset - window.Width;
                    position_y = screen.WorkingArea.Bottom - yOffset - window.Height;
                    break;

                case 2:
                    position_x = screen.WorkingArea.Left + xOffset;
                    position_y = screen.WorkingArea.Bottom - yOffset - window.Height;
                    break;

                case 0:
                    position_x = screen.WorkingArea.Left + xOffset;
                    position_y = screen.WorkingArea.Top + yOffset;
                    break;

                default:
                    position_x = screen.WorkingArea.Right - xOffset - window.Width;
                    position_y = screen.WorkingArea.Top + yOffset;
                    break;
                }

                window.StartPosition = FormStartPosition.Manual;
                window.SetDesktopLocation(position_x, position_y);
                window.TopMost = true;
                window.Show();
            }
        }
Beispiel #2
0
        public static void ScanTabStructures(Player player)
        {
            Process p = ProcessManager.GetTibiaProcess();

            if (p == null)
            {
                return;
            }
            List <TabStructure> newStructures = TabStructureScanner.FindTabStructures(p, player);

            Interlocked.Exchange(ref tabStructures, newStructures);
        }
Beispiel #3
0
        public static Screen GetScreen()
        {
            Process tibia_process = ProcessManager.GetTibiaProcess();

            if (tibia_process == null || SettingsManager.getSettingInt("MonitorAnchor") == 1)
            {
                return(Screen.FromControl(MainForm.mainForm));
            }
            else
            {
                return(Screen.FromHandle(tibia_process.MainWindowHandle));
            }
        }
 private static void writeToAutoHotkeyFile()
 {
     if (!SettingsManager.settingExists("AutoHotkeySettings"))
     {
         return;
     }
     using (StreamWriter writer = new StreamWriter(Constants.AutohotkeyFile)) {
         writer.WriteLine("#SingleInstance force");
         if (ProcessManager.IsFlashClient())
         {
             Process p = ProcessManager.GetTibiaProcess();
             writer.WriteLine("SetTitleMatchMode 2");
             writer.WriteLine(String.Format("#IfWinActive Tibia Flash Client", p == null ? 0 : p.Id));
         }
         else
         {
             writer.WriteLine("#IfWinActive ahk_class TibiaClient");
         }
         foreach (string l in SettingsManager.getSetting("AutoHotkeySettings"))
         {
             string line = l.ToLower();
             if (line.Length == 0 || line[0] == ';')
             {
                 continue;
             }
             if (line.Contains("suspend"))
             {
                 // if the key is set to suspend the hotkey layout, we set it up so it sends a message to us
                 writer.WriteLine(modifyKeyString(line.ToLower().Split(new string[] { "suspend" }, StringSplitOptions.None)[0], l));
                 writer.WriteLine("suspend");
                 writer.WriteLine("if (A_IsSuspended)");
                 // message 32 is suspend
                 writer.WriteLine("PostMessage, 0x317,32,32,,Tibialyzer");
                 writer.WriteLine("else");
                 // message 33 is not suspended
                 writer.WriteLine("PostMessage, 0x317,33,33,,Tibialyzer");
                 writer.WriteLine("return");
             }
             else
             {
                 writer.WriteLine(modifyKeyString(line, l));
             }
         }
     }
 }
Beispiel #5
0
        public static Bitmap takeScreenshot()
        {
            try {
                RECT Rect = new RECT();
                if (ReadMemoryManager.FlashClient)
                {
                    Screen screen = Screen.FromControl(MainForm.mainForm);

                    Rect.left   = screen.Bounds.Left;
                    Rect.right  = screen.Bounds.Right;
                    Rect.top    = screen.Bounds.Top;
                    Rect.bottom = screen.Bounds.Bottom;
                }
                else
                {
                    Process tibia_process = ProcessManager.GetTibiaProcess();
                    if (tibia_process == null)
                    {
                        return(null);                       //no tibia to take screenshot of
                    }
                    if (!GetWindowRect(tibia_process.MainWindowHandle, ref Rect))
                    {
                        return(null);
                    }
                }

                Point p = toPixels(new Point(Rect.left, Rect.top));
                Rect.left   = p.X;
                Rect.top    = p.Y;
                p           = toPixels(new Point(Rect.right, Rect.bottom));
                Rect.right  = p.X;
                Rect.bottom = p.Y;

                Bitmap bitmap = new Bitmap(Rect.right - Rect.left, Rect.bottom - Rect.top);
                using (Graphics gr = Graphics.FromImage(bitmap)) {
                    gr.CopyFromScreen(new Point(Rect.left, Rect.top), Point.Empty, bitmap.Size);
                }
                return(bitmap);
            } catch (Exception ex) {
                MainForm.mainForm.DisplayWarning("Failed to take screenshot: " + ex.Message);
                return(null);
            }
        }
Beispiel #6
0
        public static Bitmap takeScreenshot()
        {
            Process tibia_process = ProcessManager.GetTibiaProcess();

            if (tibia_process == null)
            {
                return(null);                       //no tibia to take screenshot of
            }
            RECT Rect = new RECT();

            if (!GetWindowRect(tibia_process.MainWindowHandle, ref Rect))
            {
                return(null);
            }

            Bitmap bitmap = new Bitmap(Rect.right - Rect.left, Rect.bottom - Rect.top);

            using (Graphics gr = Graphics.FromImage(bitmap)) {
                gr.CopyFromScreen(new Point(Rect.left, Rect.top), Point.Empty, bitmap.Size);
            }
            return(bitmap);
        }
Beispiel #7
0
 private void ShowTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
 {
     if (alwaysShow)
     {
         return;
     }
     if (ProcessManager.IsFlashClient())
     {
         return;
     }
     try {
         if (showTimer == null || this.IsDisposed || this.Disposing)
         {
             return;
         }
         // only show the suspended window when tibia is active
         bool visible = GetActiveProcessFileName() == ProcessManager.GetTibiaProcess().ProcessName;
         this.BeginInvoke((MethodInvoker) delegate {
             this.Visible = visible;
         });
     } catch {
     }
 }
Beispiel #8
0
        public static Bitmap takeScreenshot()
        {
            try {
                Process tibia_process = ProcessManager.GetTibiaProcess();
                if (tibia_process == null)
                {
                    return(null);                       //no tibia to take screenshot of
                }
                RECT Rect = new RECT();
                if (!GetWindowRect(tibia_process.MainWindowHandle, ref Rect))
                {
                    return(null);
                }

                Bitmap bitmap = new Bitmap(Rect.right - Rect.left, Rect.bottom - Rect.top);
                using (Graphics gr = Graphics.FromImage(bitmap)) {
                    gr.CopyFromScreen(new Point(Rect.left, Rect.top), Point.Empty, bitmap.Size);
                }
                return(bitmap);
            } catch (Exception ex) {
                MainForm.mainForm.DisplayWarning("Failed to take screenshot: " + ex.Message);
                return(null);
            }
        }
Beispiel #9
0
        public static void ShowPopupContainer()
        {
            if (popupContainer != null)
            {
                return;
            }

            popupContainer = new PopupContainer();

            // This code is copied from ShowSimpleNotification, todo: move to method
            int     position_x = 0, position_y = 0;
            Screen  screen;
            Process tibia_process = ProcessManager.GetTibiaProcess();

            if (tibia_process == null)
            {
                screen = Screen.FromControl(MainForm.mainForm);
            }
            else
            {
                screen = Screen.FromHandle(tibia_process.MainWindowHandle);
            }
            int simpleX = SettingsManager.getSettingInt("SimpleNotificationXOffset");
            int simpleY = SettingsManager.getSettingInt("SimpleNotificationYOffset");

            int xOffset = simpleX < 0 ? 30 : simpleX;
            int yOffset = simpleY < 0 ? 30 : simpleY;
            int anchor  = SettingsManager.getSettingInt("SimpleNotificationAnchor");
            int sign    = 1;

            position_y = screen.WorkingArea.Bottom - yOffset - popupContainer.Height;
            switch (anchor)
            {
            case 0:
            case 1:
                // Top
                sign       = -1;
                position_y = screen.WorkingArea.Top + yOffset;
                break;

            case 2:
            default:
                // Bottom
                break;
            }
            switch (anchor)
            {
            case 0:
            case 2:
                // Left
                position_x = screen.WorkingArea.Left + xOffset;
                break;

            case 1:
            default:
                // Right
                position_x = screen.WorkingArea.Right - popupContainer.Width - notificationSpacing - xOffset;
                break;
            }
            popupContainer.StartPosition = FormStartPosition.Manual;
            popupContainer.SetDesktopLocation(position_x, position_y);
            popupContainer.UpsideDown = sign > 0;
            popupContainer.Show();
        }
Beispiel #10
0
        public static void ShowSimpleNotification(SimpleNotification f)
        {
            int     position_x = 0, position_y = 0;
            Screen  screen;
            Process tibia_process = ProcessManager.GetTibiaProcess();

            if (tibia_process == null)
            {
                screen = Screen.FromControl(MainForm.mainForm);
            }
            else
            {
                screen = Screen.FromHandle(tibia_process.MainWindowHandle);
            }
            int simpleX = SettingsManager.getSettingInt("SimpleNotificationXOffset");
            int simpleY = SettingsManager.getSettingInt("SimpleNotificationYOffset");

            int xOffset      = simpleX < 0 ? 30 : simpleX;
            int yOffset      = simpleY < 0 ? 30 : simpleY;
            int anchor       = SettingsManager.getSettingInt("SimpleNotificationAnchor");
            int sign         = 1;
            int basePosition = screen.WorkingArea.Bottom - yOffset;
            int startX       = 0;

            switch (anchor)
            {
            case 0:
            case 1:
                // Top
                sign         = -1;
                basePosition = screen.WorkingArea.Top + yOffset;
                break;

            case 2:
            default:
                // Bottom
                break;
            }
            switch (anchor)
            {
            case 0:
            case 2:
                // Left
                position_x = screen.WorkingArea.Left + xOffset;
                startX     = position_x - (f.Width + notificationSpacing);
                break;

            case 1:
            default:
                // Right
                position_x = screen.WorkingArea.Right - f.Width - notificationSpacing - xOffset;
                startX     = position_x + f.Width + notificationSpacing;
                break;
            }

            foreach (SimpleNotification notification in notificationStack)
            {
                basePosition -= sign * (notification.Height + notificationSpacing);
            }
            position_y      = basePosition - sign * f.Height;
            f.StartPosition = FormStartPosition.Manual;
            if (!SettingsManager.getSettingBool("EnableSimpleNotificationAnimation"))
            {
                startX = position_x;
            }

            f.SetDesktopLocation(startX, position_y);
            f.targetPositionX = position_x;
            f.targetPositionY = position_y;
            f.FormClosed     += simpleNotificationClosed;

            notificationStack.Add(f);

            f.TopMost = true;
            f.Show();
        }
Beispiel #11
0
        public static void ShowNotification(NotificationForm f, string command, string screenshot_path = "")
        {
            if (f == null)
            {
                return;
            }

            if (screenshot_path == "")
            {
                TibialyzerCommand cmd = new TibialyzerCommand(command);
                command_stack.Push(cmd);
                f.command = cmd;
            }
            f.Visible = false;
            int richX    = -1;
            int richY    = -1;
            int anchor   = 0;
            int duration = 5;
            int group    = 0;

            for (int it = 0; it < Constants.NotificationTypeObjects.Count; it++)
            {
                if (f.GetType() == Constants.NotificationTypeObjects[it])
                {
                    string settingObject = Constants.NotificationTypes[it].Replace(" ", "");
                    richX    = SettingsManager.getSettingInt(settingObject + "XOffset");
                    richY    = SettingsManager.getSettingInt(settingObject + "YOffset");
                    anchor   = SettingsManager.getSettingInt(settingObject + "Anchor");
                    duration = SettingsManager.getSettingInt(settingObject + "Duration");
                    group    = Math.Min(Math.Max(SettingsManager.getSettingInt(settingObject + "Group"), 0), 9);
                    break;
                }
            }
            f.notificationDuration = duration;
            f.LoadForm();
            if (screenshot_path != "")
            {
                Bitmap bitmap = new Bitmap(f.Width, f.Height);
                f.DrawToBitmap(bitmap, new Rectangle(0, 0, f.Width, f.Height));
                foreach (Control c in f.Controls)
                {
                    c.DrawToBitmap(bitmap, new Rectangle(new Point(Math.Min(Math.Max(c.Location.X, 0), f.Width), Math.Min(Math.Max(c.Location.Y, 0), f.Height)), c.Size));
                }
                bitmap.Save(screenshot_path);
                bitmap.Dispose();
                f.Dispose();
                return;
            }
            if (NotificationFormGroups[group] != null)
            {
                NotificationFormGroups[group].close();
            }
            int     position_x = 0, position_y = 0;
            Screen  screen;
            Process tibia_process = ProcessManager.GetTibiaProcess();

            if (tibia_process == null)
            {
                screen = Screen.FromControl(MainForm.mainForm);
            }
            else
            {
                screen = Screen.FromHandle(tibia_process.MainWindowHandle);
            }

            int xOffset = richX == -1 ? 30 : richX;
            int yOffset = richY == -1 ? 30 : richY;

            switch (anchor)
            {
            case 3:
                position_x = screen.WorkingArea.Right - xOffset - f.Width;
                position_y = screen.WorkingArea.Bottom - yOffset - f.Height;
                break;

            case 2:
                position_x = screen.WorkingArea.Left + xOffset;
                position_y = screen.WorkingArea.Bottom - yOffset - f.Height;
                break;

            case 1:
                position_x = screen.WorkingArea.Right - xOffset - f.Width;
                position_y = screen.WorkingArea.Top + yOffset;
                break;

            default:
                position_x = screen.WorkingArea.Left + xOffset;
                position_y = screen.WorkingArea.Top + yOffset;
                break;
            }

            f.StartPosition = FormStartPosition.Manual;
            f.SetDesktopLocation(position_x, position_y);
            f.TopMost = true;
            f.Show();
            NotificationFormGroups[group] = f;
        }