Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
7 / 7 / 5
Регистрация: 14.07.2014
Сообщений: 554
1

Вывод текста в окно стороннего приложения

08.04.2015, 15:55. Показов 1965. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите есть игра и в ней нужно по координатам вывести текст или что нибудь нарисовать. Какими способами это можно сделать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.04.2015, 15:55
Ответы с готовыми решениями:

Клик в свернутое окно стороннего приложения
Вообщем, мне нужно сделать клик в форму которая свернутая. Например Skype. Он у меня свернутый а...

Отправка нажатий клавиш в окно стороннего приложения
Есть код на C++, в нём реализован поиск нужного окна по известному классу, эмуляция нажатий клавиш...

Как проверить открыто ли окно стороннего приложения?
Я не знаю как написать программу, которая бы проверяла (т.е. if окно в фокусе then), помогите, мне...

Получение текста из стороннего приложения
Всем доброго времени суток. Стоит такая задача: необходимо из внешнего приложения (например,...

13
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
08.04.2015, 16:08 2
Юзайте класс Graphics, например нарисовать строку drawString
0
7 / 7 / 5
Регистрация: 14.07.2014
Сообщений: 554
08.04.2015, 16:29  [ТС] 3
Я так понимаю если юзать его то все то что рисуется будет и на экране винды когда свернуть игру.
0
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
08.04.2015, 16:33 4
Bo0m21, нет конечно.
0
7 / 7 / 5
Регистрация: 14.07.2014
Сообщений: 554
08.04.2015, 16:44  [ТС] 5
А можно пример как использовать эту функцию в стороннем окне
0
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
08.04.2015, 16:46 6
В каком стороннем окне? У вас игра отдельно чтоли? не часть вашей программы?
0
7 / 7 / 5
Регистрация: 14.07.2014
Сообщений: 554
08.04.2015, 16:50  [ТС] 7
Ну естественно нет. Нужно вывести надпись в игре в стороннем окне игра не моя. И моя программа вообще не игра
0
93 / 94 / 51
Регистрация: 19.06.2013
Сообщений: 323
08.04.2015, 16:57 8
Bo0m21, тогда я Вас разочарую. Это процесс не легкий, так как нужно работать с видеопамятью, а каждая игра по своему работает с ней. Плюс ко всему, для этого .net не заточен. Если все же хотите учиться этому, нужен C++ и знание Windows API
0
7 / 7 / 5
Регистрация: 14.07.2014
Сообщений: 554
08.04.2015, 18:28  [ТС] 9
А можно хотя бы где нибудь отрыть пример хоть кружка в другом окне а дальше я сам уже буду копать ибо я смотрел и никак понять не могу куда копать и как нарисовать в другом окне круг
0
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
08.04.2015, 18:47 10
Bo0m21, вам же сказали, рисовать прямо в игре тот еще геморой. Начать копать можно в сторону WinApi, и скорее всего каждый случай надо будет разбирать индивидуально.
А вот поверх, ну не знаю. Можно конечно копать в сторону прозрачной формы, которая будет всегда поверх игры...
Код для прозрачной формы такой:
C#
1
2
3
4
this.FormBorderStyle = FormBorderStyle.None;
            this.AllowTransparency = true;
            this.BackColor = Color.AliceBlue;//цвет фона  
            this.TransparencyKey = this.BackColor;//он же будет заменен на прозрачный цвет
Но тут проблема в том, что форма будет перекрывать игру,т.е. часть игровые кнопки под формой не сработают.
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
08.04.2015, 19:05 11
Можно попробовать извратиться с BitBlt, это позволит запихать любое изображение напрямую в окно игры, вот только при каждом обновлении изображения в игре все будет возвращаться на свои места. Запустив BitBlt в цикле можно сделать это незаметным.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Imaging;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Runtime.InteropServices;
 
namespace WindowsFormsApplication11
{
    public partial class Form1 : Form
    {
 
        [DllImport("user32.dll", EntryPoint = "ReleaseDC")]
        public static extern IntPtr ReleaseDC(IntPtr hWnd, IntPtr hDC);
        [DllImport("gdi32.dll")]
        private static extern int BitBlt(
          IntPtr hdcDest, // handle to destination DC
          int nXDest,  // x-coord of destination upper-left corner
          int nYDest,  // y-coord of destination upper-left corner
          int nWidth,  // width of destination rectangle
          int nHeight, // height of destination rectangle
          IntPtr hdcSrc,  // handle to source DC
          int nXSrc,   // x-coordinate of source upper-left corner
          int nYSrc,   // y-coordinate of source upper-left corner
          UInt32 dwRop    // raster operation code
        );
        [DllImport("user32.dll")]
        public static extern IntPtr GetDesktopWindow();
        [DllImport("user32.dll")]
        public static extern IntPtr GetWindowDC(IntPtr hWnd);
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
 
                IntPtr hWnd = GetDesktopWindow();
                Bitmap innerbitmap = new Bitmap(100, 100);
                Graphics loGraphics = Graphics.FromImage(innerbitmap);
                IntPtr lnDst = loGraphics.GetHdc();
                IntPtr hDC = GetWindowDC(hWnd);
                while (true)
                {
                BitBlt(hDC, 100, 100, 100, 100, lnDst, 0, 0, 13369376);
                }
        }
    }
Клик на кнопку приведет к появлению на экране черного пятна 100 на 100(было создано пустое изображение и налеплено на главное окно рабочего стола) по координатам x=100 и y=100. тут и тут тоже есть кое-какая инфа по этой функции.
0
7 / 7 / 5
Регистрация: 14.07.2014
Сообщений: 554
08.04.2015, 19:58  [ТС] 12
Ну мне посоветовали копать C# directX hook в ту сторону но примеры есть но я никак разобрать их не могу
0
0 / 0 / 1
Регистрация: 09.04.2015
Сообщений: 3
09.04.2015, 01:46 13
Ну на сколько я знаю на примере игры Lineage2 делается инжект либы своей в которой уже вызываются методы рисования.
0
7 / 7 / 5
Регистрация: 14.07.2014
Сообщений: 554
10.04.2015, 14:58  [ТС] 14
Посмотрел я код но странно у меня ничего нет и да как он будет выллядеть если запускать по координатам в сторорннем приложении
0
10.04.2015, 14:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.04.2015, 14:58
Помогаю со студенческими работами здесь

Как программно эмулировать Drag&drop файла на окно стороннего приложения
ну собственно вопрос в названии к окну никакого отношения не имею и оно не на net, просто найдено...

Поместить окно стороннего приложения на форму
WPF проект. VS 2008. С# Требуется программно (по нажатию кнопки) запустить внешнее приложение...

Записать строку в окно стороннего приложения
Здравствуйте, столкнулся с подобной задачей. Необходимо найти программу, чтоб сделать её активной....

Найти окно стороннего приложения по заголовку
using System; using System.Collections.Generic; using System.Linq; using System.Text; using...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru