Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
kuzmenko5
0 / 0 / 0
Регистрация: 16.09.2010
Сообщений: 33
#1

как сделать программно чтобы программа была постоянно на заднем плане - C++

16.09.2010, 01:46. Просмотров 1038. Ответов 4
Метки нет (Все метки)

Суть вопроса
как сделать программно чтобы программа была постоянно на заднем плане?
Пишу экранную клавиатуру, как делать имитацию нажатия кнопок я разобрался, но загвоздка в том что при нажатии на кнопку программа выходит на передний план! и нажатая кнопка посылается в мою клавиатуру, а не в в то окно что нужно)
Если ляпнул какую-то глупость извиняюсь и прошу помочь))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.09.2010, 01:46     как сделать программно чтобы программа была постоянно на заднем плане
Посмотрите здесь:

Как сделать так, чтобы программа не компилилась, хотя синтаксически была бы правильной? - C++
Друзья! Дело в следующем, вот у меня есть функции X и Y. И вот мне не хотелось бы вызывать X прежде, чем будет вызвана Y. Но это всё в...

Программа работает только с одним разрешением экрана, как сделать чтобы она была универсальна - C++
Написал простенький кликер на с++, который в игре нажимает кнопочки от 1 до 9, сделал зависимости нажатия кнопочек от того что происходит...

Как сделать чтобы функция была видна из .cpp файла? - C++
У меня есть 3 файла: main.cpp, 1.h, 1.cpp. Все делаю по книге, но получается так, что определение функции не видно из main().cpp ...

как сделать так чтобы была возможность записывать и фамилию и имя,а то у меня только до пробела читает? - C++
здраствуйте!скажите пож-та как сделать так чтобы была возможность записывать и фамилию и имя,а то у меня только до пробела читает? ...

Как сделать так чтобы при каждом выделении памяти в методе была возможность ее очистить и вернуть результат? - C++
Доброго времени суток! Есть код класса и хотелось бы устранить в нем следующие недочеты: 1) Как сделать так чтобы при каждом выделении...

Как сделать так чтобы переменная в описании одной функции была доступна в описании другой? - C++
Как сделать так чтобы переменная в описании одной функции была доступна в описании другой? Заранее спасибо.

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andrew_Lvov
Эксперт С++
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 760
Записей в блоге: 1
16.09.2010, 03:02     как сделать программно чтобы программа была постоянно на заднем плане #2
Почитай про WM_ACTIVATEAPP
Тебе нужно, по большому счёту, выяснить, какая программа была активна перед клавиатурой и выслать программе мессагу - предполагаю через PostThreadMessage().
Всё ИМХО - так, как бы пробовал делать я.
Somebody
2786 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,190
Завершенные тесты: 1
16.09.2010, 14:30     как сделать программно чтобы программа была постоянно на заднем плане #3
Extended Window Styles
Флажок ему WS_EX_NOACTIVATE - и всё.
kuzmenko5
0 / 0 / 0
Регистрация: 16.09.2010
Сообщений: 33
18.09.2010, 02:28  [ТС]     как сделать программно чтобы программа была постоянно на заднем плане #4
а можно поподробней как это сделать в билдере, а не MV (пишу в с++ ред студио 2010)
клаву использую стандартную TTouchKeyboard
но загвоздка все в том же, код кнопки оно передает в активное окно которым является сама программа

а вот как сделать что бы передавало куда нужно так и не понял((( может примерчиком поможите)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.09.2010, 15:30     как сделать программно чтобы программа была постоянно на заднем плане
Еще ссылки по теме:

Как сделать что бы программа всегда была "поверх" всех окон - C++
какую команду в скрипте нужно ввести, что бы программа была по верх всех окон? Заранее спасибо

рабочая программа. но нужно ее переписать так, чтобы она была наиболее общей. - C++
Задана матрица смежности размерности N*M. С помощью процедуры и матрицы меньшей размерности найти медианы и записать в виде матрицы...

Как сделать чтобы программа не закрывалась. - C++
как сделать чтобы программа не закрывалась написон с dev c++ В смысле чтоб программа не можно было вообще закрыт после последнего...

как сделать чтобы программа не переполняла буфер - C++
как сделать чтобы эта программа не переполняла буфер #include "stdafx.h" #include <iostream> using namespace std; void...

как сделать чтобы программа считала нормально - C++
Поидее должны выполняться операции с двоичными числами, а компилятор воспринимает числа как десятичные, уже неделю немогу ничто придумать,...

Как сделать, чтобы программа быстрее работала? - C++
Задача такая Первая строка содержит количество банкнот N (1 ≤ N ≤ 500 000). В следующих N строках даны достоинства K этих банкнот (0 ≤ K...


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

Или воспользуйтесь поиском по форуму:
Somebody
2786 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,190
Завершенные тесты: 1
18.09.2010, 15:30     как сделать программно чтобы программа была постоянно на заднем плане #5
В чём проблема - как флажок ставить или что?
C++
1
2
SetWindowLong(Form1->Handle, GWL_EXSTYLE,
    GetWindowLong(Form1->Handle, GWL_EXSTYLE) | WS_EX_NOACTIVATE);
После этого окно не должно становиться активным от нажатия кнопок в нём (но остальными способами сделать его активным можно).
Пример есть на Delphi/WinAPI - кнопка Enter сверху на экране:
Delphi
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
{$WARN UNSAFE_CODE OFF}
{$WARN UNSAFE_TYPE OFF}
 
uses
    Windows, Messages;
 
const
    WndClassName = 'MouseEnter';
 
var
    WndClass: WNDCLASSEX;
    hMainWnd: HWND;
    Mess: MSG;
    MaxX, Height: Integer;
 
function WindowProc(hWnd: HWND; Msg, WParam, LParam: LongInt): LongInt; stdcall;
begin
    Result := 0;
    case Msg of
        WM_DESTROY:
            PostQuitMessage(0);
        WM_COMMAND:
        begin
            keybd_event(VK_RETURN, 0, 0, 0);
            keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0);
        end;
        else
            Result := DefWindowProc(hWnd, Msg, WParam, LParam);
        end;
end;
 
begin
    with WndClass do
    begin
        cbSize := SizeOf(WndClass);
        Style := 0;
        lpfnWndProc := @WindowProc;
        hInstance := SysInit.hInstance;
        hIcon := LoadIcon(0, IDI_EXCLAMATION);
        hCursor := LoadCursor(0, IDC_ARROW);
        hbrBackground := GetStockObject(WHITE_BRUSH);
        lpszMenuName := nil;
        lpszClassName := WndClassName;
    end;
    RegisterClassEx(WndClass);
    MaxX := GetSystemMetrics(SM_CXFULLSCREEN);
    Height := GetSystemMetrics(SM_CYCAPTION);
    hMainWnd := CreateWindowEx(
        WS_EX_TOOLWINDOW or WS_EX_TOPMOST or WS_EX_NOACTIVATE or WS_EX_LAYERED,
        WndClassName, 'MouseEnter', WS_VISIBLE or WS_POPUP,
        MaxX * 85 div 100, 0, 50, Height, 0, 0, hInstance, nil);
    CreateWindowEx(0, 'Button', 'Enter', WS_VISIBLE or WS_CHILD,
        -1, -1, 52, Height + 2, hMainWnd, 0, hInstance, nil);
    SetLayeredWindowAttributes(hMainWnd, 0, 128, LWA_ALPHA);
    while GetMessage(Mess, 0, 0, 0) do
        DispatchMessage(Mess);
end.
Yandex
Объявления
18.09.2010, 15:30     как сделать программно чтобы программа была постоянно на заднем плане
Ответ Создать тему
Опции темы

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