Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.11;
Скачать: CL | DM;

Вниз

REPEAT UNTIL <Завершение работы WINDOWS>   Найти похожие ветки 

 
IAMDANIL ©   (2005-11-22 14:13) [0]

Как в консоли написать такой код?


 
Ega23 ©   (2005-11-22 14:19) [1]

WriteLn("REPEAT UNTIL <Завершение работы WINDOWS>");


 
Digitman ©   (2005-11-22 14:20) [2]

создай top-level-окно, организуй цикл

ожидания/выборки/диспетчеризации/обработки оконных сообщений

поступление окну WM_QUERYENDSESSION-сообщения есть факт попытки завершения Windows-сессии


 
IAMDANIL ©   (2005-11-22 14:22) [3]


> создай top-level-окно, организуй цикл
>
> ожидания/выборки/диспетчеризации/обработки оконных сообщений
>
> поступление окну WM_QUERYENDSESSION-сообщения есть факт
> попытки завершения Windows-сессии

А можно пример?..


 
Leonid Troyanovsky ©   (2005-11-22 14:27) [4]


> IAMDANIL ©   (22.11.05 14:22) [3]

> А можно пример?..


http://groups.google.com/group/fido7.ru.delphi.chainik/msg/23e83fdf49a13df2

Только надо помнить, что обработчик выполняется в
контексте другого потока.

--
Regards, LVT.


 
IAMDANIL ©   (2005-11-22 14:35) [5]

Там как-то непонятно...
Как завершить свою прогу?
Дайте пожалуйста пример...


 
clickmaker ©   (2005-11-22 14:40) [6]


> Как завершить свою прогу?

эээ... ну много способов есть
MainForm.Close
Application.Terminate

begin

 // здесь она завершается
end;

выбирай на вкус


 
IAMDANIL ©   (2005-11-22 14:43) [7]


> эээ... ну много способов есть
> MainForm.Close
> Application.Terminate
>
> begin
>
>  // здесь она завершается
> end;
>
> выбирай на вкус


Как её завершить при завершении винд?
Она у меня консольная


 
clickmaker ©   (2005-11-22 14:50) [8]


> Как её завершить при завершении винд?


SetConsoleCtrlHandler()


 
Leonid Troyanovsky ©   (2005-11-22 15:11) [9]


> IAMDANIL ©   (22.11.05 14:35) [5]


> Там как-то непонятно...

Чего непонятно?

> Как завершить свою прогу?

В обработчике CtrlHandler есть события
   CTRL_LOGOFF_EVENT: ;
   CTRL_SHUTDOWN_EVENT: ;

etc.

Там могут быть, например, установлены нужное значение для
выхода из цикла repeat (while).
Хотя, консольному приложению приличней реализовать цикл
ожидания ввода (read*) или события (wait*), а не переменной.

--
Regards, LVT.


 
IAMDANIL ©   (2005-11-23 11:10) [10]


> В обработчике CtrlHandler есть события
>    CTRL_LOGOFF_EVENT: ;
>    CTRL_SHUTDOWN_EVENT: ;
>
> etc.

Надо писать CTRL_SHUTDOWN_EVENT: flag:=true;
repeat until flag
так?


 
Leonid Troyanovsky ©   (2005-11-23 15:24) [11]


> IAMDANIL ©   (23.11.05 11:10) [10]

> Надо писать CTRL_SHUTDOWN_EVENT: flag:=true;
> repeat until flag



Скорее даже в CTRL_LOGOFF_EVENT.
А что внутри цикла?

--
Regards, LVT.


 
IAMDANIL ©   (2005-11-24 14:00) [12]


> А что внутри цикла?

Внутри цикла ничего, просто мне надо дождатться завершения W. и потом, перед завершением выполнить какие-то действия...
если не трудно, дайте .DPR с примером (именно этим)


 
umbra ©   (2005-11-24 14:14) [13]

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


 
Morgoth_   (2005-11-24 14:16) [14]

На работе забывал флешку постоянно с нужной инфой и написал, ненужное сам выкинь ))):

program Quitwnd;

uses
 windows,
 messages;

var   wc, wc2 : TWndClassEx;
wndMain, wnd2 : HWND;
Mesg :    TMsg;
HDCpaint:hdc;
 RECT: Trect ;
ps: PAINTSTRUCT;

function WindowProc(wnd:HWND; Msg : UINT; wParam: WPARAM; lParam: LPARAM):LRESULT;
stdcall;
begin
case msg of
WM_PAINT :
 begin
   hdcpaint := BeginPaint (wnd2,ps) ;
   GetClientRect (wnd2, rect) ;
   CreatePen(bs_solid, 3, PaletteRGB(0,0,0));
   SelectObject(hdcpaint,CreateSolidBrush(0));
   rect.Left:=0;
   rect.Top:=0;
   rect.Right:=380;
   rect.Bottom:=30;
   rectangle(hdcpaint,0,0,380,380);
   SetTextColor(hdcpaint, RGB(255,255,255));
   SetBkColor(hdcpaint, RGB(255,0,0));
   DrawText (hdcpaint, "НЕ ЗАБУДЬ ВЫНУТЬ ФЛЭШКУ!!! ПОНЯЛ?", -1, rect,
   DT_SINGLELINE or DT_CENTER or DT_VCENTER) ;
   EndPaint (wndMain, ps) ;
 end;

WM_ENDSESSION:
 begin
   ShowWindow(wnd2, cmdShow);

 end;

WM_COMMAND:
 begin
 result := 0;
 end;

WM_QUERYENDSESSION  :
begin
 result := 0;
end;

WM_DESTROY :
 begin
  postquitmessage(0);
  Result:=0;
  exit;
 end;
else Result:=DefWindowProc(wnd,msg,wParam,lParam);
end;
end;

var xPos,yPos,nWidth,nHeight : Integer;

begin
 {окно}
with wc do
begin
  cbSize:=sizeof(wc);
  style:=CS_HREDRAW or CS_VREDRAW;
  lpfnWndProc:=@WindowProc;
  cbClsExtra:=0;
  cbWndExtra:=0;
  hInstance:=HInstance;
  hIcon:=0;
  hCursor:=LoadCursor(0,IDC_ARROW);
  hbrBackground:=COLOR_BTNFACE+1;
  lpszMenuName:=0;
  lpszClassName:="quitwnd : Main";
end;

with wc2 do
begin
  cbSize:=sizeof(wc);
  style:=CS_HREDRAW or CS_VREDRAW;
  lpfnWndProc:=@WindowProc;
  cbClsExtra:=0;
  cbWndExtra:=0;
  hInstance:=HInstance;
  hIcon:=0;
  hCursor:=LoadCursor(0,IDC_ARROW);
  hbrBackground:=COLOR_BTNFACE+1;
  lpszMenuName:=0;
  lpszClassName:="quitwnd : mess";
end;
RegisterClassEx(wc);
RegisterClassEx(wc2);

nWidth:=380;
nHeight:=60;
xPos:=getsystemmetrics(SM_CXSCREEN) div 2 - NWidth div 2;
yPos:=getsystemmetrics(SM_CYSCREEN) div 2 - NHeight div 2;

wndMain:=CreateWindowEx(WS_EX_CLIENTEDGE,
  "quitwnd : Main","Внимание!!!",ws_overlapped or ws_sysmenu,xPos,yPos,nWidth,nHeight,0,0,0,nil);

wnd2 := CreateWindowEx(WS_EX_CLIENTEDGE,
  "quitwnd : mess","Внимание!!!",ws_overlapped or ws_sysmenu,xPos,yPos,nWidth,nHeight,0,0,0,nil);
ShowWindow(wndMain,sw_Hide);

while GetMessage(Mesg,0,0,0) do
begin
 TranslateMessage(Mesg);
 DispatchMessage(Mesg);
end;
end.


 
IAMDANIL ©   (2005-11-24 14:20) [15]


> так ее ж винда завершит, когда выключаться будет. зачем
> мучиться?

Dj gперых мне надо SAVE DATA а во вторых у меня появляется "ПРОГА не огтвечает" нно две минуты назад всё отладил и работает!
*** Всем спасибо ***



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

Текущий архив: 2005.12.11;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.045 c
2-1132558051
B@BY
2005-11-21 10:27
2005.12.11
Базы данных - MS Access


8-1121037044
Yura32
2005-07-11 03:10
2005.12.11
OpenGL


14-1132637872
ZeroDivide
2005-11-22 08:37
2005.12.11
Комбо-привод Nec 3520A перестал видеть CD диски :(


3-1130269286
Павел
2005-10-25 23:41
2005.12.11
shadow


4-1128015832
Wolfram
2005-09-29 21:43
2005.12.11
Как узнать размер файла?