Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.08.26;
Скачать: [xml.tar.bz2];

Вниз

Ипользование потоков   Найти похожие ветки 

 
Igit   (2002-06-20 15:36) [0]

Здравствуйте. Мне нужна помощь. У меня есть две программы. Мне надо объеденить их в одну. Они обе
такие (упрощённый вариант):
1... uses Windows;
var
mouse_pos: TPoint;
x:integer;
begin
repeat
getcursorpos(mouse_pos);
x:=mouse_pos.x;
if x=0 then setcursorpos(798, y);
sleep(115);
until false;
end.

2...
uses Windows;
var
mouse_pos: TPoint;
x:integer;
begin
repeat
getcursorpos(mouse_pos);
x:=mouse_pos.x;
if y=0 then setcursorpos(x ,800);
sleep(30000);
until false;
end.
Это конечно не сами программы, а для примера. Так вот, как мне их соеденить в одну не используя при этом модуль
Forms, а по-возмажности на чистом Win32 API.
Извините за такой глупый и длинный вопрос :))


 
Kaban   (2002-06-20 15:40) [1]

... uses Windows;
var
mouse_pos: TPoint;
x:integer;
SleepTime:Integer;
begin
repeat
getcursorpos(mouse_pos);
x:=mouse_pos.x;
if x=0 then setcursorpos(798, y);
sleep(115);

SleepTime:=SleepTime+115
if SleepTime>=30000 then
begin
if y=0 then setcursorpos(x ,800);
SleepTime:=0;
end;



until false;
end.

Но вообщето проще использовать два таймера


 
Igit   (2002-06-20 15:46) [2]

А как их использовать в этом случае?


 
Kaban   (2002-06-20 15:56) [3]

Вот таймер, написанный на API. Потом ловите сообщение WM_TIMER

unit WinTimer;
interface
uses Windows, Classes;

type
TWinTimer=class
Parent:integer;
constructor Create(hParent:integer);
destructor Destroy; override;
private
TimerID:integer;
FInterval:integer;
FEnabled:boolean;
procedure SetEnabled(b:boolean);
procedure SetInterval(i:integer);
published
property Enabled:boolean read FEnabled write SetEnabled;
property Interval:integer read FInterval write SetInterval;
End;

var
iTimers : Integer;

implementation

constructor TWinTimer.Create(hParent:integer);
begin
FInterval:=1000;
Parent:=hParent;
FEnabled:=false;
Inc(iTimers);
TimerID:=iTimers
end;

procedure TWinTimer.SetEnabled(b:boolean);
begin
If FEnabled=b Then Exit;
FEnabled:=b;
If b Then
SetTimer(Parent,TimerID,FInterval,nil)
Else
KillTimer(Parent,TimerID)
end;

procedure TWinTimer.SetInterval(i:integer);
begin
If FInterval=i Then Exit;
FInterval:=i;
If NOT FEnabled Then Exit;
KillTimer(Parent,TimerID);
SetTimer(Parent,TimerID,i,nil)
end;

destructor TWinTimer.Destroy;
begin
KillTimer(Parent,TimerID)
end;


end.




 
Igit   (2002-06-20 17:04) [4]

(xedndez себя неловка...) Блин, а как?


 
Igit   (2002-06-20 17:07) [5]

Punto Switcher подвёл xedndez=чувствую


 
Kaban   (2002-06-21 14:34) [6]

Что а как? Как ловить сообщение? Вы на API пишите или где?


 
Igit   (2002-06-21 19:02) [7]

Ну можно хотя бы пример использования этого модуля, я ведь только учусь, а не прошу чтоб все за меня делали?


 
Cobalt   (2002-06-22 10:36) [8]

Для примера:

function TApplication.ProcessMessage(var Msg: TMsg): Boolean;
var
Handled: Boolean;
begin
Result := False;
if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then
begin
Result := True;
if Msg.Message <> WM_QUIT then
begin
{ Handled := False;
if Assigned(FOnMessage) then FOnMessage(Msg, Handled);
if not IsHintMsg(Msg) and not Handled and not IsMDIMsg(Msg) and
not IsKeyMsg(Msg) and not IsDlgMsg(Msg) then - это вам не понадобится}
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end
else
FTerminate := True;//типа, кто-то пытается закрыть вашу прогу
end;
end;

Как вы, быть может, знаете, суть работы Win-приложения - это реакция на оконные сообщения. У приложения есть очередь сообщений, и оно постоянно проверяет, есть ли сообщения, а если есть, то реагирует на них (вызывает "обработчики событий")
З.Ы. Смотрите в "Win32 Programmer"s Reference" (если вы, конечно, при установке Дельфей указывали, что надо ставить Хелп SDK), а еще лучше - купить MSDN на диске (у меня все никак руки не доходят, а то в хелпе некоторых "редких" ф-ий нет)



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.08.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.006 c
14-85201
Сергей Чурсин
2002-07-30 13:46
2002.08.26
Ребята, что есть


3-84927
КСА
2002-08-06 06:41
2002.08.26
Два одинаковых бланка на одном листе в QReport


14-85183
rvs
2002-07-30 08:44
2002.08.26
Kylix


14-85230
VL
2002-07-29 17:38
2002.08.26
Господа. Не подскажете где взять компоненты, строящие графики


1-85015
A7exander
2002-08-16 10:49
2002.08.26
Как это сделать программно (dock)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский