![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#31
|
||||
|
||||
|
Вы пробовали хоть РАЗ воспользоваться справкой или поиском? Мне не сложно ответить, но так вы никогда не научитесь ничего самостоятельно делать. Пока же ваше поведение напоминает сибаритство.
|
|
#32
|
|||
|
|||
|
Цитата:
да канечно вон скока вкладок в опере _http://s48.radikal.ru/i122/1107/f1/7f3c6487af2a.jpg |
|
#33
|
||||
|
||||
|
Цитата:
2. AlphaBlend 3. HWND_TOPMOST Цитата:
|
|
#34
|
|||
|
|||
|
Цитата:
всё нашёл как делать и вроде работает вот так сделал (точнее скапирывал=)) Код:
with form1 do SetWindowPos(Handle, HWND_TOPMOST, Left, Top, Width, Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE); |
|
#35
|
||||
|
||||
|
Всё правильно, в данном случае выполняются условия:
1. Сделать поверх всех (активных на данный момент) окон. 2. Не менять активность программы (если активна оставить активной, если нет соответственно нет) 3. Не перемещать 4. Не менять размер. |
|
#36
|
|||
|
|||
|
Цитата:
оно так работает пока игра в оконом режими а когда её делаеш на весь экран то это непомагает вроде это тяжело сделать чтоб поверх игры было |
|
#37
|
||||
|
||||
|
Если имеется несколько окон с таким флагом (HWND_TOPMOST), то верхним будет то, что активировано последним. Игра скорее всего использует DirectX, а там не всегда этот фокус прокатывает.
|
|
#38
|
|||
|
|||
|
вот что я нашёл
было написано что эти стили которые выводяться поверх игр: 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
|
||||
|
||||
|
Цитата:
|
|
#40
|
||||
|
||||
|
Цитата:
|
|
#41
|
|||
|
|||
|
Код:
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
|
||||
|
||||
|
PostMessage - послать сообщение с возможной потерей в дороге
SendMessage - послать и забыть, программа прерывается до ответа функции Попробуй вторую функцию. |
|
#43
|
|||
|
|||
|
Цитата:
так вообще неработает я вотнашёл тока я незнаю как использавать (тоесть я знаю что нада в конце добавить код который делает так что клавиша уже ненажата): function GetAsyncKeyState(Key: Integer): Integer; Опpеделяет состояние виpтуальной клавиши. Паpаметpы: Key: Код виpтуальной клавиши. Возвpащаемое значение: Если установлен стаpший байт, клавиша Key находится в нажатом положении, а если младший - то клавиша Key была нажата после пpедыдущего вызова функции. как задавать младший байт? Последний раз редактировалось unity, 17.07.2011 в 21:41. |
|
#44
|
|||
|
|||
|
Цитата:
из палитры компонентов на вкладке стандарт выбери компонент 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
|
|||
|
|||
|
из палитры компонентов на вкладке стандарт выбери компонент 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; |