Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #31  
Старый 17.07.2011, 00:51
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Вы пробовали хоть РАЗ воспользоваться справкой или поиском? Мне не сложно ответить, но так вы никогда не научитесь ничего самостоятельно делать. Пока же ваше поведение напоминает сибаритство.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #32  
Старый 17.07.2011, 01:02
unity unity вне форума
Прохожий
 
Регистрация: 14.07.2011
Сообщения: 43
Репутация: -2279
По умолчанию

Цитата:
Сообщение от angvelem
Вы пробовали хоть РАЗ воспользоваться справкой или поиском? Мне не сложно ответить, но так вы никогда не научитесь ничего самостоятельно делать. Пока же ваше поведение напоминает сибаритство.

да канечно вон скока вкладок в опере
_http://s48.radikal.ru/i122/1107/f1/7f3c6487af2a.jpg
Ответить с цитированием
  #33  
Старый 17.07.2011, 01:11
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от unity
а только по классу окна нельзя опредилить его hwnd
или по Id процеса?

также хотелось бы узнать как сделать окно полупразрачным?

и самй главный вопрос как сделать окно поверх всех окон
даже поверх игровых приложений?
(такое можно сделать, даже раньше у меня програмка такая
было выбираеш окно и оно становиться поверх любой игры)
1. Можно top
2. AlphaBlend
3. HWND_TOPMOST
Цитата:
вон скока вкладок в опере
Направления для поиска даны
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #34  
Старый 17.07.2011, 01:14
unity unity вне форума
Прохожий
 
Регистрация: 14.07.2011
Сообщения: 43
Репутация: -2279
По умолчанию

Цитата:
Сообщение от angvelem
1. Можно top
2. AlphaBlend
3. HWND_TOPMOST

Направления для поиска даны

всё нашёл как делать и вроде работает

вот так сделал (точнее скапирывал=))

Код:
with form1 do
SetWindowPos(Handle, HWND_TOPMOST, Left, Top, Width, Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
Ответить с цитированием
  #35  
Старый 17.07.2011, 01:23
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Всё правильно, в данном случае выполняются условия:
1. Сделать поверх всех (активных на данный момент) окон.
2. Не менять активность программы (если активна оставить активной, если нет соответственно нет)
3. Не перемещать
4. Не менять размер.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #36  
Старый 17.07.2011, 02:06
unity unity вне форума
Прохожий
 
Регистрация: 14.07.2011
Сообщения: 43
Репутация: -2279
По умолчанию

Цитата:
Сообщение от angvelem
Всё правильно, в данном случае выполняются условия:
1. Сделать поверх всех (активных на данный момент) окон.
2. Не менять активность программы (если активна оставить активной, если нет соответственно нет)
3. Не перемещать
4. Не менять размер.
всётаки неполучается так
оно так работает пока игра в оконом режими а когда её делаеш на весь экран то это непомагает
вроде это тяжело сделать чтоб поверх игры было
Ответить с цитированием
  #37  
Старый 17.07.2011, 02:20
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Если имеется несколько окон с таким флагом (HWND_TOPMOST), то верхним будет то, что активировано последним. Игра скорее всего использует DirectX, а там не всегда этот фокус прокатывает.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #38  
Старый 17.07.2011, 02:38
unity unity вне форума
Прохожий
 
Регистрация: 14.07.2011
Сообщения: 43
Репутация: -2279
По умолчанию

вот что я нашёл
было написано что эти стили которые выводяться поверх игр:

Window Styles:
WS_POPUP
WS_VISIBLE
WS_CLIPSIBLINGS

Extended Styles:
WS_EX_LEFT
WS_EX_LTRREADING
WS_EX_RIGHTSCROLLBAR
WS_EX_TOPMOST
WS_EX_TOOLWINDOW
WS_EX_LAYERED

куда мне название стиля вводить?

делал так но поверх игры нечего невыводиться:

Код:
procedure TForm1.Btn1Click(Sender: TObject);

var

Style : Longint;

begin

{старый стиль окна}

Style:=GetWindowLong(Btn1.Handle,WS_VISIBLE);

{меняем стиль окна}

Style:=Style or WS_OVERLAPPEDWINDOW;

SetWindowLong(Btn1.Handle,WS_VISIBLE, Style);

{обновление окна (Invalidate не сработает)}

SetWindowPos(Btn1.Handle, HWND_TOP, 0, 0, 0, 0,

SWP_NOMOVE or SWP_NOSIZE or SWP_NOZORDER or SWP_DRAWFRAME

or SWP_NOACTIVATE);

end;

Последний раз редактировалось unity, 17.07.2011 в 02:54.
Ответить с цитированием
  #39  
Старый 17.07.2011, 02:56
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от unity
вот что я нашёл
было написано что эти стили которые выводяться поверх игр:

Window Styles:
WS_POPUP - применяется для всплывающих окон, чаще всего для меню
WS_VISIBLE - стиль окна видимый
WS_CLIPSIBLINGS - используется для дочерних окон (т.е. для контролов)

Extended Styles:
WS_EX_LEFT - выровнять влево
WS_EX_LTRREADING - этот стиль используется по-умолчанию
WS_EX_RIGHTSCROLLBAR - скрол бар располагается справа
WS_EX_TOPMOST - окно верхнего уровня
WS_EX_TOOLWINDOW - окно для плавающих тулбаров
WS_EX_LAYERED - использовать прозрачность

куда мне название стиля вводить?
Переводчик тяжело самому было использовать?
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #40  
Старый 17.07.2011, 03:23
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от unity
делал так но поверх игры нечего невыводиться:
С каких пор кнопки стали самостоятельными окнами?
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #41  
Старый 17.07.2011, 20:36
unity unity вне форума
Прохожий
 
Регистрация: 14.07.2011
Сообщения: 43
Репутация: -2279
По умолчанию

Код:
procedure TForm1.tmr1Timer(Sender: TObject);
begin
if getasynckeystate($71)<>0 then  
t:= PChar(edt1.Text);       // считывает назавание окна из edt1
 id:=FindWindow(nil,(t));   // узнаёт hwnd окна
 PostMessage(id,WM_KEYDOWN,vk_F1, 0); //посылает нажатие кнопки f1 окну
     PostMessage(id,WM_KEYUP,vk_F1, 0); // посылает отжатие кнопки f1 окну
end;

как сделать чтобесли я нажал 1 раз F2 то и в окно 1раз было послоно нажатиеи отжатие F1
(щас у меня после тогокак нажал 1раз F2 в окно посылаеться множество нажатий)

Последний раз редактировалось unity, 17.07.2011 в 20:55.
Ответить с цитированием
  #42  
Старый 17.07.2011, 21:27
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

PostMessage - послать сообщение с возможной потерей в дороге
SendMessage - послать и забыть, программа прерывается до ответа функции

Попробуй вторую функцию.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #43  
Старый 17.07.2011, 21:33
unity unity вне форума
Прохожий
 
Регистрация: 14.07.2011
Сообщения: 43
Репутация: -2279
По умолчанию

Цитата:
Сообщение от angvelem
PostMessage - послать сообщение с возможной потерей в дороге
SendMessage - послать и забыть, программа прерывается до ответа функции

Попробуй вторую функцию.

так вообще неработает
я вотнашёл тока я незнаю как использавать (тоесть я знаю что нада в конце добавить
код который делает так что клавиша уже ненажата):

function GetAsyncKeyState(Key: Integer): Integer;

Опpеделяет состояние виpтуальной клавиши.

Паpаметpы:
Key: Код виpтуальной клавиши.

Возвpащаемое значение:
Если установлен стаpший байт, клавиша Key находится в нажатом положении, а если младший - то клавиша Key была нажата после пpедыдущего вызова функции.


как задавать младший байт?

Последний раз редактировалось unity, 17.07.2011 в 21:41.
Ответить с цитированием
  #44  
Старый 17.07.2011, 23:57
bussianko bussianko вне форума
Прохожий
 
Регистрация: 30.03.2011
Адрес: Bataysk
Сообщения: 7
Версия Delphi: Code Gear 2009
Репутация: 10
По умолчанию

Цитата:
Сообщение от unity
получилось, а что значат эти нули?

как интервал задавать вручную с окна программы?

как вставлять переменные?

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    tmr1: TTimer;
    btn1: TBitBtn;
    procedure tmr1Timer(Sender: TObject);
    procedure btn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  d:Integer;

implementation

{$R *.dfm}

procedure TForm1.tmr1Timer(Sender: TObject);
begin
keybd_event(VK_F1, 0, 0, 0); // нажатие
 keybd_event(VK_F1, 0, KEYEVENTF_KEYUP, 0); // отпускание
end;


procedure TForm1.btn1Click(Sender: TObject);
begin
  Tmr1.Interval:= d; // интервал
 Tmr1.Enabled:= Not(Tmr1.Enabled); // вкл / выкл
end;

end.

как сделать чтоб в програми можно было изменять значение D (интервала)


из палитры компонентов на вкладке стандарт выбери компонент TEdit и кинь куда нить на форму.

Вот немного модифицированный вариант нажатия на кнопке:

procedure TForm1.btn1Click(Sender: TObject);
begin
if d <> StrToInt(Edit1.Text) then
begin
d:= StrToInt(Edit1.Text)
Tmr1.Interval:= d; // интервал
Tmr1.Enabled:= Not(Tmr1.Enabled); // вкл / выкл
end
else
begin
Tmr1.Interval:= d; // интервал
Tmr1.Enabled:= Not(Tmr1.Enabled); // вкл / выкл
end;

end;
Ответить с цитированием
  #45  
Старый 18.07.2011, 00:20
bussianko bussianko вне форума
Прохожий
 
Регистрация: 30.03.2011
Адрес: Bataysk
Сообщения: 7
Версия Delphi: Code Gear 2009
Репутация: 10
По умолчанию

из палитры компонентов на вкладке стандарт выбери компонент TEdit и кинь куда нить на форму.

Вот немного модифицированный вариант нажатия на кнопке:

procedure TForm1.btn1Click(Sender: TObject);
begin
if d <> StrToInt(Edit1.Text) then
begin
d:= StrToInt(Edit1.Text)
Tmr1.Interval:= d; // интервал
Tmr1.Enabled:= Not(Tmr1.Enabled); // вкл / выкл
end
else
begin
Tmr1.Interval:= d; // интервал
Tmr1.Enabled:= Not(Tmr1.Enabled); // вкл / выкл
end;

end;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:41.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter