Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Builder Двойственный симплекс метод (ЗЛП) https://www.cyberforum.ru/ cpp-builder/ thread204257.html
Этот вопрос поднимался во многих темах, но стоящих ответов так и не было получено. Необходим код программной реализации двойственного симплекс метода на C++ Builder (задачи линейного...
Ошибка при описании функции C++ Builder
Добрый вечер) Я только только начал изучать этот прекрасный язык Си++...поэтому не судите строго за мой вопрос) Не могу понять ,почему компилятор выдает ошибку (С++ Builder 6.0) см.фото... ...
C++ Builder Вывод данных в Word
Господа программисты, посоветуйте пожалуйста литературу, подробно-описывающую вывод информации из программы в Word
C++ Builder точность float после преобразования такая проблема, есть переменная типа char,как элемент структуры G, например a= 0024216761.701 после преобразования float получается 2421676E+07, а нужно чтобы была такая же Ansistring ps1; for... https://www.cyberforum.ru/ cpp-builder/ thread204111.html
C++ Builder Сортировка массива структур https://www.cyberforum.ru/ cpp-builder/ thread204095.html
Доброе время суток. Есть такая проблема: Существует массив структур zap zapis, cама структура struct zap { float x,y; String s; }; заполненная она...
TreeView и RichEdit C++ Builder
Доброго времени суток. Имеются два компонента treeview и richedit, нужно сделать чтобы при выборе элемента в treeview его текст отображался в richedit. Не знаю как подобное реализовать
Модифицировать Метода Рунге-Кутта для диф. уравнения 2-ого порядка. C++ Builder
Всем Привет! Имеется код модуля программы (сама программа компилится на C++ Builder), решающей дифференциальные уравнения 1-ого порядка вида y'=dy/dx=F(x,y), помогите мне его модифицировать его так...
C++ Builder Список процессов Как можно в программе отображающей список процессов указать еще и каким пользователем он запущен? https://www.cyberforum.ru/ cpp-builder/ thread203992.html
C++ Builder IdHTTP1 запросы https://www.cyberforum.ru/ cpp-builder/ thread203886.html
Помогите при нажатии на кнопку послать запрос на 80й порт локальной машины) Делаю: void __fastcall TForm1::Button1Click(TObject *Sender) { IdHTTP1->Get('http://127.0.0.1:80'); }
C++ Builder Файловый ввод С++ в С++ Builder Здравствуйте! Подскажите, как объявить объект ifstream в С++ Builder! Делал так: #include<fstream> ifstream in; , но при этом выдаются ошибки: Unit1.cpp(14): E2141 Declaration... https://www.cyberforum.ru/ cpp-builder/ thread203864.html
517 / 305 / 58
Регистрация: 30.07.2008
Сообщений: 607
06.12.2010, 16:17  [ТС] 0

Скрин чужого окна по его HANDLE

06.12.2010, 16:17. Просмотров 2122. Ответов 3
Метки (Все метки)

Ответ

Спасибо, просто я беру HWND одной Flash в браузере
и ищу картинку на этом скрине, потом кликаю мышкой
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
//---------------------------------------------------------------------------
void MouseLeftClick(HANDLE h, int x, int y)
{
    if(IsWindow(h))
    {
        Application->ProcessMessages();
        Sleep(100);
        Application->ProcessMessages();
        SendMessage(h, WM_LBUTTONDOWN, NULL, MAKELPARAM(x, y));
        SendMessage(h, WM_LBUTTONUP,   NULL, MAKELPARAM(x, y));
        Application->ProcessMessages();
        Sleep(250);
        Application->ProcessMessages();
        SendMessage(h, WM_LBUTTONDOWN, NULL, MAKELPARAM(x, y));
        SendMessage(h, WM_LBUTTONUP,   NULL, MAKELPARAM(x, y));
        Application->ProcessMessages();
        Sleep(100);
        Application->ProcessMessages();
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    if(Timer1->Enabled == false)
    {
        //Timer1->Interval = ((CSpinEdit1->Text.ToInt() * 1000) * 60) + 10000;
        timex = CSpinEdit1->Text.ToInt() * 1000 * 60 / 1000;
        Timer1->Enabled = true;
        Button1->Caption = "Stop";
        Button2->Enabled = false;
        CheckBox1->Checked = false;
        CheckBox1->Enabled = false;
        UnregisterHotKey(Application->Handle, 100);
        Edit1->Enabled = false;
        CSpinEdit1->Enabled = false;
        progress = true;
    }
    else
    {
        Timer1->Enabled = false;
        Button1->Caption = "Start";
        Button2->Enabled = true;
        Edit1->Enabled = true;
        CSpinEdit1->Enabled = true;
        CheckBox1->Enabled = true;
    }
}
//---------------------------------------------------------------------------
void WJ_FindImage(TImage *small, TColor small_transparent, TImage *big, TStrings *out_position)
{
    //int deltaTime = GetTickCount();
    bool good = true;
    for(int y = 0; y < big->Height - small->Height; y++) // двигаемся по Y
    {
        for(int x = 0; x < big->Width - small->Width; x++) // двигаемся по X
        {
            good = true;
            for(int miniy = 0; miniy < small->Height; miniy++)
            {
                for(int minix = 0; minix < small->Width; minix++)
                {
                    if(big->Canvas->Pixels[x + minix][y + miniy] == small->Canvas->Pixels[minix][miniy])
                     /*   || small->Canvas->Pixels[minix][miniy] == small_transparent)   */
                    {
                        good = true;
                    }
                    else
                    {
                        good = false;
                        minix = small->Width;
                        miniy = small->Height;
                    }
                }
            }
            if(good)
            {
                out_position->Add(AnsiString(x) + ";" + AnsiString(y));
                x = x + small->Width; // зачем лишнее проверять
            }
        }
    }
    /*
    out_position->Add("========");
    out_position->Add(IntToStr(big->Height * big->Width) + " px");
    out_position->Add(IntToStr(GetTickCount() - deltaTime) + " Msec");
    */
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
    AnsiString h = Edit1->Text;
    HWND hWnd = (HWND)(StrToInt("0x" + h));
    if(hWnd)
    {
        TRect Rect;
        GetWindowRect(hWnd,&Rect);
        HDC DC = GetWindowDC(hWnd);
        if(DC)
        {
            Graphics::TBitmap *BMP = new Graphics::TBitmap();
            BMP->Width = Rect.Width();
            BMP->Height = Rect.Height();
            BitBlt(BMP->Canvas->Handle, 0, 0, Rect.Width(), Rect.Height(), DC, 0, 0, SRCCOPY);
            Image1->Picture->Bitmap->Assign(BMP);
            ReleaseDC(hWnd,DC);
            delete BMP;
            BMP = NULL;
        }
    }
 
    // предварительно загруженные картинки
    Image2->Width = Image2->Picture->Width;
    Image2->Height = Image2->Picture->Height;
 
    Image3->Width = Image3->Picture->Width;
    Image3->Height = Image3->Picture->Height;
 
    Image4->Width = Image4->Picture->Width;
    Image4->Height = Image4->Picture->Height;
 
    TStringList *list = new TStringList;
    WJ_FindImage(Image2, TColor(0), Image1, list); // ищу, и получаю позиции
    WJ_FindImage(Image3, TColor(0), Image1, list);
    WJ_FindImage(Image4, TColor(0), Image1, list);
 
    AnsiString tmp;
    int x;
    int y;
 
    if(list->Count > 0)
    {
        for(int i = 0; i < list->Count; i++)
        {
            tmp = list->Strings[i];
            if(tmp.Length() > 2)
            {
                x = tmp.SubString(1, tmp.Pos(";") - 1).ToInt();
                y = tmp.SubString(tmp.Pos(";") + 1, tmp.Length()).ToInt();
                MouseLeftClickX((HWND)(StrToInt("0x" + Form1->Edit1->Text)), x, y);
            }
        }
        //ShowMessage(list->Text);
    }
 
    delete list;
    list = NULL;
}
//---------------------------------------------------------------------------


Вернуться к обсуждению:
Скрин чужого окна по его HANDLE
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.12.2010, 16:17
Готовые ответы и решения:

Найти хендл чужого окна, зная его атом
как можно найти хендл чужого окна по атому??

Скрин чужого окна по его дексриптору
Здравствуйте! как можно сделать скрин чужого окна, если известен его дескриптор //... HWND h1;...

Handle чужого окна
Всем привет. Проблема в следующем: Есть окно посторонней программы, на ней расположено 2 поля для...

Захват дескриптора (handle) чужого окна
Можно ли из моей программы управлять окном которое создано другим приложением (закрывать,...

3
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.